ベクトルがあり、x = (1, 2, 3)
それをとして表示(印刷)したいと思いますAnswer: (1, 2, 3)
。
私は次のような多くのアプローチを試しました。
disp('Answer: ')
strtrim(sprintf('%f ', x))
しかし、それでも必要な形式で印刷することはできません。
誰かが私に解決策を教えてもらえますか?
編集:
値と(の長さ)のx
両方が事前にわかっていません。
私はよりクリーンな以下を好みます:
x = [1, 2, 3];
g=sprintf('%d ', x);
fprintf('Answer: %s\n', g)
出力する
Answer: 1 2 3
使用できます
x = [1, 2, 3]
disp(sprintf('Answer: (%d, %d, %d)', x))
これにより、
Answer: (1, 2, 3)
任意のサイズのベクトルの場合、使用できます
disp(strrep(['Answer: (' sprintf(' %d,', x) ')'], ',)', ')'))
別の方法は
disp(strrep(['Answer: (' num2str(x, ' %d,') ')'], ',)', ')'))
Matlab のstrjoin
機能を利用する別のアプローチを次に示します。値間の区切り記号をstrjoin
簡単にカスタマイズできます。
x = [1, 2, 3];
fprintf('Answer: (%s)\n', strjoin(cellstr(num2str(x(:))),', '));
これにより、次の結果が得られます。Answer: (1, 2, 3)
この方法を試すことができます:
fprintf('%s: (%i,%i,%i)\r\n','Answer',1,2,3)
これが役立つことを願っています。
x のすべての要素をベクトル x としてこの形式で出力する、より一般化されたソリューションを次に示します。
x=randperm(3);
s = repmat('%d,',1,length(x));
s(end)=[]; %Remove trailing comma
disp(sprintf(['Answer: (' s ')'], x))
複素数を持つ可能性のあるベクトルを出力するには -
fprintf('Answer: %s\n', sprintf('%d ', num2str(x)));