MATLAB保存数据方法_第1页
MATLAB保存数据方法_第2页
MATLAB保存数据方法_第3页
MATLAB保存数据方法_第4页
MATLAB保存数据方法_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、如果你想保存为.mat的格式,就是用save函数如果想保存成excel格式,就是用xlswrite函数如果想保存成text格式,就是用textwrite函数其他格式还可以使用fwrite函数在循环当中用eval('save date',num2str(i)')完成存储,根据i值存入不同的文件Matlab保存for循环下的数据 (2015-01-12 05:34:23)转载for i=1:10    a=i%加分号后有误,WHY?    eval('save data'

2、;,num2str(i)end使用eval若i不为整数,改换i即可上述为保存至分开的mat数据当中如果要一次保存至一个mat当中,可以直接使用savesave ('filename','data1','data2','-ascii','-append') save ('filename.mat','data1','data2','-append')save('file_',num2str(i),'.mat',m

3、yvar)for i=1:10 % succeeda=i;F12='FILE_', num2str(i), '.dat'save(F12 , 'a');endValue of fmtFile Format'-mat'Binary MAT-file format.'-ascii'Text format with 8 digits of precision.'-ascii','-tabs'Tab-delimited text format with 8 digits of pr

4、ecision.'-ascii','-double'Text format with 16 digits of precision.'-ascii','-double','-tabs'Tab-delimited text format with 16 digits of precision.Ref: 比如:A=1 2 3 4 5 6fid=fopen('D1.txt','wt');fprintf(fid,'%d %d %d'n',A');fc

5、lose(fid);一:存txt文件,用dlmwrite()dlmwrite将一个矩阵写到由分隔符分割的文件中。在保存整数到文件时使用save存为ascii文件时,常常是文件里都是实型格式的数据(有小数点,和后面很多的0,看着很不方便)。于是要保存此类数据时,我们可以使用此dlmwrite命令。使用方法:dlmwrite('filename', M)使用默认分隔符“,”将矩阵M写入文本文件filename中;dlmwrite('filename', M, 'D')使用分隔符D分割数据,“t”表示tab分割,“,”为默认分割符;dlmwrite(&

6、#39;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-value list)例如:a

7、= 1 2 3; 4 5 6; 7 8 9;dlmwrite('test.txt', a);则test.txt中的内容为:1,2,34,5,67,8,9而使用save保存为TXT文件类型:a = 1 2 3; 4 5 6; 7 8 9;save 'tst.txt' a -ascii;文本文件里的内容为: 1.0000000e+000 2.0000000e+000 3.0000000e+000 4.0000000e+000 5.0000000e+000 6.0000000e+000 7.0000000e+000 8.0000000e+000 9.0000000e+

8、000而使用save保存为dat文件类型:a = 1 2 3; 4 5 6; 7 8 9;save 11.dat a -ascii;11.dat文件里的内容为: 1.0000000e+000 2.0000000e+000 3.0000000e+000 4.0000000e+000 5.0000000e+000 6.0000000e+000 7.0000000e+000 8.0000000e+000 9.0000000e+000在循环结构中可利用以下代码:for i=1:3 %succeed;a = 1 2 3; 4 5 6; 7 8 9;filename='phi_',num2

9、str(i), '.txt'dlmwrite(filename, a);endresult : 1.txt,2.txt,3.txt;利用cswrite函数保存成dat类型。m = 3 6 9 12 15; 5 10 15 20 25; 7 14 21 28 35; 11 22 33 44 55;csvwrite('csvlist.dat',m);3,6,9,12,155,10,15,20,257,14,21,28,3511,22,33,44,55二利用xlswrite函数,保存为excel文件类型;xlswrite(filename, M)xlswrite(fi

10、lename, M, sheet)xlswrite(filename, M, range)xlswrite(filename, M, sheet, range)status = xlswrite(filename, .)status, message = xlswrite(filename, .)xlswrite filename M sheet rangeDescriptionxlswrite(filename, M) writes matrix M to the Excel? file filename. The filename input is a string enclosed in

11、 single quotes. The input matrix M is an m-by-n numeric, character, or cell array, where m < 65536 and n < 256. The matrix data is written to the first worksheet in the file, starting at cell A1.example:Example 1 Writing Numeric Data to the Default WorksheetWrite a 7-element vector to Microsof

12、t Excel file testdata.xls. By default, the data is written to cells A1 through G1 in the first worksheet in the file:xlswrite('testdata', 12.7 5.02 -98 63.9 0 -.2 56)Example 2 Writing Mixed Data to a Specific WorksheetThis example writes the following mixed text and numeric data to the file

13、tempdata.xls:d = 'Time', 'Temp' 12 98; 13 99; 14 97;Call xlswrite, specifying the worksheet labeled Temperatures, and the region within the worksheet to write the data to. The 4-by-2 matrix will be written to the rectangular region that starts at cell E1 in its upper left corner:s =

14、xlswrite('tempdata.xls', d, 'Temperatures', 'E1')s = 1The output status s shows that the write operation succeeded. The data appears as shown here in the output file:Time Temp 12 98 13 99 14 97Example 3 Appending a New Worksheet to the FileNow write the same data to a workshe

15、et that doesn't yet exist in tempdata.xls. In this case, MATLAB appends a new sheet to the workbook, calling it by the name you supplied in the sheets input argument, 'NewTemp'. MATLAB displays a warning indicating that it has added a new worksheet to the file:xlswrite('tempdata.xls&

16、#39;, d, 'NewTemp', 'E1')Warning: Added specified worksheet.If you don't want to see these warnings, you can turn them off using the command indicated in the message above:warning off MATLAB:xlswrite:AddSheetNow try the command again, this time creating another new worksheet, New

17、Temp2. Although the message is not displayed this time, you can still retrieve it and its identifier from the second output argument, m:stat msg = xlswrite('tempdata.xls', d, 'NewTemp2', 'E1');msgmsg = message: 'Added specified worksheet.' identifier: 'MATLAB:xlsw

18、rite:AddSheet'在循环结构中;for i=1:3 %succeed;a = 1 2 3; 4 5 6; 7 8 9;filename=num2str(i), '.xls'xlswrite(filename, a);end13.1 数据基本操作二:本节介绍基本的数据操作,包括工作区的保存、导入和文件打开。13.1.1 文件的存储MATLAB支持工作区的保存。用户可以将工作区或工作区中的变量以文件的形式保存,以备在需要时再次导入。保存工作区可以通过菜单进行,也可以通过命令窗口进行。1. 保存整个工作区选择File菜单中的Save Workspace As命令,或

19、者单击工作区浏览器工具栏中的Save,可以将工作区中的变量保存为MAT文件。2. 保存工作区中的变量在工作区浏览器中,右击需要保存的变量名,选择Save As,将该变量保存为MAT文件。3. 利用save命令保存该命令可以保存工作区,或工作区中任何指定文件。该命令的调用格式如下: save:将工作区中的所有变量保存在当前工作区中的文件中,文件名为 matlab.mat,MAT文件可以通过load函数再次导入工作区,MAT函数可以被不同的机器导入,甚至可以通过其他的程序调用。 save('filename'):将工作区中的所有变量保存为文件,文件名由filename指定。如果fi

20、lename中包含路径,则将文件保存在相应目录下,否则默认路径为当前路径。 save('filename', 'var1', 'var2', .):保存指定的变量在 filename 指定的文件中。 save('filename', '-struct', 's'):保存结构体s中全部域作为单独的变量。 save('filename', '-struct', 's', 'f1', 'f2', .):保存结构体s中的指定变量

21、。 save('-regexp', expr1, expr2, .):通过正则表达式指定待保存的变量需满足的条件。 save('., 'format'),指定保存文件的格式,格式可以为MAT文件、ASCII文件等。13.1.2 数据导入MATLAB中导入数据通常由函数load实现,该函数的用法如下: load:如果matlab.mat文件存在,导入matlab.mat中的所有变量,如果不存在,则返回error。 load filename:将filename中的全部变量导入到工作区中。 load filename X Y Z .:将filename中的变

22、量X、Y、Z等导入到工作区中,如果是MAT文件,在指定变量时可以使用通配符“*”。 load filename -regexp expr1 expr2 .:通过正则表达式指定需要导入的变量。 load -ascii filename:无论输入文件名是否包含有扩展名,将其以ASCII格式导入;如果指定的文件不是数字文本,则返回error。 load -mat filename:无论输入文件名是否包含有扩展名,将其以mat格式导入;如果指定的文件不是MAT文件,则返回error。例13-1 将文件matlab.map中的变量导入到工作区中。首先应用命令whos file查看该文件中的内容:>

23、> whos -file matlab.mat Name Size Bytes Class A 2x3 48 double array I_q 415x552x3 687240 uint8 array ans 1x3 24 double array num_of_cluster 1x1 8 double arrayGrand total is 687250 elements using 687320 bytes将该文件中的变量导入到工作区中:>> load matlab.mat该命令执行后,可以在工作区浏览器中看见这些变量,如图13-1所示。图13-1 导入变量后的工作区视图

24、接下来用户可以访问这些变量。>> num_of_clusternum_of_cluster = 3MATLAB中,另一个导入数据的常用函数为importdata,该函数的用法如下: importdata('filename'),将filename中的数据导入到工作区中; A = importdata('filename'),将filename中的数据导入到工作区中,并保存为变量A; importdata('filename','delimiter'),将filename中的数据导入到工作区中,以delimiter指定的

25、符号作为分隔符;例13-2 从文件中导入数据。>> imported_data = importdata('matlab.mat')imported_data = ans: 1.1813 1.0928 1.6534 A: 2x3 double I_q: 415x552x3 uint8 num_of_cluster: 3与load函数不同,importdata将文件中的数据以结构体的方式导入到工作区中。13.1.3 文件的打开MATLAB中可以使用open命令打开各种格式的文件,MATLAB自动根据文件的扩展名选择相应的编辑器。 需要注意的是open('fil

26、ename.mat')和load('filename.mat')的不同,前者将filename.mat以结构体的方式打开在工作区中,后者将文件中的变量导入到工作区中,如果需要访问其中的内容,需要以不同的格式进行。 例13-3 open与load的比较。>> clear>> A = magic(3);>> B = rand(3);>> saveSaving to: matlab.mat>> clear>> load('matlab.mat')>> AA = 8 1 6 3

27、5 7 4 9 2>> BB = 0.9501 0.4860 0.4565 0.2311 0.8913 0.0185 0.6068 0.7621 0.8214>> clear>> open('matlab.mat')ans = A: 3x3 double B: 3x3 double>> struc1=ans;>> struc1.Aans = 8 1 6 3 5 7 4 9 2>> struc1.Bans = 0.9501 0.4860 0.4565 0.2311 0.8913 0.0185 0.6068 0

28、.7621 0.8214 版权声明:本文为博主原创文章,未经博主允许不得转载。将matlab中数据保存为txt或dat格式2013-12-17 21:59 2278人阅读 评论(0) 收藏 举报一、命令是:用save *.txt -ascii xx为变量*.txt为文件名,该文件存储于当前工作目录下,再打开就可以 打开后,数据有可能是以指数形式保存的.看下面这个例子: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 aafile.txt打开之后,是这样的:

29、1.7000000e+001 2.4000000e+001 1.0000000e+000 8.0000000e+000 1.5000000e+0012.3000000e+001 5.0000000e+000 7.0000000e+000 1.4000000e+001 1.6000000e+0014.0000000e+000 6.0000000e+000 1.3000000e+001 2.0000000e+001 2.2000000e+0011.0000000e+001 1.2000000e+001 1.9000000e+001 2.1000000e+001 3.0000000e+0001.10

30、00000e+001 1.8000000e+001 2.5000000e+001 2.0000000e+000 9.0000000e+000下面可以解决以上问题:用fprintf命令:以上面的例子为例:第一种情况:>> 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 ;>> fid = fopen('b.txt','wt');fprintf(fid,'%gn',a); % # n 换行fclose(fid);然后用写字板打开b.t

31、xt,内容如下:为列向量 17234101124561218171319258142021215162239第二种情况:对上面的命令做一下改动:# n 换行改为t,table键>> fid = fopen('b.txt','w');fprintf(fid,'%gt',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 第三种情况:综合上面的两个结果,我们编写以下命令:fid=fo

32、pen('b.txt','wt');%写入文件路径m,n=size(a); for i=1:1:m for j=1:1:n if j=n fprintf(fid,'%gn',a(i,j); else fprintf(fid,'%gt',a(i,j); end endendfclose(fid);然后用写字板打开b.txt,内容如下:矩阵 17 24 1 8 1523 5 7 14 164 6 13 20 2210 12 19 21 311 18 25 2 9说明:以上操作都是在当前的工作目录下完成!下面给出最一般的模型,大家可以试

33、着自己操作,如果需要dat格式,直接把txt换为dat就可以fid=fopen('C:Documents and Settingscleantotal.ped','wt');%写入文件路径 input_mattrix=10 20 10 80 15;23 5 7 14 16 ;4 6 13 20 22 ;10 12 19 21 3 ;11 18 25 2 9 ;matrix=input_mattrix %input_matrix为待输出矩阵m,n=size(matrix); for i=1:1:m for j=1:1:n if j=n fprintf(fid,&#

34、39;%gn',matrix(i,j); else fprintf(fid,'%gt',matrix(i,j); end endendfclose(fid);×××××××××××××××××××××××××××××××××××

35、;××××××××××××××××××××××刚开始照着这个帖子写发现换行老是实现不了,老是把换行符存成方格了。后来发现原来是文件打开的时候属性有问题,将其改成'wt',也就是以文本方式就好了。matlab中fopen函数在指定文件打开的实例如下:*1)“fopen”打开文件,赋予文件代号。 语法1:FID= FOPEN(filename,permission)

36、用指定的方式打开文件FID=+N(N是正整数):表示文件打开成功,文件代号是N.FID=-1 : 表示文件打开不成功。FID在此次文件关闭前总是有效的。如以读方式打开,matlab首先搜索工作目录,其次搜索matlab的其他目录,“permission”是打开方式参数。打开方式参数由以下字符串确定:r 读出w 写入(文件若不存在,自动创建)a 后续写入(文件若不存在,自动创建)r+ 读出和写入(文件应已存在)w+ 重新刷新写入,(文件若不存在,自动创建)a+ 后续写入(文件若不存在,自动创建)w 重新写入,但不自动刷新a 后续写入,但不自动刷新文件的存储格式:文件打开的默认方式是:二进制。以文

37、本方式打开,可以在方式参数“permission”中加入“t”文件将,如“rt”,“wt+”matlab中fprintf函数的具体使用方法实例如下:fprintf函数可以将数据按指定格式写入到文本文件中。其调用格式为:数据的格式化输出:fprintf(fid, format, variables) 按指定的格式将变量的值输出到屏幕或指定文件 fid为文件句柄,若缺省,则输出到屏幕 1 for standard output (the screen) or 2 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'&

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论