Добавление заголовка к матрице в Matlab - PullRequest
2 голосов
/ 16 августа 2011

Надеюсь, у вас, ребята, хороший вторник.Я понимаю, что вы не можете добавить заголовок строки в числовую матрицу в MATLAB.Я пытаюсь добавить заголовки в имеющуюся у меня матрицу и вывести ее в текстовый файл с разделителями табуляции.Из моего исследования я знаю, что матрица должна быть преобразована в ячейку, но у меня возникают проблемы с сохранением ячейки с помощью dlmwrite.

Вот матрица, которая у меня сейчас есть:

  0         0         0
0.0454    0.0105    0.0105
0.0907    0.0066    0.0068
0.1814    0.0038    0.0049
0.3629    0.0034    0.0040
0.7258    0.0029    0.0023
1.4515    0.0002    0.0007
2.9030    0.0003    0.0005

Это то, что я хочу:

 tau     TOL Adev  FOL Adev
0.0454    0.0105    0.0105
0.0907    0.0066    0.0068
0.1814    0.0038    0.0049
0.3629    0.0034    0.0040
0.7258    0.0029    0.0023
1.4515    0.0002    0.0007
2.9030    0.0003    0.0005

Матрица (3, 7 с нулями в первой строке) называется saveData.

Я попытался присвоить header = ['tau',«ТОЛ Адев», «ФОЛ Адев»];и output = {header; saveData};но я не могу понять, как использовать dlmwrite ('filename', output, '\ t').

Большое спасибо за помощь!Для -Alex-

Ответы [ 2 ]

3 голосов
/ 16 августа 2011

Если вы чувствуете себя ленивым и ваша матрица не слишком велика, вы можете превратить ваши данные в набор данных, а затем экспортировать их. Если ваша матрица велика, я рекомендую вам посмотреть ссылку, которую дал Амро. Набор данных примечаний - это функция из панели инструментов статистики.

ds = dataset({rand(10,3) 'a' 'b' 'c'})
export(ds, 'file', 'foo.txt', 'delim', '\t');
1 голос
/ 16 августа 2011

Прежде всего, этот код ( header = ['tau', 'TOL Adev', 'FOL Adev']; ) объединит ваши строки, поэтому используйте ячейки.

@ Amro-код хорош, но если вы хотите сделать вывод красивым (как в примере), вам нужно сделать это самостоятельно, например, эту функцию:

function writeWithHeader(fname,header,data)
% Write data with headers
%
% fname: filename
% header: cell of row titles
% data: matrix of data

f = fopen(fname,'w');

%Write the header:
fprintf(f,'%-10s\t',header{1:end-1});
fprintf(f,'%-10s\n',header{end});

%Write the data:
for m = 1:size(data,1)
    fprintf(f,'%-10.4f\t',data(m,1:end-1));
    fprintf(f,'%-10.4f\n',data(m,end));
end

fclose(f);

Вам просто нужно поиграть со строкой формата fprintf ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...