您的代碼
imagesc(fftout2);
figure(gcf);
saveas(gcf,[pwdpath '\Image\' ClassName '\',WavClass(WavClassIndex).name '.jpg'], 'jpg');
或
print -djpeg 'FIG1.jpg';
保存MATLAB數字,因爲它呈現在屏幕上用斧頭,刻度標記,標題等
但這個代碼
imwrite(fftout2,'File.jpg');
將純圖像數據寫入文件。 兩種方式都是正確的,取決於你的目標是什麼。
EDIT1
由@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),這是從屏幕的DPI分辨率(96 dpi)的MATLAB保存在根對象不同(請參閱get(0)
)
最好使用'fullfile'命令來定義文件名和路徑而不是'[pwdPath'\ Image'...'。 'fullfile'是操作系統onsensitve,並且使跨平臺移植代碼變得更加容易。 – Shai