ベクトル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)
以下は、xのすべての要素をベクトルxをこの形式で出力する、より一般化されたソリューションです。
x=randperm(3);
s = repmat('%d,',1,length(x));
s(end)=[]; %Remove trailing comma
disp(sprintf(['Answer: (' s ')'], x))
あなたはこの方法を試すかもしれません:
fprintf('%s: (%i,%i,%i)\r\n','Answer',1,2,3)
これがお役に立てば幸いです。
おそらく複素数を持つベクトルを印刷するには-
fprintf('Answer: %s\n', sprintf('%d ', num2str(x)));