web-dev-qa-db-ja.com

Matlabでベクトルを表示(印刷)する方法は?

ベクトルx = (1, 2, 3)があり、Answer: (1, 2, 3)として表示(印刷)したい。

私は以下を含む多くのアプローチを試みました:

disp('Answer: ')
strtrim(sprintf('%f ', x))

しかし、必要な形式で印刷することはできません。

誰かが解決策を教えてくれますか?

編集:値と(長さ)xの両方が事前に不明です。

21

私は次のほうが好きです。

x = [1, 2, 3];
g=sprintf('%d ', x);
fprintf('Answer: %s\n', g)

どの出力

Answer: 1 2 3
31
Uri Cohen

使用できます

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,') ')'], ',)', ')'))
8
H.Muster

Matlabのstrjoin関数を利用する別のアプローチがあります。 strjoinを使用すると、値間の区切り文字を簡単にカスタマイズできます。

_x = [1, 2, 3];
fprintf('Answer: (%s)\n', strjoin(cellstr(num2str(x(:))),', '));
_

結果は次のとおりです。Answer: (1, 2, 3)

5
Andrew H

以下は、xのすべての要素をベクトルxをこの形式で出力する、より一般化されたソリューションです。

x=randperm(3);
s = repmat('%d,',1,length(x));
s(end)=[]; %Remove trailing comma

disp(sprintf(['Answer: (' s ')'], x))
1

あなたはこの方法を試すかもしれません:

fprintf('%s: (%i,%i,%i)\r\n','Answer',1,2,3)

これがお役に立てば幸いです。

1
fpe

おそらく複素数を持つベクトルを印刷するには-

fprintf('Answer: %s\n', sprintf('%d ', num2str(x)));
0
raghavsood33