Как отформатировать вывод с помощью MATLAB num2str

Я пытаюсь вывести массив чисел в виде строки в 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]

Какие-либо предложения?

EDIT: я только что понял, что могу использовать strrep, чтобы исправить это, позвонив

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

но это кажется еще более неуклюжим, чем то, что я делал.


person Doresoom    schedule 16.06.2010    source источник


Ответы (2)


Вместо:

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

Пытаться:

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

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

Or:

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

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

person Jacob    schedule 16.06.2010

Другой вариант использования MAT2STR:

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

где 2 является числом цифр точности.

person Amro    schedule 16.06.2010
comment
Обратите внимание, что количество цифр точности также сокращает десятичные дроби. Например, mat2str(123,2) возвращает 1.2e+002. - person JaBe; 03.03.2015