当前位置:首页 >> 计算机软件及应用 >>

MATLAB保存数据方法


如果你想保存为.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',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) for i=1:10 a=i; F12=['FILE_',num2str(i),'.dat']; save(F12 ,'a'); end %%% succeed

Value of fmt

File Format

Value of fmt

File Format

'-mat' '-ascii' '-ascii','-tabs' '-ascii','-double' '-ascii','-double','-tabs'

Binary MAT-file format. Text format with 8 digits of precision. Tab-delimited text format with 8 digits of precision. Text format with 16 digits of precision. Tab-delimited text format with 16 digits of precision.

Ref: http://au.mathworks.com/help/matlab/ref/save.html?searchHighlight=save#b t0xgur-6

比如:A=[1 2 3 4 5 6] 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-value list) 例如: a = [1 2 3; 4 5 6; 7 8 9]; dlmwrite('test.txt', a);

则 test.txt 中的内容为: 1,2,3 4,5,6 7,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 4.0000000e+000 5.0000000e+000 7.0000000e+000 8.0000000e+000 而使用 save 保存为 dat 文件类型: a = [1 2 3; 4 5 6; 7 8 9]; save11.dat a -ascii; 11.dat 文件里的内容为: 1.0000000e+000 2.0000000e+000 4.0000000e+000 5.0000000e+000 7.0000000e+000 8.0000000e+000

3.0000000e+000 6.0000000e+000 9.0000000e+000

3.0000000e+000 6.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); end result :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,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, ...) xlswrite filename M sheet range Description xlswrite(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 < 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 Worksheet Write a 7-element vector to Microsoft 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 Worksheet This example writes the following mixed text and numeric data to the file 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 = xlswrite('tempdata.xls', d, 'Temperatures', 'E1') s= 1 The 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 97 Example 3 — Appending a New Worksheet to the File Now write the same data to a worksheet 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', 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:AddSheet Now try the command again, this time creating another new worksheet, NewTemp2. Although the message is not displayed this time, you can still retrieve it and its identifier from the

second output argument, m: [statmsg] = xlswrite('tempdata.xls', d, 'NewTemp2', 'E1'); msg msg = message: 'Added specified worksheet.' identifier: 'MATLAB:xlswrite:AddSheet'

在循环结构中; for i=1:3 %%%%succeed; a = [1 2 3; 4 5 6; 7 8 9]; filename=[num2str(i), '.xls']; xlswrite(filename, a); end 13.1 数据基本操作二: 本节介绍基本的数据操作,包括工作区的保存、导入和文件打开。 13.1.1 文件的存储 MATLAB 支持工作区的保存。用户可以将工作区或工作区中的变量以文件的形式保存, 以备在需要时再次导入。保存工作区可以通过菜单进行,也可以通过命令窗口进行。 1. 保存整个工作区 选择 File 菜单中的 Save Workspace As?命令,或者单击工作区浏览器工具栏中的 Save, 可以将工作区中的变量保存为 MAT 文件。 2. 保存工作区中的变量 在工作区浏览器中,右击需要保存的变量名,选择 Save As?,将该变量保存为 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。 ● load filename:将 filename 中的全部变量导入到工作区中。

● load filename X Y Z ...:将 filename 中的变量 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 查看该文件中的内容: >>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 array Grand total is 687250 elements using 687320 bytes 将该文件中的变量导入到工作区中: >> load matlab.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.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); >> save Saving to: matlab.mat >>clear >>load('matlab.mat') >> A A= 8 1 6 3 5 7 4 9 2 >> B B= 0.9501 0.4860 0.2311 0.8913 0.6068 0.7621 >>clear >>open('matlab.mat') ans = A: [3x3 double] B: [3x3 double] >> struc1=ans; >> struc1.A ans = 8 1 6 3 5 7 4 9 2 >> struc1.B ans = 0.9501 0.4860 0.2311 0.8913 0.6068 0.7621

0.4565 0.0185 0.8214

0.4565 0.0185 0.8214

版权声明:本文为博主原创文章,未经博主允许不得转载。 将 matlab 中数据保存为 txt 或 dat 格式 2013-12-17 21:59 2278 人阅读评论(0) 收藏举报 一、命令是:用 save *.txt -ascii x x 为变量 *.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 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 下面可以解决以上问题:用 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,'%g\n',a); fclose(fid); % # \n 换行

然后用写字板打开 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,内容如下:为行向量:

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,'%g\n',a(i,j)); else fprintf(fid,'%g\t',a(i,j)); end end end fclose(fid);

然后用写字板打开 b.txt,内容如下:矩阵 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 说明:以上操作都是在当前的工作目录下完成!下面给出最一般的模型,大家可以试着自己 操作,如果需要 dat 格式,直接把 txt 换为 dat 就可以

fid=fopen('C:\Documents and Settings\cleantotal.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 [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); %input_matrix 为待输出矩阵

××××××××××××××××××××××××××××××××××××××× ×××××××××××××××××× 刚开始照着这个帖子写发现换行老是实现不了, 老是把换行符存成方格了。 后来发现原来是 文件打开的时候属性有问题,将其改成'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= string matlab 读 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.txt) 字符串操作函数 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 函数 eval 可以用来执行用字符串表示的表达式 函数 deblank 可以去掉字符串末尾的所有空格 函数 findstr 可以用来在长字符串中查找一个短的字符串,并返回相应的位置 函数 isstr 可以用来判断变量是否为字符串 函数 isletter 可以用来判断字符串中各个元素是否为字母 函数 isspace 可以用来判断字符串元素是否为空格符 函数 lower 和 upper 可以把字符串中的字母转为小写格式和大写格式 函数 strcat 可以把多个字符串在水平方向上依次连接起来 函数 strvcat 可以把多个字符串按竖直方向连接起来 函数 strcmp 可以用来进行字符串的比较,返回 1 或 0 函数 strcmpi 可以用来忽略英文字母的大小写方式比较字符串 函数 strncmp 可以用来比较字符串前 N 个字符是否相同 函数 strjust 可以用来调整字符串矩阵的对齐方式 函数 strmatch 可以用来寻找和目标字符串匹配的行 函数 strrep 可以实现字符串的查找和替代功能 函数 strtok 可以找出字符串第一个空格符前的字符串 函数 texlabel 可以把字符串转换成 tex 软件的格式

18. 不同进制间的转换,bin2hex,bin2dec( ‘字符串’ ) ;dec2hex(数)=字符串;即十 进制数不为字符串,其它进制为字符串

19. 函数 bitget 可以用来获取二进制的数位 形数据 20. 函数 bitset 可以用来设定某个二进制数位的值 取反

C=bitget(A,bit) ,A 为一个无符号整

C=bitset(A,bit)指定数位的数值

C=bitset(A,bit,V)指定数位的 数值被 V 替换 21. 函数 bitand,bitor 和 bitxor 可以用来进行‘与’ , ‘或’ , ‘抑或’数位操作


赞助商链接
相关文章:
MATLAB数据保存
MATLAB数据保存_计算机软件及应用_IT/计算机_专业资料。讲述matlab7.0常用的保存方法非常有用一:存 txt 文件,用 dlmwrite()dlmwrite 将一个矩阵写到由分隔符分割的...
将MATLAB数据保存到Excel中的程序
MATLAB数据保存到Excel中的程序_理学_高等教育_教育专区。将MATLAB数据保存到Excel中的完整程序将MATLAB 数据保存到 Excel 中的程序 excel = actxserver('excel....
matlab导出数据(fprintf,dlmwrite,xlswrite)
matlab导出数据(fprintf,dlmwrite,xlswrite)_电脑基础知识_IT/计算机_专业资料。...使用方法: dlmwrite('filename', M) 使用默认分隔符“,”将矩阵 M 写入文本...
matlab数据快捷保存
matlab数据快捷保存_理学_高等教育_教育专区。又做一个非常实用的 matlab 程序,虽然程序简短,但功能非常强 大,我将其全部功能及用法,规则,注意事项,小这样做的...
在设计中使用MATLAB中数据的方法
之后再将这个向量保存数据文件 (.mat 文件) 。最后用 Simulink 中的 From File 模块读取这个文件,即可把在 MATLAB 中产生的信号导入到 Simulink 中。 本教程...
matlab导出数据(fprintf,dlmwrite,xlswrite)
matlab导出数据(fprintf,dlmwrite,xlswrite)_工学_高等教育_教育专区。matlab导出...使用方法: dlmwrite('filename', M) dlmwrite 使用默认分隔符“,”将矩阵 M ...
导出CCS3.3数据及使用matlab处理的方法
导出CCS3.3数据及使用matlab处理的方法_计算机软件及应用_IT/计算机_专业资料。CCS3.3 是一款 DSP 的集成开发环境(IDE)。在做 DSP 开发时,为验证算法,常常需要...
Matlab数据导入方法
Matlab 数据导入方法 在编写一个程序时,经常需要从外部读入数据, 在编写一个程序时,经常需要从外部读入数据,或者将程序 运行的结果保存文件MATLAB 使用多种...
matlab文件数据读写
matlab 读取文件各种方法本技术支持指南主要处理:ASCII, binary, and MAT files....UIGETFILE 让你选择一个文件来写(类似 Windows ?另 存为?选项?) 。用 ...
Matlab数据处理与分析
Matlab数据处理与分析_机械/仪表_工程科技_专业资料。前 言 MATLAB 一直是国际科学...%输入的矩阵保存在变量 B 中 B= -1 1 0 2 A .*B %以数组方式相乘, ...
更多相关标签: