我正在使用Matlab R2015a,並且希望將雙精度矩陣保存到txt文件中。一些指數有NaN
值。所有其他值,儘管double
作爲格式,基本上是整數。沒有小數值。Matlab,如何保存txt文件,使用保存功能,將雙精度保存爲整數,但保留NaN
我寧願如果保存的值在txt文件中顯示爲整數,當然除了NaN
值,必須保持NaN
。我的數據
實例,以及應如何出現在保存的txt文件:
NaN 81 272
NaN 787 314
778 174 606
427 720 677
我可以在循環中使用fprintf
做到這一點,或用單dlmwrite
,但是這兩種方法都非常對於大型矩陣,緩慢。使用save
功能是快得多,但我不知道如何實現所需的輸出(其中雙打被寫爲整數,並保留NaN
的)此外,由save
產生的文件大小相當大,因爲的格式。使用保存功能
輸出示例:
NaN 8.1000000e+01 2.7200000e+02
NaN 7.8700000e+02 3.1400000e+02
7.7800000e+02 1.7400000e+02 6.0600000e+02
4.2700000e+02 7.2000000e+02 6.7700000e+02
下面是一個簡單的代碼示例,同時使用dlmwrite
(所希望的輸出,但慢),和save
(不期望的輸出,但快)。
% generate some data
m = round(rand(1000,3)*1000);
m(1:10,1) = NaN;
% dlmwrite method. Using dlmwrite to create header line and append the data.
% Output is as desired.
dlmwrite('file_by_dlmwrite.txt', 'column1 column2 column3', 'delimiter', '');
dlmwrite('file_by_dlmwrite.txt', m, 'delimiter', ' ', '-append');
% save method. Using dlmwrite only for the header line, and save function to append the data.
% Output is not as desired.
dlmwrite('file_by_save.txt', 'column1 column2 column3', 'delimiter', '');
save('file_by_save.txt', 'm', '-ascii', '-append');
任何意見,將不勝感激。
我假設你有一個很好的理由不使用保存寫入二進制文件? – crowdedComputeeer