Как отформатировать вывод с использованием MATLAB's num2str - PullRequest
3 голосов
/ 17 июня 2010

Я пытаюсь вывести массив чисел в виде строки в MATLAB.Я знаю, что это легко сделать, используя num2str, но я хотел, чтобы запятые сопровождались пробелом для разделения цифр, а не табуляции.Элементы массива будут иметь разрешение не более десятой доли, но большинство из них будут целыми числами.Есть ли способ отформатировать вывод так, чтобы ненужные конечные нули были исключены?Вот что мне удалось собрать:

data=[2,3,5.5,4];
datastring=num2str(data,'%.1f, ');
datastring=['[',datastring(1:end-1),']']

, который дает вывод:

[2.0, 3.0, 5.5, 4.0]

вместо:

[2, 3, 5.5, 4]

Есть предложения?

РЕДАКТИРОВАТЬ: Я только что понял, что я могу использовать strrep, чтобы исправить это, позвонив по номеру

datastring=strrep(datastring,'.0','')

, но это кажется еще более грязным, чемЯ делал.

Ответы [ 2 ]

9 голосов
/ 17 июня 2010

Вместо:

datastring=num2str(data,'%.1f, ');

Попробуйте:

datastring=num2str(data,'%g, ');

Выход: [2, 3, 5.5, 4]

Или:

datastring=sprintf('%g,',data);

Выход: [2,3,5.5,4]

3 голосов
/ 17 июня 2010

Другая опция, использующая MAT2STR :

» datastring = strrep(mat2str(data,2),' ',',')
datastring =
[2,3,5.5,4]

, где 2 - количество цифр точности.

...