将matlab中数据输出保存为txt或dat格式
一、將matlab中數(shù)據(jù)輸出保存為txt或dat格式的三種方法。
第一種方法:save(最簡(jiǎn)單基本的)
具體的命令是:用save *.txt -ascii x
x為變量
*.txt為文件名,該文件存儲(chǔ)于當(dāng)前工作目錄下,再打開就可以打開后,數(shù)據(jù)有可能是以指數(shù)形式保存的.
例子:
a =[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 ];
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(chǎn).txt’,a,‘precision’,’%10.0f’)
或者是dlmwrite(‘a(chǎn).txt’,a,‘delimiter’, ‘\t’)
對(duì)于只有一行或者一列的數(shù)據(jù),很適用,但是多行的,就亂了
網(wǎng)上有很多這一類似的問(wèn)題,但是都不是很理想
第三種方法:fopen+fprintf
下面主要介紹這種方法,可以解決以上問(wèn)題:用fprintf命令:以上面的例子為例:
第一種情況:
^ >> a=[17 24 1 8 15;23 5 7 14 16 ;4 6 13 20 22 ;10 12 19 21 3 ;11 1825 2 9 ];
^>> fid = fopen(‘b.txt’,‘wt’);
fprintf(fid,’%g\n’,a); # \n 換行
fclose(fid);
然后用寫字板打開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);
然后用寫字板打開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é)果,我們編寫以下命令:
fid=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,內(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 and Settings\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函數(shù)具體解釋
下面附了具體的matlab的fopen和fprintf函數(shù)具體解釋,當(dāng)然help一下是可以知道的,只是為了方便大家
matlab中fopen函數(shù)在指定文件打開的實(shí)例如下:
*1)“fopen”打開文件,賦予文件代號(hào)。
語(yǔ)法1:FID= FOPEN(filename,permission)
用指定的方式打開文件
FID=+N(N是正整數(shù)):表示文件打開成功,文件代號(hào)是N.
FID=-1 : 表示文件打開不成功。
FID在此次文件關(guān)閉前總是有效的。
如以讀方式打開,matlab首先搜索工作目錄,其次搜索matlab的其他目錄,“permission”是打開方式參數(shù)。
打開方式參數(shù)由以下字符串確定:
r 讀出
w 寫入(文件若不存在,自動(dòng)創(chuàng)建)
a 后續(xù)寫入(文件若不存在,自動(dòng)創(chuàng)建)
r+ 讀出和寫入(文件應(yīng)已存在)
w+ 重新刷新寫入,(文件若不存在,自動(dòng)創(chuàng)建)
a+ 后續(xù)寫入(文件若不存在,自動(dòng)創(chuàng)建))
w 重新寫入,但不自動(dòng)刷新
a 后續(xù)寫入,但不自動(dòng)刷新
文件的存儲(chǔ)格式:文件打開的默認(rèn)方式是:二進(jìn)制。以文本方式打開,可以在方式參
數(shù)“permission”中加入“t”文件將,如“rt”,“wt+”
matlab中fprintf函數(shù)的具體使用方法實(shí)例如下:
fprintf函數(shù)可以將數(shù)據(jù)按指定格式寫入到文本文件中。其調(diào)用格式為:
數(shù)據(jù)的格式化輸出:fprintf(fid, format, variables)
按指定的格式將變量的值輸出到屏幕或指定文件
fid為文件句柄,若缺省,則輸出到屏幕
1 for standard output (the screen) or 2 for standarderror. 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為文件句柄,指定要寫入數(shù)據(jù)的文件,format是用來(lái)控制所寫數(shù)據(jù)格式的格式符,與fscanf函數(shù)相同,A是用來(lái)存放數(shù)據(jù)的矩陣。
例6.9 創(chuàng)建一個(gè)字符矩陣并存入磁盤,再讀出賦值給另一個(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)打開
其語(yǔ)句為
f=load('fx.txt)
字符串操作函數(shù)
函數(shù)eval可以用來(lái)執(zhí)行用字符串表示的表達(dá)式
函數(shù)deblank可以去掉字符串末尾的所有空格
函數(shù)findstr可以用來(lái)在長(zhǎng)字符串中查找一個(gè)短的字符串,并返回相應(yīng)的位置
函數(shù)isstr可以用來(lái)判斷變量是否為字符串
函數(shù)isletter可以用來(lái)判斷字符串中各個(gè)元素是否為字母
函數(shù)isspace可以用來(lái)判斷字符串元素是否為空格符
函數(shù)lower和upper可以把字符串中的字母轉(zhuǎn)為小寫格式和大寫格式
函數(shù)strcat可以把多個(gè)字符串在水平方向上依次連接起來(lái)
函數(shù)strvcat可以把多個(gè)字符串按豎直方向連接起來(lái)
函數(shù)strcmp可以用來(lái)進(jìn)行字符串的比較,返回1或0
函數(shù)strcmpi可以用來(lái)忽略英文字母的大小寫方式比較字符串
函數(shù)strncmp可以用來(lái)比較字符串前N個(gè)字符是否相同
函數(shù)strjust可以用來(lái)調(diào)整字符串矩陣的對(duì)齊方式
函數(shù)strmatch可以用來(lái)尋找和目標(biāo)字符串匹配的行
函數(shù)strrep可以實(shí)現(xiàn)字符串的查找和替代功能
函數(shù)strtok可以找出字符串第一個(gè)空格符前的字符串
函數(shù)texlabel可以把字符串轉(zhuǎn)換成tex軟件的格式
不同進(jìn)制間的轉(zhuǎn)換,bin2hex,bin2dec(‘字符串’);dec2hex(數(shù))=字符串;即十進(jìn)制數(shù)不為字符串, 其它進(jìn)制為字符串
函數(shù)bitget可以用來(lái)獲取二進(jìn)制的數(shù)位 C=bitget(A,bit),A為一個(gè)無(wú)符號(hào)整形數(shù)據(jù)
函數(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ù)位操作
三、轉(zhuǎn)換字符
四、將文件內(nèi)容讀取到數(shù)組中
創(chuàng)建一個(gè)包含整數(shù)和浮點(diǎn)數(shù)的示例文本文件。
x = 1:1:5; y = [x;rand(1,5)]; fileID = fopen('nums2.txt','w'); fprintf(fileID,'%d %4.4f\n',y); fclose(fileID);查看文件的內(nèi)容。
type nums2.txt1 0.8147
2 0.9058
3 0.1270
4 0.9134
5 0.6324
打開要讀取的文件并獲取文件標(biāo)識(shí)符 fileID。
fileID = fopen(‘nums2.txt’,‘r’);
定義要讀取的數(shù)據(jù)的格式和輸出數(shù)組的形狀。
formatSpec = '%d %f'; sizeA = [2 Inf];讀取文件數(shù)據(jù)并按列順序填充輸出數(shù)組 A。fscanf 在整個(gè)文件中重新使用格式 formatSpec。
A = fscanf(fileID,formatSpec,sizeA)A = 2×5
1.0000 2.0000 3.0000 4.0000 5.0000
0.8147 0.9058 0.1270 0.9134 0.6324
https://blog.csdn.net/iqizheng/article/details/11853919
https://ww2.mathworks.cn/help/matlab/ref/fprintf.html
https://ww2.mathworks.cn/help/matlab/ref/fscanf.html#bt_j35z-2_1
總結(jié)
以上是生活随笔為你收集整理的将matlab中数据输出保存为txt或dat格式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 网易邮箱大师app如何修改密码(网易游戏
- 下一篇: 在matlab中输出、读取多个文件