matlab导出数据(fprintf,dlmwrite,xlswrite)
实验八MATLAB文件操作与数据导入导出

实验八 Matlab 文件操作与数据接口一、实验目的1、熟练掌握工作区变量的文件操作;2、熟练掌握文本文件的读写操作;3、熟练掌握格式化文本文件的输入输出语句的执行4、了解二进制文件、Mat文件的读写操作二、实验仪器与软件1. PC计算机2. Matlab软件三、实验原理1. 二进制文件与文本文件的区别:将文件看作是由一个一个字节(byte) 组成的,那么文本文件中的每个字节的最高位都是0,也就是说文本文件使用了一个字节中的七位来表示所有的信息,而二进制文件则是将字节中的所有位都用上了。
这就是两者的区别;接着,第二个问题就是文件按照文本方式或者二进制方式打开,两者会有什么不同呢?其实不管是二进制文件也好,还是文本文件也好,都是一连串的0和1,但是打开方式不同,对于这些0和1的处理也就不同。
如果按照文本方式打开,在打开的时候会进行translate,将每个字节转换成ASCII 码,而以按照二进制方式打开的话,则不会进行任何的translate;最后就是文本文件和二进制文件在编辑的时候,使用的方式也是不同的。
譬如,你在记事本中进行文本编辑的时候,你进行编辑的最小单位是字节(byte);而对二进制文件进行编辑的话,最小单位则是位(bi t),当然我们都不会直接通过手工的方式对二进制文件进行编辑了。
从文件编码的方式来看,文件可分为ASCII码文件和二进制码文件两种:ASCII文件也称为文本文件,这种文件在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码。
例如,数5678的存储形式为:ASCII码:00110101 00110110 00110111 00111000↓↓↓↓十进制码:5678共占用4个字节。
ASCII码文件可在屏幕上按字符显示,例如源程序文件就是A SCII文件,用DOS命令TYPE可显示文件的内容。
由于是按字符显示,因此能读懂文件内容。
二进制文件是按二进制的编码方式来存放文件的。
MATLAB读写函数一些使用说明

MATLAB读写函数一些使用说明1. load函数:load函数用于从文件中读取数据并将其加载到工作空间中。
可以使用load函数读取MATLAB的二进制文件、文本文件以及其他文件格式转换成的MATLAB文件。
语法如下:load filename例如:load data.mat2. save函数:save函数用于将工作空间中的数据保存为文件。
可以使用save函数将数据保存为MATLAB格式、二进制格式或文本格式的文件。
语法如下:save filename例如:save data.mat3. fopen函数和fclose函数:fopen函数用于打开文件,而fclose函数用于关闭文件。
在打开文件后,可以使用其他函数进行读写操作。
语法如下:fid = fopen(filename, mode)fclose(fid)例如:fid = fopen('data.txt', 'r')4. fprintf函数:fprintf函数用于将数据以指定的格式写入到文本文件中。
它可以将变量、矩阵等不同类型的数据保存为文本格式的文件。
语法如下:fprintf(fid, format, data)例如:fprintf(fid, '%d %f', A)5. fscanf函数:fscanf函数用于从文本文件中按指定的格式读取数据。
可以使用fscanf函数读取数字、字符串、矩阵等类型的数据。
语法如下:data = fscanf(fid, format, size)例如:data = fscanf(fid, '%d %f', [2, 3])6. xlsread函数和xlswrite函数:xlsread函数用于从Excel文件中读取数据,而xlswrite函数用于将数据写入Excel文件。
这两个函数可以方便地读写Excel文件中的数据。
语法如下:data = xlsread(filename, sheet, range)xlswrite(filename, data, sheet, range)例如:data = xlsread('data.xlsx', 'Sheet1', 'A1:C3')7. imread函数和imwrite函数:imread函数用于从图像文件中读取图像数据,而imwrite函数用于将图像数据保存为图像文件。
matlab导出数据(fprintf,dlmwrite,xlswrite)

matlab导出数据(fprintf,dlmwrite,xlswrite)1.用fprintf 函数写数据到txt,xlsExample:x = 0:.1:1;y = [x; exp(x)];fid = fopen('exp.txt', 'w');fprintf(fid, '%6.2f %12.8f\n', y);fclose(fid)tip:执行上述代码执行,肯定不会换行的,换行的问题试一下下面的代码x = 0:.1:1;y = [x; exp(x)];fid = fopen('exp.txt', 'wt');fprintf(fid, '%6.2f %12.8f\n', y);fclose(fid);这次就没有问题了,我们要注意fopne的参数wt 而不是 w,这是matlab的在线帮助的东东fid = fopen(filename, permission_tmode) on Windows systems, opens the file in textmode instead of binary mode (the default). The permission_tmode argument consistsof any of the specifiers shown in the Permission Specifiers table above, followedby the letter t, for example 'rt' or 'wt+. On UNIX®systems, text and binary modeare the same. (UNIX is a registered trademark of TheOpen Group in the United States and other countries).就是有两种读取模式binary or text. When choosing the binary model,No characters aregiven special treatment. 所以我们选择要注明text模式。
matlab建模数据的导入与导出

五Hale Waihona Puke 数据导出• save filename varlist 文件格式为mat,只能用load filename 导入 • dlmwrite(„filename‟,m):writes matrix m into filename using the “,” as the delimiter. 可用 dlmread(„filename‟) 或csvread(„filename‟) 读取 • csvwrite(filename,m) writes matrix m into filename as comma separated values. 结果与dlmwrite相同
七、图形的复制与保存
• 图形窗口->edit->copy figure-> word文档->粘贴
努力不一定成功 放弃一定是失败
处理函数 数值文件(一般分隔):dlmread, dlmwrite ,load ,save 文本文件(逗号分隔) :textread, csvread, csvwrite 二进制文件:fopen, fread, fwrite, fclose 格式化的文本输入/输出:fscanf, fprintf 图像数据的读写:imread, imwrite,imshow
其中names、 types 、 answer 均为cell数据类型。如 names{1} 对应‘Sally‟ answer{2}对应‘No‟。 x, y 均为double型 数组
• • • •
2009年全国数模赛B题数据的 导入
题目: 第一步:现将数据复制到记事本中: 第二步:编写程序,读取数据 第三部:数据处理与分析
• 学好计算机的唯一途径是
• 你的编程能力与你在计算机上练习编程 所投入的时间成
matlab中的数据导入和导出

matlab中的数据导入和导出Matlab提供了从磁盘文件或剪贴簿转载数据至工作区(数据导入)和将工作区变量存入磁盘文件(数据导出)的多种途径。
最简单的办法是使用界面导入向导,打开文件菜单中的导入数据而后按提示操作。
Matlab支持的主要数据文件类型和对应函数如下:导入文本文件文本文件需要具备统一的行列模式,使用分隔符作为数据项间隔,这些分隔符包括空格、逗号、tab、分号或其它。
数据文件可能附带标题行和行列头标签。
数值数据对于数值数据可以直接使用load函数装载,例如my_data.txt中数据如下:1 2 3 4 56 7 8 9 10命令A = load('my_data.txt')装载该文本文件数据。
如果数值数据使用其它分隔符,可以使用dlmread读入,假设my_data.txt中数据如下:7.2;8.5;6.2;6.65.4;9.2;8.1;7.2命令A = dlmread('my_data.txt', ';')读入该数据。
包含行列标签的数值数据例如:Grade1 Grade2 Grade378.8 55.9 45.999.5 66.8 78.089.5 77.0 56.7fid = fopen('grades.dat', 'r');grades = textscan(fid, '%f %f %f', 3, 'headerlines', 1);fclose(fid);包含字符和数值的混合数据使用textread函数读入。
导出文本文件save函数A = [ 1 2 3 4 ; 5 6 7 8 ];save my_data.out A –ASCIIdlmwrite函数dlmwrite('my_data.out',A, ';')MS-Excel电子表格文件xlsinfo获得文件信息使用命令[type, sheets] = xlsfinfo(filename)返回文件类型type 和工作表信息。
matlab中将数据输出保存为txt格式文件的方法

将matlab中数据输出保存为txt或dat格式总结网上各大论坛,主要有三种方法。
第一种方法:save(最简单基本的)具体的命令是:用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+0012.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+0012.1000000e+0013.0000000e+0001.1000000e+001 1.8000000e+0012.5000000e+001 2.0000000e+000 9.0000000e+000第二种方法:dlmwritedlmwrite('a.txt',a,'precision','%10.0f')或者是dlmwrite('a.txt',a,'delimiter', '\t')对于只有一行或者一列的数据,很适用,但是多行的,就乱了网上有很多这一类似的问题,但是都不是很理想第三种方法:fopen+fprintf下面主要介绍这种方法,可以解决以上问题:用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); # \n 换行fclose(fid);然后用写字板打开b.txt,内容如下:为列向量17234101124561218171319258142021215162239第二种情况:对上面的命令做一下改动:# \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第三种情况:综合上面的两个结果,我们编写以下命令:<A style="key: fid=fopen('b.txt','wt');%写入文件路径[m,n]=size(a);for i=1:1:mfor j=1:1:nif j==nfprintf(fid,'%g\n',a(i,j));elsefprintf(fid,'%g\t',a(i,j));endendendfclose(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 Settings\cleantotal.ped','wt');%写入文件路径matrix=input_mattrix %input_matrix为待输出矩阵[m,n]=size(matrix);for i=1:1:mfor j=1:1:nif j==nfprintf(fid,'%g\n',matrix(i,j));elsefprintf(fid,'%g\t',matrix(i,j));endendendfclose(fid);×××××××××××××××××××××××××××××××××××××××××××××××××××××××××下面附了具体的matlab的fopen和fprintf函数具体解释,当然help一下是可以知道的,只是为了方便大家matlab中fopen函数在指定文件打开的实例如下:*1)“fopen”打开文件,赋予文件代号。
Matlab输出内容到Excel的方法(WPS可用)

return; end; file= [Pathname Filename];
try Excel = actxGetRunningServer('Excel.Application');
Sheets = Excel.ActiveWorkbook.Sheets; Sheets.Item(1).name='数据'; Sheet1 = Sheets.Item(1); Sheet1.Activate; Sheet1.Range('A1').Value ='aaa'; Sheet1.Range('B1').Value='bbb';
catch Excel = actxserver('Excel.Application');
end; %Excel.Visible = 1;
if exist(file,'file') delete(file);
end
Workbook = Excel.Workbooks.Add; Workbook.SaveAs(file);
登录后才能查看或发表评论立即登录或者逛逛博客园首页
Matlab输出内容到 Excel的方法( WPS可用)
本文主要用于将Matlab内容输出到指定excel文件,具有如下功能:
可自定义文件路径 如果路径下文件不存在,则新建文件 如果路径下文件重名,则替换文件 由于本人安装的WPS,使用xlswrite命令会报错,使用以下方法亲测可行
matlab中将数据输出保存为txt格式文件的方法 (1)

将matlab中数据输出保存为txt或dat格式总结网上各大论坛,主要有三种方法。
第一种方法:save(最简单基本的)具体的命令是:用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+0012.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+0012.1000000e+0013.0000000e+0001.1000000e+001 1.8000000e+0012.5000000e+001 2.0000000e+000 9.0000000e+000第二种方法:dlmwritedlmwrite('a.txt',a,'precision','%10.0f')或者是dlmwrite('a.txt',a,'delimiter', '\t')对于只有一行或者一列的数据,很适用,但是多行的,就乱了网上有很多这一类似的问题,但是都不是很理想第三种方法:fopen+fprintf下面主要介绍这种方法,可以解决以上问题:用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); # \n 换行fclose(fid);然后用写字板打开b.txt,内容如下:为列向量17234101124561218171319258142021215162239第二种情况:对上面的命令做一下改动:# \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 第三种情况:综合上面的两个结果,我们编写以下命令:<A style="key: ,'wt');%写入文件路径[m,n]=size(a);for i=1:1:mfor j=1:1:nif j==nfprintf(fid,'%g\n',a(i,j));elsefprintf(fid,'%g\t',a(i,j));endendendfclose(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 Settings\cleantotal.ped','wt');%写入文件路径matrix=input_mattrix %input_matrix为待输出矩阵[m,n]=size(matrix);for i=1:1:mfor j=1:1:nif j==nfprintf(fid,'%g\n',matrix(i,j));elsefprintf(fid,'%g\t',matrix(i,j));endendendfclose(fid);×××××××××××××××××××××××××××××××××××××××××××××××××××××××××下面附了具体的matlab的fopen和fprintf函数具体解释,当然help一下是可以知道的,只是为了方便大家matlab中fopen函数在指定文件打开的实例如下:*1)“fopen”打开文件,赋予文件代号。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
matlab导出数据(fprintf,dlmwrite,xlswrite)
1.用fprintf 函数写数据到txt,xls
Example:
x = 0:.1:1;
y = [x; exp(x)];
fid = fopen('exp.txt', 'w');
fprintf(fid, '%6.2f %12.8f\n', y);
fclose(fid)
tip:执行上述代码执行,肯定不会换行的,换行的问题试一下下面的代码
x = 0:.1:1;
y = [x; exp(x)];
fid = fopen('exp.txt', 'wt');
fprintf(fid, '%6.2f %12.8f\n', y);
fclose(fid);
x = 1;
fid = fopen('exp.txt', 'w');
fprintf(fid, '%d', x);
fclose(fid);
这次就没有问题了,我们要注意fopne的参数wt 而不是 w,这是matlab的在线帮助的东东
fid = fopen(filename, permission_tmode) on Windows systems, opens the file in text
mode instead of binary mode (the default). The permission_tmode argument consists
of any of the specifiers shown in the Permission Specifiers table above, followed
by the letter t, for example 'rt' or 'wt+. On UNIX®systems, text and binary mode
are the same. (UNIX is a registered trademark of The
Open Group in the United States and other countries).
就是有两种读取模式binary or text. When choosing the binary model,No characters are
given special treatment. 所以我们选择要注明text模式。
2. 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
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
3.xlswrite 写入excel
4.fprintf和dlmwrite区别
MATLAB在图像处理中的应用,实际是对图像矩阵的操做运算,MATLAB 在图像处理中的常用的命令有:
imread(): 从图像文件夹中读取图像的函数;
imwrite(): 输出图像的函数;
imshow(), image(): 图像显示于屏幕的函数;
imcrop(): 对图像进行裁剪的函数;;
imresize(): 实现对图像的插值缩放的函数;
imrotate(): 用实现对图像的旋转。
im2double(),double(): 将图像数组转化为double类型;
im2uint8(),uint8(): 将图像数组转化为uint8类型;
im2uint16(),uint16(): 将图像数组转化为uint16类型;
关于上述的命令使用方法可以参考一些MATLAB方面的书籍或者用MATLAB自带的帮助(help or doc)命令.
如我想知道dwt2()命令的使用方法可以执行下面的命令
>> help dwt2 或 >>doc dwt2
系统就会告诉你它的使用要求和方法,如果系统说找不到对应的帮助文件,那就可能是你装的MATLAB里面没有这个命令,那很可能这个命令就不能使用.
在图像数组的输出到文件的操作上,我发现fprintf比dlmwrite明显快很多,但这两个输出的数据格式有些差别,见下面操作:
>> a=[1 2 3;4 5 6;7 8 9]
a =
1 2 3
4 5 6
7 8 9
>>fid = fopen('exp.txt','w');
fprintf(fid,'%2.0f\n',a);
fclose(fid);
>> type exp.txt
1
4
7
2
5
8
3
6
9
fprintf输出是一列一列的从左到右输出。
>> dlmwrite('eg2.dat',a,'\n');
>> type eg2.dat
1
2
3
4
5
6
7
8
9
dlmwrite输出是一行一行的从上到下输出。
下面是一个比较简单的图像处理程序:
clear;%清除当前工作区所有变量
data=imread('E:\2D前处理\eg1.bmp');%从图像文件夹中读取图像eg1.bmp
data=double(data);%将图像数组data转化为double类型
[x,y]=size(data);%求数组大小,x是data数组有多少行,y是data数组有多少列
data1=imresize(data,[x,y*2/1.732]);%实现对图像的左右插值放大2/1.732倍
[x,y]=size(data1);%%求放大后图像数组大小
fid = fopen('E:\2D前处理\Particle\test.dat', 'wt');%打开图像数组的将要输出到文件fprintf(fid, '%2.0f\t%2.0f\n', x, y);%输出x,y值
fprintf(fid, '%2.0f\n', data1);%输出图像数组数据
fclose(fid);%关闭文件指针。