2 Stimmen

Hinzufügen einer Kopfzeile zu einer Matrix in Matlab

Ich hoffe, ihr habt bis jetzt einen schönen Dienstag. Mir ist klar, dass man in MATLAB einer numerischen Matrix keinen String-Header hinzufügen kann. Ich versuche, einer Matrix, die ich derzeit habe, Kopfzeilen hinzuzufügen und sie in eine tabulatorgetrennte Textdatei auszugeben. Aus meinen Recherchen weiß ich, dass die Matrix in eine Zelle umgewandelt werden muss, aber ich habe Probleme, die Zelle mit dlmwrite zu speichern.

Hier ist die Matrix, die ich derzeit habe:

  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

Das ist es, was ich will:

 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

Die Matrix (3, 7 mit Nullen in der ersten Zeile) wird saveData genannt.

Ich habe versucht, header = ['tau', 'TOL Adev', 'FOL Adev']; und output = {header;saveData}; zuzuweisen, aber ich kann nicht herausfinden, wie man dlmwrite('filename', output, ' \t ').

Vielen Dank für die Hilfe! -Alex

3voto

Rich C Punkte 3136

Wenn Sie faul sind und Ihre Matrix nicht zu groß ist, können Sie Ihre Daten in einen Datensatz umwandeln und diesen dann exportieren. Wenn Ihre Matrix sehr groß ist, empfehle ich Ihnen, sich den von Amro angegebenen Link anzusehen. Beachten Sie, dass Dataset eine Funktion in der Statistics Toolbox ist.

ds = dataset({rand(10,3) 'a' 'b' 'c'})
export(ds, 'file', 'foo.txt', 'delim', '\t');

1voto

tr3w Punkte 343

Zunächst einmal ist dieser Code ( header = ['tau', 'TOL Adev', 'FOL Adev']; ) verkettet Ihre Zeichenketten, also verwenden Sie Zellen.

Der @Amro-Code ist gut, aber wenn Sie die Ausgabe hübsch machen wollen (wie im Beispiel), müssen Sie das selbst tun, wie diese Funktion:

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);

Sie müssen nur mit dem fprintf-Formatstring spielen...

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X