MATLAB保存数据方法.docx
- 文档编号:8345502
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:15
- 大小:23.31KB
MATLAB保存数据方法.docx
《MATLAB保存数据方法.docx》由会员分享,可在线阅读,更多相关《MATLAB保存数据方法.docx(15页珍藏版)》请在冰豆网上搜索。
MATLAB保存数据方法
如果你想保存为.mat的格式,就是用save函数
如果想保存成excel格式,就是用xlswrite函数
如果想保存成text格式,就是用textwrite函数
其他格式还可以使用fwrite函数
在循环当中用eval(['savedate',num2str(i)'])完成存储,根据i值存入不同的文件
Matlab保存for循环下的数据
(2015-01-1205:
34:
23)
转载▼
fori=1:
10
a=i%%加分号后有误,WHY?
?
eval(['savedata',num2str(i)])
end
使用eval
若i不为整数,改换i即可
上述为保存至分开的mat数据当中
如果要一次保存至一个mat当中,可以直接使用save
save('filename','data1','data2','-ascii','-append')
save('filename.mat','data1','data2','-append')
save(['file_',num2str(i),'.mat'],myvar)
fori=1:
10%%%succeed
a=i;
F12=['FILE_',num2str(i),'.dat'];
save(F12,'a');
end
Valueof fmt
FileFormat
'-mat'
BinaryMAT-fileformat.
'-ascii'
Textformatwith8digitsofprecision.
'-ascii','-tabs'
Tab-delimitedtextformatwith8digitsofprecision.
'-ascii','-double'
Textformatwith16digitsofprecision.
'-ascii','-double','-tabs'
Tab-delimitedtextformatwith16digitsofprecision.
Ref:
比如:
A=[123
456]
fid=fopen('D1.txt','wt');
fprintf(fid,'%d%d%d'\n',A');
fclose(fid);
一:
存txt文件,用dlmwrite()dlmwrite
将一个矩阵写到由分隔符分割的文件中。
在保存整数到文件时使用save存为ascii文件时,常常是文件里都是实型格式的数据(有小数点,和后面很多的0,看着很不方便)。
于是要保存此类数据时,我们可以使用此dlmwrite命令。
使用方法:
dlmwrite('filename',M)
使用默认分隔符“,”将矩阵M写入文本文件filename中;
dlmwrite('filename',M,'D')
使用分隔符D分割数据,“\t”表示tab分割,“,”为默认分割符;
dlmwrite('filename',M,'D',R,C)
从矩阵M的第R行、第C列开始,作为要写矩阵块的左上角,将数据用D分割写入文件。
其他用法有:
dlmwrite('filename',M,'attrib1',value1,'attrib2',value2,...)
dlmwrite('filename',M,'-append')
dlmwrite('filename',M,'-append',attribute-valuelist)
例如:
a=[123;456;789];
dlmwrite('test.txt',a);
则test.txt中的内容为:
1,2,3
4,5,6
7,8,9
而使用save保存为TXT文件类型:
a=[123;456;789];
save'tst.txt'a-ascii;
文本文件里的内容为:
1.0000000e+0002.0000000e+0003.0000000e+000
4.0000000e+0005.0000000e+0006.0000000e+000
7.0000000e+0008.0000000e+0009.0000000e+000
而使用save保存为dat文件类型:
a=[123;456;789];
save11.data-ascii;
11.dat文件里的内容为:
1.0000000e+0002.0000000e+0003.0000000e+000
4.0000000e+0005.0000000e+0006.0000000e+000
7.0000000e+0008.0000000e+0009.0000000e+000
在循环结构中可利用以下代码:
fori=1:
3%%%%succeed;
a=[123;456;789];
filename=['phi_',num2str(i),'.txt'];
dlmwrite(filename,a);
end
result:
1.txt,2.txt,3.txt;
利用cswrite函数保存成dat类型。
m=[3691215;510152025;714212835;1122334455];
csvwrite('csvlist.dat',m);
3,6,9,12,15
5,10,15,20,25
7,14,21,28,35
11,22,33,44,55
二.利用xlswrite函数,保存为excel文件类型;
xlswrite(filename,M)
xlswrite(filename,M,sheet)
xlswrite(filename,M,range)
xlswrite(filename,M,sheet,range)
status=xlswrite(filename,...)
[status,message]=xlswrite(filename,...)
xlswritefilenameMsheetrange
Description
xlswrite(filename,M)writesmatrixMtotheExcel?
filefilename.Thefilenameinputisastringenclosedinsinglequotes.TheinputmatrixMisanm-by-nnumeric,character,orcellarray,wherem<65536andn<256.Thematrixdataiswrittentothefirstworksheetinthefile,startingatcellA1.
example:
Example1—WritingNumericDatatotheDefaultWorksheet
Writea7-elementvectortoMicrosoftExcelfiletestdata.xls.Bydefault,thedataiswrittentocellsA1throughG1inthefirstworksheetinthefile:
xlswrite('testdata',[12.75.02-9863.90-.256])
Example2—WritingMixedDatatoaSpecificWorksheet
Thisexamplewritesthefollowingmixedtextandnumericdatatothefiletempdata.xls:
d={'Time','Temp';1298;1399;1497};
Callxlswrite,specifyingtheworksheetlabeledTemperatures,andtheregionwithintheworksheettowritethedatato.The4-by-2matrixwillbewrittentotherectangularregionthatstartsatcellE1initsupperleftcorner:
s=xlswrite('tempdata.xls',d,'Temperatures','E1')
s=
1
Theoutputstatussshowsthatthewriteoperationsucceeded.Thedataappearsasshownhereintheoutputfile:
TimeTemp
1298
1399
1497
Example3—AppendingaNewWorksheettotheFile
Nowwritethesamedatatoaworksheetthatdoesn'tyetexistintempdata.xls.Inthiscase,MATLABappendsanewsheettotheworkbook,callingitbythenameyousuppliedinthesheetsinputargument,'NewTemp'.MATLABdisplaysawarningindicatingthatithasaddedanewworksheettothefile:
xlswrite('tempdata.xls',d,'NewTemp','E1')
Warning:
Addedspecifiedworksheet.
Ifyoudon'twanttoseethesewarnings,youcanturnthemoffusingthecommandindicatedinthemessageabove:
warningoffMATLAB:
xlswrite:
AddSheet
Nowtrythecommandagain,thistimecreatinganothernewworksheet,NewTemp2.Althoughthemessageisnotdisplayedthistime,youcanstillretrieveitanditsidentifierfromthesecondoutputargument,m:
[statmsg]=xlswrite('tempdata.xls',d,'NewTemp2','E1');
msg
msg=
message:
'Addedspecifiedworksheet.'
identifier:
'MATLAB:
xlswrite:
AddSheet'
在循环结构中;
fori=1:
3%%%%succeed;
a=[123;456;789];
filename=[num2str(i),'.xls'];
xlswrite(filename,a);
end
13.1数据基本操作二:
本节介绍基本的数据操作,包括工作区的保存、导入和文件打开。
13.1.1文件的存储
MATLAB支持工作区的保存。
用户可以将工作区或工作区中的变量以文件的形式保存,以备在需要时再次导入。
保存工作区可以通过菜单进行,也可以通过命令窗口进行。
1.保存整个工作区
选择File菜单中的SaveWorkspaceAs…命令,或者单击工作区浏览器工具栏中的Save,可以将工作区中的变量保存为MAT文件。
2.保存工作区中的变量
在工作区浏览器中,右击需要保存的变量名,选择SaveAs…,将该变量保存为MAT文件。
3.利用save命令保存
该命令可以保存工作区,或工作区中任何指定文件。
该命令的调用格式如下:
●save:
将工作区中的所有变量保存在当前工作区中的文件中,文件名为matlab.mat,MAT文件可以通过load函数再次导入工作区,MAT函数可以被不同的机器导入,甚至可以通过其他的程序调用。
●save('filename'):
将工作区中的所有变量保存为文件,文件名由filename指定。
如果filename中包含路径,则将文件保存在相应目录下,否则默认路径为当前路径。
●save('filename','var1','var2',...):
保存指定的变量在filename指定的文件中。
●save('filename','-struct','s'):
保存结构体s中全部域作为单独的变量。
●save('filename','-struct','s','f1','f2',...):
保存结构体s中的指定变量。
●save('-regexp',expr1,expr2,...):
通过正则表达式指定待保存的变量需满足的条件。
●save('...,'format'),指定保存文件的格式,格式可以为MAT文件、ASCII文件等。
13.1.2数据导入
MATLAB中导入数据通常由函数load实现,该函数的用法如下:
●load:
如果matlab.mat文件存在,导入matlab.mat中的所有变量,如果不存在,则返回error。
●loadfilename:
将filename中的全部变量导入到工作区中。
●loadfilenameXYZ...:
将filename中的变量X、Y、Z等导入到工作区中,如果是MAT文件,在指定变量时可以使用通配符“*”。
●loadfilename-regexpexpr1expr2...:
通过正则表达式指定需要导入的变量。
●load-asciifilename:
无论输入文件名是否包含有扩展名,将其以ASCII格式导入;如果指定的文件不是数字文本,则返回error。
●load-matfilename:
无论输入文件名是否包含有扩展名,将其以mat格式导入;如果指定的文件不是MAT文件,则返回error。
例13-1将文件matlab.map中的变量导入到工作区中。
首先应用命令whos–file查看该文件中的内容:
>>whos-filematlab.mat
NameSizeBytesClass
A2x348doublearray
I_q415x552x3687240uint8array
ans1x324doublearray
num_of_cluster1x18doublearray
Grandtotalis687250elementsusing687320bytes
将该文件中的变量导入到工作区中:
>>loadmatlab.mat
该命令执行后,可以在工作区浏览器中看见这些变量,如图13-1所示。
图13-1导入变量后的工作区视图
接下来用户可以访问这些变量。
>>num_of_cluster
num_of_cluster=
3
MATLAB中,另一个导入数据的常用函数为importdata,该函数的用法如下:
●importdata('filename'),将filename中的数据导入到工作区中;
●A=importdata('filename'),将filename中的数据导入到工作区中,并保存为变量A;
●importdata('filename','delimiter'),将filename中的数据导入到工作区中,以delimiter指定的符号作为分隔符;
例13-2从文件中导入数据。
>>imported_data=importdata('matlab.mat')
imported_data=
ans:
[1.18131.09281.6534]
A:
[2x3double]
I_q:
[415x552x3uint8]
num_of_cluster:
3
与load函数不同,importdata将文件中的数据以结构体的方式导入到工作区中。
13.1.3文件的打开
MATLAB中可以使用open命令打开各种格式的文件,MATLAB自动根据文件的扩展名选择相应的编辑器。
需要注意的是open('filename.mat')和load('filename.mat')的不同,前者将filename.mat以结构体的方式打开在工作区中,后者将文件中的变量导入到工作区中,如果需要访问其中的内容,需要以不同的格式进行。
例13-3open与load的比较。
>>clear
>>A=magic(3);
>>B=rand(3);
>>save
Savingto:
matlab.mat
>>clear
>>load('matlab.mat')
>>A
A=
816
357
492
>>B
B=
0.95010.48600.4565
0.23110.89130.0185
0.60680.76210.8214
>>clear
>>open('matlab.mat')
ans=
A:
[3x3double]
B:
[3x3double]
>>struc1=ans;
>>struc1.A
ans=
816
357
492
>>struc1.B
ans=
0.95010.48600.4565
0.23110.89130.0185
0.60680.76210.8214
版权声明:
本文为博主原创文章,未经博主允许不得转载。
将matlab中数据保存为txt或dat格式
2013-12-1721:
592278人阅读评论(0)收藏举报
一、命令是:
用save*.txt-asciix
x为变量
*.txt为文件名,该文件存储于当前工作目录下,再打开就可以打开后,数据有可能是以指数形式保存的.
看下面这个例子:
a=[17241815;23571416;46132022;101219213;11182529];
saveafile.txt-asciia
afile.txt打开之后,是这样的:
1.7000000e+0012.4000000e+0011.0000000e+0008.0000000e+0001.5000000e+001
2.3000000e+0015.0000000e+0007.0000000e+0001.4000000e+0011.6000000e+001
4.0000000e+0006.0000000e+0001.3000000e+0012.0000000e+0012.2000000e+001
1.0000000e+0011.2000000e+0011.9000000e+0012.1000000e+0013.0000000e+000
1.1000000e+0011.8000000e+0012.5000000e+0012.0000000e+0009.0000000e+000
下面可以解决以上问题:
用fprintf命令:
以上面的例子为例:
第一种情况:
>>a=[17241815;23571416;46132022;101219213;11182529];
>>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,内容如下:
为行向量:
17234101124561218171319258142021215162239
第三种情况:
综合上面的两个结果,我们编写以下命令:
fid=fopen('b.txt','wt');%写入文件路径
[m,n]=size(a);
fori=1:
1:
m
forj=1:
1:
n
ifj==n
fprintf(fid,'%g\n',a(i,j));
else
fprintf(fid,'%g\t',a(i,j));
end
end
end
fclose(fid);
然后用写字板打开b.txt,内容如下:
矩阵
17241815
23571416
46132022
101219213
11182529
说明:
以上操作都是在当前的工作目录下完成!
下面给出最一般的模型,大家可以试着自己操作,如果需要dat格式,直接把txt换为dat就可以
fid=fopen('C:
\DocumentsandSettings\cleantotal.ped','wt');%写入文件路径
input_mattrix=[1020108015;23571416;46132022;101219213;11182529];
matrix=input_mattrix%input_matrix为待输出矩阵
[m,n]=size(matrix);
fori=1:
1:
m
forj=1:
1:
n
ifj==n
fprintf(fid,'%g\n',matrix(i,j));
else
fprintf(fid,'%g\t',matrix(i,j));
end
end
end
fclose(fid);
×××××××××××××××××××××××××××××××××××××
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB 保存 数据 方法