MATLAB保存数据方法.docx

上传人:b****5 文档编号:8345502 上传时间:2023-01-30 格式:DOCX 页数:15 大小:23.31KB
下载 相关 举报
MATLAB保存数据方法.docx_第1页
第1页 / 共15页
MATLAB保存数据方法.docx_第2页
第2页 / 共15页
MATLAB保存数据方法.docx_第3页
第3页 / 共15页
MATLAB保存数据方法.docx_第4页
第4页 / 共15页
MATLAB保存数据方法.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

MATLAB保存数据方法.docx

《MATLAB保存数据方法.docx》由会员分享,可在线阅读,更多相关《MATLAB保存数据方法.docx(15页珍藏版)》请在冰豆网上搜索。

MATLAB保存数据方法.docx

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);

×××××××××××××××××××××××××××××××××××××

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1