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)