MATLAB保存数据为txt或dat格式
轉自:https://blog.csdn.net/sruixue/article/details/41542781
總結網上各大論壇,主要有三種方法。
第一種方法: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 ];
save afile.txt -ascii a
afile.txt打開之后,是這樣的:
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,內容如下:為行向量:
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.baidu.comfid=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) or2 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:\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');
%得到文件號
[f,count]=fscanf(fid,'%f %f',[12,90]);
%把文件號1的數據讀到f中。其中f是[12 90]的矩陣
%這里’%f %f’表示讀取數據的形勢,他是按原始數據型讀出
fclose(fid);
%關閉文件
另外有的txt文件還可以用load來打開
其語句為
f=load('fx.txt)
字符串操作函數
函數bitset可以用來設定某個二進制數位的值 C=bitset(A,bit) 指定數位的數值取反
C=bitset(A,bit,V)指定數位的數值被V替換
函數bitand,bitor和bitxor可以用來進行‘與’,‘或’,‘抑或’數位操作
總結
以上是生活随笔為你收集整理的MATLAB保存数据为txt或dat格式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Nmap使用技巧总结
- 下一篇: win7 休眠