Der Zweck besteht darin, Daten aus Matlab verlustfrei zu speichern und auszutauschen. Um zum Beispiel eine Doppel Array gegeben:Wie kann man hexadezimale doppelte Daten aus einer Datei effizient einlesen?
>> a
a(:,:,1) =
0.8147 0.1270 0.6324
0.9058 0.9134 0.0975
a(:,:,2) =
0.2785 0.9575 0.1576
0.5469 0.9649 0.9706
wir die Daten als Hexadezimal-Format in eine Datei
fp = fopen('test.dat','w');
fprintf(fp, '%bX ',a);
und bekommen
3FEA1237688ABA7B 3FECFC3F5F570C7D 3FC0411A9F807B7C 3FED3A6000E256BF 3FE43C49753B9024 3FB8F8687182D4C0 3FD1D2EA3181CE68 3FE1800DABF8B5E0 3FEEA3E55FFC605B 3FEEE05DEBDEEB6B 3FC42CAA5B9D0950 3FEF0F1897ECA804
wiederum speichern können, müssen wir diese lesen Daten in Matlab korrekt. In fscanf() gibt es jedoch kein entsprechendes "% bX" -Format. Ich habe gesucht und konnte es one-by-one:
for k = 1 : xx
tmp = fscanf(fp,'%s ',[1 1]);
b(k) = hex2num(tmp);
end
Da es nicht effizient ist vor allem für große Daten, wie in diesen Daten in Matlab effizient zu lesen?
danke zu analysieren. Es scheint, dass die Funktion strsplit() nur in der neuen Version Matlab existiert. – lxg
@lxg Aktualisiert mit einer Alternative für ältere Versionen. – Suever
danke! es ist jetzt sehr schnell. – lxg