当我们需要将MATLAB画好的图插入到自己的论文或PPT中时,就不得不将其变成图片了,以前大一的时候刚刚上手MATLAB,总是傻傻的将图窗全屏然后用截图工具去截取,后来才知道图窗可以直接另存为图片。但是用鼠标去点击“文件->另存为”到底还是不太方便的,现在我们直接加一行代码来操作它。
常用的方法有三种printf,imwrite,saveas。
saveas
语法
saveas(fig,filename) saveas(fig,filename,formattype)
说明
saveas(fig,filename) 将 fig 指定的图窗或 Simulink® 模块图保存到 filename 文件中。 saveas(fig,filename,formattype) 使用指定的文件格式 formattype 创建文件。 它有三种书写方式 saveas(gcf,['D:1.png']) saveas(gcf,['D:','.png']) saveas(gcf,['D:','方法3','.png']) 用saveas命令保存图片。 Matlab提供直接的saveas函数可以将指定figure中的图像或者simulink中的框图进行保存,相当于【文件】中的【另存为】。
saveas的三个参数:
(1)图形句柄,如果图形窗口标题栏是“Figure 3”,则句柄就是3。 (2)文件名。
(3)单引号字符串,指定存储格式。 #### 示例 #### 1
2
3
4
5
6
7figure;
plot(zhxx,-zhxy,'red');
axis equal;
xlabel('x/mm','fontsize',10);
ylabel('y/mm','fontsize',10);
title('模型运动轨迹');
saveas(gcf,[filepath 'T3-A60-P0.050模型运动轨迹' '.png']);
说明
imwrite(A,filename) 将图像数据 A 写入 filename 指定的文件,并从扩展名推断出文件格式。 imwrite(A,map,filename) 将 A 中的索引图像及其关联的颜色图写入由 map filename 指定的文件。 imwrite(---,fmt) 以 fmt 指定的格式写入图像。 imwrite(---,Name,Value) 使用一个或多个名称-值对组参数,以指定 GIF、HDF、JPEG、PBM、PGM、PNG、PPM 和 TIFF 文件输出的其他参数。
示例
1 | I=getimage(gcf); % 获取坐标系中的图像文件数据 |
printf
语法
print(图形句柄,存储格式,文件名);
说明
- 图形句柄,如果图形窗口标题栏是“Figure 3”,则句柄就是3。用gcf可以获取当前窗口句柄。
- 指定存储格式。常用的有:
- png格式:‚-dpng (推荐这一种,与bmp格式一样清晰,文件也不大)
- jpeg: ‚-djpeg(文件小,较清晰)
- tiff: ‚-dtiff
- bmp: ‚-dbitmap(清晰,文件极大)
- gif: ‚-dgif(文件小但不清晰)
示例
1 | % print(figure_handle,fileformat,filename) |
图像分辨率
1 | clc;clf |
参考资料: MATLAB文档:imwrite将图像写入图形文件 MATLAB文档:saveas将图窗保存为特定文件格式 matlab 保存figure中的图像 matlab 保存图像分辨率改变问题(saveas、imwrite、print)
最后,附上我的总处理代码,作为备份使用。 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124clear;
clc;
filepath='F:\实验记录\20190117\T3-A60-P0.05-02\';%文件夹的路径
for i=1584:1:1910% 可控制读入的文件的个数
fid=load([filepath 'T3-A60-P0.050zhongxin' num2str(i) '.dat']);
%此处为处理过程
k=(i-1583)/1;% 注意修改数字
zhxx(k)=fid(:,1)*1.3889;% 由于在PCC中测量得1.389mm/pix
zhxy(k)=fid(:,2)*1.3889;
nowdeg(k)=fid(:,3);
end
% area1=10*ones(length(zhxx),1);
% scatter(zhxx,-zhxy,area1,'.','red');
% 将入水点设为原点
chux=zhxx(1);
chuy=zhxy(1);
for i=1:length(zhxx)
zhxx(i)=zhxx(i)-chux;
zhxy(i)=zhxy(i)-chuy;
end
figure;
plot(zhxx,-zhxy,'red');
axis equal;
xlabel('x/mm','fontsize',10);
ylabel('y/mm','fontsize',10);
title('模型运动轨迹');
saveas(gcf,[filepath 'T3-A60-P0.050模型运动轨迹' '.png']);
fid = fopen([filepath 'T3-A60-P0.050模型运动轨迹' '.txt'],'wt');
fprintf(fid,' X轴(mm) Y轴(mm) \n');
for n = 1:length(zhxx)
fprintf(fid,'%10.4f %10.4f \n',zhxx(n),zhxy(n));
end
fclose(fid);
% 求模型的速度
for i=1:length(zhxx)-2
a1x=zhxx(i);
a1y=zhxy(i);
a2x=zhxx(i+2);
a2y=zhxy(i+2);
dis=sqrt((a1x-a2x)^2 + (a1y-a2y)^2);
v(i)=dis/0.001;% 速度单位mm/s
mv(i)=v(i)/1000;% 速度单位m/s
end
for i=1:length(mv)
tim(i)=i*0.5;%每帧间隔0.5ms
end
for k=1:length(nowdeg)
tim1(k)=k*0.5;%每帧间隔0.5ms
end
% 速度随时间的变化
figure;
plot(tim,mv,'r.');
xlabel('T(ms)','fontsize',10);
ylabel('V(m/s)','fontsize',10);
title('速度随时间的变化');
fid = fopen([filepath 'T3-A60-P0.050模型速度随时间的变化' '.txt'],'wt');
fprintf(fid,' T(ms) V(m/s) \n');
for n = 1:length(tim)
fprintf(fid,'%10.4f %10.4f \n',tim(n),mv(n));
end
fclose(fid);
hold on
p = polyfit(tim,mv,1);
mv1=polyval(p,tim);
plot(tim,mv1);
saveas(gcf,[filepath 'T3-A60-P0.050模型速度随时间的变化' '.png']);
% 角度随时间的变化
figure;
plot(tim1,nowdeg,'.');
xlabel('T(ms)','fontsize',10);
ylabel('theta(deg)','fontsize',10);
title('角度随时间的变化');
fid = fopen([filepath 'T3-A60-P0.050模型角度随时间的变化' '.txt'],'wt');
fprintf(fid,' T(ms) theta(deg) \n');
for n = 1:length(tim)
fprintf(fid,'%10.4f %10.4f \n',tim1(n),nowdeg(n));
end
fclose(fid);
hold on
p = polyfit(tim1,nowdeg,2);
nowdeg1=polyval(p,tim1);
plot(tim1,nowdeg1,'r');
saveas(gcf,[filepath 'T3-A60-P0.050模型角度随时间的变化' '.png']);
for i=1:length(nowdeg)-2
a1x=nowdeg(i);
a2x=nowdeg(i+2);
dega(i)=(a2x-a1x)/0.001;% 角速度单位deg/s
end
for j=1:length(dega)
tim2(j)=j*0.5;%每帧间隔0.5ms
end
% 角速度随时间的变化
figure;
plot(tim2,dega,'.');
xlabel('T(ms)','fontsize',10);
ylabel('w(deg/s)','fontsize',10);
title('角速度随时间的变化');
fid = fopen([filepath 'T3-A60-P0.050模型角速度随时间的变化' '.txt'],'wt');
fprintf(fid,' T(ms) w(deg/s) \n');
for n = 1:length(tim)
fprintf(fid,'%10.4f %10.4f \n',tim2(n),dega(n));
end
fclose(fid);
hold on
p = polyfit(tim2,dega,1);
dega1=polyval(p,tim2);
plot(tim2,dega1,'r');
saveas(gcf,[filepath 'T3-A60-P0.050模型角速度随时间的变化' '.png']);