matlab导出数据(fprintf,dlmwrite,xlswrite)
1.用fprintf 函数写数据到txt,xls
Example:
x = 0:.1:1;
y = [x; exp(x)];
fid = fopen('', 'w');
fprintf(fid, '%6.2f %12.8f\n', y);
fclose(fid)
y = [x; exp(x)];
fid = fopen('', 'w');
fprintf(fid, '%6.2f %12.8f\n', y);
fclose(fid)
tip:执行上述代码执行,肯定不会换行的,换行的问题试一下下面的代码
x = 0:.1:1;
y = [x; exp(x)];
fid = fopen('', 'wt');
fprintf(fid, '%6.2f %12.8f\n', y);
y = [x; exp(x)];
fid = fopen('', '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 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).
就是有两种读取模式matlab中fprintf是什么意思binary or text. When choosing the binary model,No characters are
given special treatment. 所以我们选择要注明text模式。
这次就没有问题了,我们要注意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).
就是有两种读取模式matlab中fprintf是什么意思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)
使用方法:
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('', a);
dlmwrite('', a);
则中的内容为:
1,2,3
4,5,6
7,8,9
而使用save
a = [1 2 3; 4 5 6; 7 8 9];
save '' 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
1,2,3
4,5,6
7,8,9
而使用save
a = [1 2 3; 4 5 6; 7 8 9];
save '' 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
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里面没有这个命令,那很可能这个命令就不能使用.
如 我想知道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]
a =
1 2 3
4 5 6
7 8 9
>>fid = fopen('','w');
fprintf(fid,'%2.0f\n',a);
4 5 6
7 8 9
>>fid = fopen('','w');
fprintf(fid,'%2.0f\n',a);
fclose(fid);
>>
1
4
7
2
5
8
3
6
9
fprintf输出是一列一列的从左到右输出。
>> dlmwrite('eg2.dat',a,'\n');
>> type eg2.dat
>>
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输出是一行一行的从上到下输出。
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数组有多少列
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);%关闭文件指针
[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);%关闭文件指针
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论