MATLAB保存数据为txt或dat格式
轉(zhuǎn)自:https://blog.csdn.net/sruixue/article/details/41542781
總結(jié)網(wǎng)上各大論壇,主要有三種方法。
第一種方法:save(最簡(jiǎn)單基本的)
具體的命令是:用save *.txt -ascii x
x為變量
*.txt為文件名,該文件存儲(chǔ)于當(dāng)前工作目錄下,再打開(kāi)就可以打開(kāi)后,數(shù)據(jù)有可能是以指數(shù)形式保存的.
例子:
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 ];
save afile.txt -ascii a
afile.txt打開(kāi)之后,是這樣的:
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')
對(duì)于只有一行或者一列的數(shù)據(jù),很適用,但是多行的,就亂了
網(wǎng)上有很多這一類(lèi)似的問(wèn)題,但是都不是很理想
第三種方法:fopen+fprintf
下面主要介紹這種方法,可以解決以上問(wèn)題:用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);
然后用寫(xiě)字板打開(kāi)b.txt,內(nèi)容如下:為列向量
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
第二種情況:
對(duì)上面的命令做一下改動(dòng):# \n 換行改為\t,table鍵
fid = fopen('b.txt','w');
fprintf(fid,'%g\t',a);
fclose(fid);
然后用寫(xiě)字板打開(kāi)b.txt,內(nèi)容如下:為行向量:
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
第三種情況:
綜合上面的兩個(gè)結(jié)果,我們編寫(xiě)以下命令:
<A style="key: ih.baidu.comfid=fopen('b.txt','wt');%寫(xiě)入文件路徑
[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);
然后用寫(xiě)字板打開(kāi)b.txt,內(nèi)容如下:矩陣
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
說(shuō)明:以上操作都是在當(dāng)前的工作目錄下完成!下面給出最一般的模型,大家可以試著自己操作,如果需要dat格式,直接把txt換為dat就可以
fid=fopen('C:\Documents andSettings\cleantotal.ped','wt');%寫(xiě)入文件路徑
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函數(shù)具體解釋,當(dāng)然help一下是可以知道的,只是為了方便大家
matlab中fopen函數(shù)在指定文件打開(kāi)的實(shí)例如下:
*1)“fopen”打開(kāi)文件,賦予文件代號(hào)。
語(yǔ)法1: FID= FOPEN(filename,permission)
用指定的方式打開(kāi)文件
FID=+N(N是正整數(shù)):表示文件打開(kāi)成功,文件代號(hào)是N.
FID=-1 : 表示文件打開(kāi)不成功。
FID在此次文件關(guān)閉前總是有效的。
如以讀方式打開(kāi),matlab首先搜索工作目錄,其次搜索matlab的其他目錄,“permission”是打開(kāi)方式參數(shù)。
打開(kāi)方式參數(shù)由以下字符串確定:
r 讀出
w 寫(xiě)入(文件若不存在,自動(dòng)創(chuàng)建)
a 后續(xù)寫(xiě)入(文件若不存在,自動(dòng)創(chuàng)建)
r+ 讀出和寫(xiě)入(文件應(yīng)已存在)
w+ 重新刷新寫(xiě)入,(文件若不存在,自動(dòng)創(chuàng)建)
a+ 后續(xù)寫(xiě)入(文件若不存在,自動(dòng)創(chuàng)建))
w 重新寫(xiě)入,但不自動(dòng)刷新
a 后續(xù)寫(xiě)入,但不自動(dòng)刷新
文件的存儲(chǔ)格式:文件打開(kāi)的默認(rèn)方式是:二進(jìn)制。以文本方式打開(kāi),可以在方式參
數(shù)“permission”中加入“t”文件將,如“rt”,“wt+”
matlab中fprintf函數(shù)的具體使用方法實(shí)例如下:
fprintf函數(shù)可以將數(shù)據(jù)按指定格式寫(xiě)入到文本文件中。其調(diào)用格式為:
數(shù)據(jù)的格式化輸出:fprintf(fid, format, variables)
按指定的格式將變量的值輸出到屏幕或指定文件
fid為文件句柄,若缺省,則輸出到屏幕
1 for standard output (the screen) or2 for standard error. If FID is omitted, output goes to the screen.
format用來(lái)指定數(shù)據(jù)輸出時(shí)采用的格式
%d 整數(shù)
%e 實(shí)數(shù):科學(xué)計(jì)算法形式
%f 實(shí)數(shù):小數(shù)形式
%g 由系統(tǒng)自動(dòng)選取上述兩種格式之一
%s 輸出字符串
fprintf(fid,format,A)
說(shuō)明:fid為文件句柄,指定要寫(xiě)入數(shù)據(jù)的文件,format是用來(lái)控制所寫(xiě)數(shù)據(jù)格式的格式符,與fscanf函數(shù)相同,A是用來(lái)存放數(shù)據(jù)的矩陣。
例6.9 創(chuàng)建一個(gè)字符矩陣并存入磁盤(pán),再讀出賦值給另一個(gè)矩陣。
a='string';
fid=fopen('d:\char1.txt','w');
fprintf(fid,'%s',a);
fclose(fid);
fid1=fopen('d:\char1.txt','rt');
fid1=fopen('d:\char1.txt','rt');
b=fscanf(fid1,'%s')
得到
b =
string
matlab讀txt文件
fid=fopen('fx.txt','r');
%得到文件號(hào)
[f,count]=fscanf(fid,'%f %f',[12,90]);
%把文件號(hào)1的數(shù)據(jù)讀到f中。其中f是[12 90]的矩陣
%這里’%f %f’表示讀取數(shù)據(jù)的形勢(shì),他是按原始數(shù)據(jù)型讀出
fclose(fid);
%關(guān)閉文件
另外有的txt文件還可以用load來(lái)打開(kāi)
其語(yǔ)句為
f=load('fx.txt)
字符串操作函數(shù)
函數(shù)bitset可以用來(lái)設(shè)定某個(gè)二進(jìn)制數(shù)位的值 C=bitset(A,bit) 指定數(shù)位的數(shù)值取反
C=bitset(A,bit,V)指定數(shù)位的數(shù)值被V替換
函數(shù)bitand,bitor和bitxor可以用來(lái)進(jìn)行‘與’,‘或’,‘抑或’數(shù)位操作
總結(jié)
以上是生活随笔為你收集整理的MATLAB保存数据为txt或dat格式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Nmap使用技巧总结
- 下一篇: 基于微信买菜小程序系统设计与实现 开题报