你的代码
imagesc(fftout2);
figure(gcf);
saveas(gcf,[pwdpath '\Image\' ClassName '\',WavClass(WavClassIndex).name '.jpg'], 'jpg');
或者
print -djpeg 'FIG1.jpg';
保存屏幕上显示的 MATLAB 图,其中包含坐标轴、刻度标签、标题等。
但是这段代码
imwrite(fftout2,'File.jpg');
将纯图像数据写入文件。两种方式都是正确的,取决于你的目标是什么。
编辑1
在@chappjc 的回答和他的评论之后,我做了一些测试,似乎所有这些方法都可以调整以提供相同的图像大小,即使是print
具有适当 DPI 设置的功能也是如此。检查此代码
img = rand(100,200,3);
figure; % size is 560 x 420 pixels
imagesc(img);
get(gcf,'Position')
F = getframe(gcf);
size(F.cdata)
[im,map] = frame2im(F);
if isempty(map)
imwrite(im,'SaveAsFig_RGB.png'); % 560 x 420 image
else
imwrite(im,map,'SaveAsFig_WithCMAP.png'); %
end
print(gcf, '-djpeg', 'FIG_000.jpg'); % 1200 x 900 image
print(gcf, '-djpeg','-r70','FIG_070.jpg'); % 560 x 420 image
print(gcf, '-djpeg','-r72','FIG_072.jpg'); % 576 x 432 image
print(gcf, '-djpeg','-r96','FIG_096.jpg'); % 768 x 576 image
get(0,'ScreenPixelsPerInch') % gives 96
有趣的是,为了获得保存图像的大小,我必须设置 70 dpi(Win7 + R2001b),这与 MATLAB 存储在根对象中的屏幕 DPI 分辨率(96 dpi)不同(请参阅get(0)
)