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

下载本文档

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

文档简介

如果你想保存为.mat的格式,就是用save函数如果想保存成excel格式,就是用xlswrite函数如果想保存成text格式,就是用textwrite函数其他格式还可以使用fwrite函数在循环当中用eval(save date,num2str(i)完成存储,根据i值存入不同的文件Matlab保存for循环下的数据(2015-01-12 05:34:23)转载for i=1:10a=i%加分号后有误,WHY?eval(save data,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,myvar)for i=1:10 % succeeda=i;F12=FILE_, num2str(i), .dat;save(F12 , a);endValue offmtFile Format-matBinary MAT-file format.-asciiText format with 8 digits of precision.-ascii,-tabsTab-delimited text format with 8 digits of precision.-ascii,-doubleText format with 16 digits of precision.-ascii,-double,-tabsTab-delimited text format with 16 digits of precision.Ref:/help/matlab/ref/save.html?searchHighlight=save#bt0xgur-6比如:A=1 2 3 4 5 6fid=fopen(D1.txt,wt);fprintf(fid,%d %d %dn,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-value list)例如:a = 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+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_,num2str(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(filename, 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 single quotes. The input matrix M is an m-by-n numeric, character, or cell array, where m 65536 and n 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 导入变量后的工作区视图接下来用户可以访问这些变量。 num_of_clusternum_of_cluster = 3MATLAB中,另一个导入数据的常用函数为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.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(filename.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 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.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打开之后,是这样的: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.1000000e+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.txt,内容如下:为列向量 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=fopen(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说明:以上操作都是在当前的工作目录下完成!下面给出最一般的模型,大家可以试着自己操作,如果需要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,%gn,matrix(i,j); else fprintf(fid,%gt,matrix(i,j); end endendfclose(fid);刚开始照着这个帖子写发现换行老是实现不了,老是把换行符存成方格了。后来发现原来是文件打开的时候属性有问题,将其改成wt,也就是以文本方式就好了。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) 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; 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 =stringmatlab读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.

温馨提示

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

评论

0/150

提交评论