你的代码
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))