matlab ASCII 格式導入


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/

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM