print是打印命令,但是可以将当前坐标系中的内容打印到文件,或打印到剪切板,saveas只是print函数的简化版。
print(fh,'-dmeta'); %将当前坐标系中的内容复制到剪切板
print函数可以把函数图形保存为图片。
minbnd = -4*pi;
maxbnd = 4*pi;
t = minbnd:0.1*pi:maxbnd;
plot(t,sin(t),'g','Linewidth',2);
line([minbnd,maxbnd],[0,0]); %绘制x轴
axis([-10,10,-2,2]) %定义显示的坐标区间:x在(-10,10)之间,y在(-2,2)之间
grid on
title('sin(x)');
xlabel('x');
ylabel('sin(x)');
print('-dpng','sin.png'); %保存为png图片,在Matlab当前的工作目录下
在当前工作目录下会出现一个sin.png文件,如下:
print的用法:
print(图形句柄,存储格式,文件名);
图形句柄,如果图形窗口标题栏为’figure2’,则句柄就是2。用gcf可以获取当前窗口句柄。
指定存储格式,常用的有:
- PNG格式:’-dpng’(推荐这一种,与bmp格式一样清晰,文件也不大)
- JPEG格式:’-djpeg’(文件小,较清晰)
- TIFF格式:’-dtiff’
- BMP格式:’-dbitmap’(清晰,文件极大)
- GIF格式:’-dgif’(文件小但不清晰)
例如:
I = imread('result.png');
imshow(I);
print(gcf,'-dbmp','result.bmp')
批量打印::
for i=1:length(fnames)
print('-dpsc','-r200',fnames(i))
end
更多内容看help print,注意一点,print为将图形数据保存为图像文件!
fprintf
fprintf函数可以将数据按指定格式写入到文本文件中。
data = [5,1,2;3,7,4];
[row,col]=size(data);
for i = 1:row
for j = 1:col
fprintf('data(%d,%d)=%d\n',i,j,data(i,j)); %直接输出到屏幕,类似于C语言的输出格式
end
end
结果如下:
语法说明:
fprintf(fid,format,data)中的fid表示由fopen函数打开的文件句柄,如果fid省略,则直接输出在屏幕上,format是字符串形式的输出格式,data是要输出的数据。
其中,format的取值包括:
- %c 单个字符
- %d 有符号十进制数(%i也可以)
- %u 无符号十进制数
- %f 浮点数(%8.4f表示对浮点数取8位宽度,同时4位小数)
- %o 无符号八进制数
- %s 字符串
- %x 小写a-f的十六进制数
- %X 大写A-F的十六进制数
将数据输出到文本文件:
data = [5,1,2;3,7,4];
[row,col]=size(data);
%加t表示按Windows格式输出换行,即0x0a 0x0d (\r\n)
%没有t表示按Linux格式输出换行,即0x0a(\r)
fid = fopen('test.txt','wt'); %打开文件
for i = 1:row
for j = 1:col
fprintf(fid,'%d',data(i,j));
end
fprintf(fid,'\n');
end
fprintf(fid,'This is a string!\n');
fprintf(fid,'%X',hex2dec('ABCD'));
fclose(fid);
使用fscanf从文本文件中读取数据:
fid = fopen('test.txt','rt');
%将数据读入data中,其中data是2*3的矩阵
data = fscanf(fid,'%d',[2,3]);
s = fscanf(fid,'%s');
d = fscanf(fid,'%X');
fclose(fid);
disp(data);
disp(s);
disp(d);
0x0a和0x0d的问题
0x0a, 10查ASCII码表对应\n,换行键,光标移动到下一行
0x0d, 13查ASCII码表对应\r,回车键,光标移动到行首
Windows环境下,在txt文件中敲下回车键,会获得2个字符,0x0d和0x0a;
Linux环境下,在txt文件中敲下回车键,每次只获得1个字符,0x0a。
disp
disp函数直接将内容输出在Matlab命令窗口中。
%单字符串输出:
disp('Hello World!');
%不同类型数据输出:
num1 = 1;
num2 = 2;
disp([ num2str(num1), ' + ', num2str(num2), ' = ', num2str(num1+num2)]);
输出:
Hello World!
1+2=3
###参考链接
1、Matlab中print、fprintf、fscanf、disp函数的用法
http://wenku.baidu.com/link?url=D1QmdNlt1R4Hnz-F0iykLdf46WSmryNzDrPAuOeZo7Fyg99kCUj824joYjmQLhxhXzEIoHVito602hG8XmudIH9OPVJrgb7XVMp5fy_sfUW
2、0x0d和0x0a 学习
http://blog.youkuaiyun.com/yirexiao/article/details/5135976
3、ASCII码表,百度百科
http://baike.baidu.com/link?url=mHKWeEcbruRP__iQCilxhdN5P9fslzPLOXYVkfplwAefIyBnWh0QX4hK3pivAt–uGdwZZKyiWrplhsnXMo7sK