目的:将字符串数组a导出到文件b.txt
方法:
先制造一个字符串数组
>> a=char('This is a','char
array');
a=
This is a
char array
一、用fopen+fprintf(或fwrite)+fclose
繁琐。有问题
fid=fopen('b.txt','wt');
fprintf(fid,'%s\n',a);
fclose(fid);
结果b.txt用记事本打开是这样:
tchhiasr iasr raa
y
二、用save
不好。save只能将变量保存为二进制文件或者Ascii型文件。
1. save('b.txt','a')
结果是b.txt是一个二进制文件,记事本打开是乱码:
MATLAB 5.0
MAT-file, Platform: PCWIN, Created on: Wed Jul 20 21:41:52
2011 IM ; x溿c``? b6 ? b`咈檧???H
??gdd&)(€散腄匤? ?;
2. save('b.txt','a','-ascii')
结果是b.txt是一个Ascii码文件,记事本打开全是数字(将每一个字母保存成对应的ASCII代码了)
1.1600000e+002 1.0400000e+002 1.0500000e+002 1.1500000e+002 3.2000000e+001 1.0500000e+002 1.1500000e+002 3.2000000e+001 9.7000000e+001 3.2000000e+001
9.9000000e+001 1.0400000e+002 9.7000000e+001 1.1400000e+002 3.2000000e+001 9.7000000e+001 1.1400000e+002 1.1400000e+002 9.7000000e+001 1.2100000e+002
三、用dlmwrite(或csvwrite)
推荐。
1. dlmwrite('b.txt',a)
结果b.txt是一个默认用逗号分隔的文件,记事本打开后看到
t,h,i,s, ,i,s, ,a, c,h,a,r,
,a,r,r,a,y
2. dlmwrite('b.txt',a,'')
改成指定分隔符为空,记事本打开后看到
this is a char array
3. dlmwrite('b.txt',a,'delimiter','','newline','pc')
继续给文件添加pc格式的属性,记事本打开后看到完美的文本:
this
is a
char array
值得一提的是,在没有指定pc格式之前,虽然记事本打开看不到分行,但是换行符是实际存在的,复制粘贴到word或者用ultraedit等打开后是可以显示分行的。