matlab ASCII 格式導入
可以用fprintf函數,來代替save函數啊
比如現在我有一個變量a=[0.1223 345.4544]
如果我想保存它的話,可以用下面的程序:
fid = fopen('a.txt','wt');
fprintf(fid,'%6.4f %8.4f\n',a);
fclose(fid);
然后打開a.txt,你會發現其中是0.1223 345.4544
如果用save a.txt -ASCII a
保存的話,a.txt中的內容是 1.2234500e-001 3.4545436e+002
大氣海洋ASCIIi數據中,通常都含有字符和數字,例如data.txt文件內有如下內容:
staion222
12.0 23 45 45
14.5 89 56 30
這時的數據就不是規則的數字矩陣,用fortran來讀寫當然不在話下,但是大家最熟悉的matlab的load命令就不可用了。如果這時又懶得用fortran來處理,怎么辦呢?
下面是如何用matlab讀取以上ascii文件的例子,同時給出了寫ascii文件的代碼,由此之后舉一反三,觸類旁通,讀寫類似的ascii文件我想應該就沒問題了。
>>
clear;clc;
%--打開文件
fid = fopen('data.txt');
%-讀ascii
%--讀取第1個數據(字符型),取6個字符
head = fscanf(fid,'%6s',1);
%--再讀取一個實數,因為用'%d',沒指定長度,直到遇見空格
h = fscanf(fid,'%d',1);
%--讀取8個數據,寫成2*4矩陣(浮點數型),讀取的數按列寫入,所以轉置,得原來順序
data = (fscanf(fid,'%g',[4 2]))';
%--關閉通道
fclose(fid)
%--寫ascii
fid=fopen('write.dat','w');
fprintf(fid,'%4s%d', head,h);
%--換行
fprintf(fid,'\n');
for i = 1:2
fprintf(fid,'%7.2f', data(i,:)) ;
fprintf(fid,'\n');
end
fclose(fid)
轉載自http://brent0541.blog.163.com/blog/static/1850932542012101161529799/