Matlab的读和写

matlab的写常用fprintf,改天再写总结。

matlab的读可以用textscan和fscanf两者结合运用。

例如,编辑名字为Cli01Shenyang_1992.txt的文档如下:

CROPWAT 8.0 Climate data
 0 3
China
Shenyang
 51.00
 42.27 123.20
 -99.9 -8.1 64.5 241.1 5.3 7.4 0.58
 -99.9 -5.0 47.4 321.4 7.3 11.5 1.22
 -99.9 1.9 44.5 336.1 7.3 14.8 2.16
 -99.9 10.3 49.6 387.1 7.8 18.6 3.55
 -99.9 17.0 56.0 311.9 8.9 22.1 4.54
 -99.9 20.0 65.3 289.4 8.3 22.0 4.57
 -99.9 24.3 76.4 233.3 7.8 20.8 4.39
 -99.9 22.9 79.3 219.5 7.3 18.6 3.82
 -99.9 16.6 73.0 260.9 7.6 16.2 3.06
 -99.9 8.7 68.5 246.2 7.5 12.6 1.95
 -99.9 -2.0 69.3 361.2 4.6 7.3 1.00
 -99.9 -7.9 73.0 209.1 5.2 6.7 0.44

想把该文件中7-18行重的12*7的矩阵读出来,可以textscan跳过前面的6行,%s表示字符串,11表示字符串的个数,具体有下面2种方法,结果是一样的。 方法一:

clear
fileID1=fopen('Cli01Shenyang_1992.txt');
textscan(fileID1,'%s',11);
C_data1=textscan(fileID1,'%f %f %f %f %f %f %f','CollectOutput', 1)
fclose(fileID1)
C_data2=C_data1{1,1}

方法二:

clear
fileID1=fopen('Cli01Shenyang_1992.txt');
textscan(fileID1,'%s',11);
C_data1=fscanf(fileID1,'%f %f %f %f %f %f %f',[7 12])
fclose(fileID1)
C_data2=C_data1';
clear
fileID1=fopen('OUT_Shenyang1992.txt');
textscan(fileID1,'%s',29);
C_data1=textscan(fileID1,'%s %f %s %f %f %f %f %f','CollectOutput', 1);
C_data2=C_data1{1,4};
C_data2(17:18,:)=[];% 17、18行没有用,要去掉
fclose(fileID1)

Leave a Reply

Your email address will not be published. Required fields are marked *