1
其目的是無損地保存和交換來自Matlab的數據。例如,給定一個雙數組:如何從文件中有效讀取十六進制雙精度數據?
>> 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
,我們可以將數據作爲十六進制格式保存到一個文件中
fp = fopen('test.dat','w');
fprintf(fp, '%bX ',a);
,並得到
3FEA1237688ABA7B 3FECFC3F5F570C7D 3FC0411A9F807B7C 3FED3A6000E256BF 3FE43C49753B9024 3FB8F8687182D4C0 3FD1D2EA3181CE68 3FE1800DABF8B5E0 3FEEA3E55FFC605B 3FEEE05DEBDEEB6B 3FC42CAA5B9D0950 3FEF0F1897ECA804
反過來,我們需要閱讀這些數據正確地轉化爲Matlab。但是,fscanf()中沒有相應的「%bX」格式。我已搜查,並能做到一個接一個:
for k = 1 : xx
tmp = fscanf(fp,'%s ',[1 1]);
b(k) = hex2num(tmp);
end
因爲它是沒有效率特別適用於大數據,如何在這些數據中有效地讀取到Matlab?
謝謝。似乎函數strsplit()只存在於新版本的Matlab中。 – lxg
@lxg更新了舊版本的替代版本。 – Suever
謝謝!現在很快。 – lxg