将matlab中数据输出保存为txt或dat格式
总结⽹上各⼤论坛,主要有三种⽅法。
第⼀种⽅法:save(最简单基本的)
具体的命令是:⽤save *.txt -ascii x
x为变量
*.txt为⽂件名,该⽂件存储于当前⼯作⽬录下,再打开就可以打开后,数据有可能是以指数形式保存的.
例⼦:
a =[17 24 1 8 15;23 5 7 14 16 ;4 6 13 20 22 ;10 12 19 213 ;11 18 25 2 9 ];
-ascii a
<打开之后,是这样的:
1.7000000e+001
2.4000000e+001 1.0000000e+000 8.0000000e+000 1.5000000e+001
2.3000000e+001 5.0000000e+000 7.0000000e+000 1.4000000e+001 1.6000000e+001
4.0000000e+000 6.0000000e+000 1.3000000e+001 2.0000000e+001 2.2000000e+001
1.0000000e+001 1.2000000e+001 1.9000000e+001
2.1000000e+001
3.0000000e+000
1.1000000e+001 1.8000000e+001
2.5000000e+001 2.0000000e+000 9.0000000e+000
第⼆种⽅法:dlmwrite
dlmwrite('a.txt',a,'precision','%10.0f')
或者是dlmwrite('a.txt',a,'delimiter', '\t')
对于只有⼀⾏或者⼀列的数据,很适⽤,但是多⾏的,就乱了
⽹上有很多这⼀类似的问题,但是都不是很理想
第三种⽅法:fopen+fprintf
下⾯主要介绍这种⽅法,可以解决以上问题:⽤fprintf命令:以上⾯的例⼦为例:
第⼀种情况:
>> a=[17 24 1 8 15;23 5 7 14 16 ;4 6 13 20 22 ;1012 19 21 3 ;11 18 25 2 9 ];
>> fid = fopen('b.txt','wt');
fprintf(fid,'%g\n',a);      # \n 换⾏
fclose(fid);
然后⽤写字板打开b.txt,内容如下:为列向量
17
23
4
10
11
24
5
6
12
18
1
7
13
19
25
8
14
20
21
2
15
16
22
3
9
第⼆种情况:
对上⾯的命令做⼀下改动:# \n 换⾏改为\t,table键
>> fid = fopen('b.txt','w');
fprintf(fid,'%g\t',a);
fclose(fid);
然后⽤写字板打开b.txt,内容如下:为⾏向量:
fprintf格式17 23 4 10 11 24 5 6 12 18 1 7 13 19 25 8 14 20 21 2 15 16 22 3 9
第三种情况:
综合上⾯的两个结果,我们编写以下命令:
<A style="key: ih.baidufid=fopen('b.txt','wt');%写⼊⽂件路径
[m,n]=size(a);
for i=1:1:m
for j=1:1:n
if j==n
fprintf(fid,'%g\n',a(i,j));
else
fprintf(fid,'%g\t',a(i,j));
end
end
end
fclose(fid);
然后⽤写字板打开b.txt,内容如下:矩阵
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
说明:以上操作都是在当前的⼯作⽬录下完成!下⾯给出最⼀般的模型,⼤家可以试着⾃⼰操作,如果需要dat格式,直接把txt换为dat就可以
fid=fopen('C:\Documents andSettings\cleantotal.ped','wt');%写⼊⽂件路径
matrix=input_mattrix                        %input_matrix为待输出矩阵
[m,n]=size(matrix);
for i=1:1:m
for j=1:1:n
if j==n
fprintf(fid,'%g\n',matrix(i,j));
else
fprintf(fid,'%g\t',matrix(i,j));
end
end
end
fclose(fid);
×××××××××××××××××××××××××××××××××××××××××××××××××××××××××
下⾯附了具体的matlab的fopen和fprintf函数具体解释,当然help⼀下是可以知道的,只是为了⽅便⼤家
matlab中fopen函数在指定⽂件打开的实例如下:
*1)“fopen”打开⽂件,赋予⽂件代号。
语法1:FID= FOPEN(filename,permission)
⽤指定的⽅式打开⽂件
FID=+N(N是正整数):表⽰⽂件打开成功,⽂件代号是N.
FID=-1            : 表⽰⽂件打开不成功。
FID在此次⽂件关闭前总是有效的。
如以读⽅式打开,matlab⾸先搜索⼯作⽬录,其次搜索matlab的其他⽬录,“permission”是打开⽅式参数。
打开⽅式参数由以下字符串确定:
r            读出
w            写⼊(⽂件若不存在,⾃动创建)
a            后续写⼊(⽂件若不存在,⾃动创建)
r+            读出和写⼊(⽂件应已存在)
w+            重新刷新写⼊,(⽂件若不存在,⾃动创建)
a+            后续写⼊(⽂件若不存在,⾃动创建))
w            重新写⼊,但不⾃动刷新
a            后续写⼊,但不⾃动刷新
⽂件的存储格式:⽂件打开的默认⽅式是:⼆进制。以⽂本⽅式打开,可以在⽅式参
数“permission”中加⼊“t”⽂件将,如“rt”,“wt+”
matlab中fprintf函数的具体使⽤⽅法实例如下:
fprintf函数可以将数据按指定格式写⼊到⽂本⽂件中。其调⽤格式为:
数据的格式化输出:fprintf(fid, format, variables)
按指定的格式将变量的值输出到屏幕或指定⽂件
fid为⽂件句柄,若缺省,则输出到屏幕
1 for standard output (the screen) or
2 for standard error. If FID is omitted, output goes to the screen.
format⽤来指定数据输出时采⽤的格式
%d 整数
%e 实数:科学计算法形式
%f 实数:⼩数形式
%g 由系统⾃动选取上述两种格式之⼀
%s 输出字符串
fprintf(fid,format,A)
说明:fid为⽂件句柄,指定要写⼊数据的⽂件,format是⽤来控制所写数据格式的格式符,与fscanf函数相同,A是⽤来存放数据的矩阵。
例6.9 创建⼀个字符矩阵并存⼊磁盘,再读出赋值给另⼀个矩阵。
>> a='string';
>> fid=fopen('d:\','w');
>> fprintf(fid,'%s',a);
>> fclose(fid);
>> fid1=fopen('d:\','rt');
>> fid1=fopen('d:\','rt');
>> b=fscanf(fid1,'%s')
b =
string
matlab读txt⽂件
fid=fopen('fx.txt','r');
%得到⽂件号
[f,count]=fscanf(fid,'%f %f',[12,90]);
%把⽂件号1的数据读到f中。其中f是[12 90]的矩阵
%这⾥'%f %f'表⽰读取数据的形势,他是按原始数据型读出
fclose(fid);
%关闭⽂件
另外有的txt⽂件还可以⽤load来打开
其语句为
f=load('fx.txt)
字符串操作函数
1.        函数eval可以⽤来执⾏⽤字符串表⽰的表达式
2.        函数deblank可以去掉字符串末尾的所有空格
3.        函数findstr可以⽤来在长字符串中查⼀个短的字符串,并返回相应的位置
4.        函数isstr可以⽤来判断变量是否为字符串
5.        函数isletter可以⽤来判断字符串中各个元素是否为字母
6.        函数isspace可以⽤来判断字符串元素是否为空格符
7.        函数lower和upper可以把字符串中的字母转为⼩写格式和⼤写格式
8.        函数strcat可以把多个字符串在⽔平⽅向上依次连接起来
9.        函数strvcat可以把多个字符串按竖直⽅向连接起来
10.    函数strcmp可以⽤来进⾏字符串的⽐较,返回1或0
11.    函数strcmpi可以⽤来忽略英⽂字母的⼤⼩写⽅式⽐较字符串
12.    函数strncmp可以⽤来⽐较字符串前N个字符是否相同
13.    函数strjust可以⽤来调整字符串矩阵的对齐⽅式
14.    函数strmatch可以⽤来寻和⽬标字符串匹配的⾏
15.    函数strrep可以实现字符串的查和替代功能
16.    函数strtok可以出字符串第⼀个空格符前的字符串
17.    函数texlabel可以把字符串转换成tex软件的格式
18.    不同进制间的转换,bin2hex,bin2dec(‘字符串’);dec2hex(数)=字符串;即⼗进制数不为字符串,      其它进制为字符串
19.    函数bitget可以⽤来获取⼆进制的数位    C=bitget(A,bit),A为⼀个⽆符号整形数据
20.    函数bitset可以⽤来设定某个⼆进制数位的值      C=bitset(A,bit) 指定数位的数值取反
C=bitset(A,bit,V)指定数位的数值被V替换
21.    函数bitand,bitor和bitxor可以⽤来进⾏‘与’,‘或’,‘抑或’数位操作

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。