【问题标题】:save the spectrogram as a mat file将频谱图保存为 mat 文件
【发布时间】:2020-01-20 15:14:08
【问题描述】:

我使用了MATLAB中的spectrogram函数来生成谱图并直接保存为mat文件。然后,我使用相同的 wav 文件和相同的方式生成另一个频谱图。但我先将其保存为 jpg 文件,然后将 jpg 文件保存为 mat 文件。我很困惑为什么两个mat文件中的矩阵大小不同,第一个是147*257 double,第二个是256*256*3 uint8。

%% the first one
[x,fs] = audioread('1.wav')
spectrogram(x, window, L, N, fs);
set(gcf, 'position', [500,500,205,205]);
set(gca, 'Position', [0 0 1 1]);
f = getframe(gcf);
mat = getimage(gcf);
save(['D:\matlab\speech\', strcat(int2str(i)), '.mat'], 'mat', '-v6');

%% the second one
[x,fs] = audioread('1.wav')
spectrogram(x, window, L, N, fs);
set(gcf,'position', [500,500,205,205]);
set(gca,'Position', [0 0 1 1]);
f = getframe(gcf);
mat = getimage(gcf);
imwrite(f.cdata, ['D:\matlab\speech\', int2str(i),'.jpg']); 
img_A = imread(fullfile(file_path, strcat(int2str(i), '.jpg')))
save(['D:\matlab\speech\',strcat(int2str(i)), '.mat'], 'img_A', '-v6');

有人知道为什么会这样吗?如何正确将频谱图存储为 mat 文件?

【问题讨论】:

    标签: matlab spectrogram mat-file


    【解决方案1】:

    f.cdata 矩阵更大,因为它包含了图的边距

    根据getframedocumentation

    获取框架
    将坐标轴或图形捕获为电影帧

    F = getframe(fig) 捕获由 fig 标识的图形。如果要捕获图形窗口的整个内部,包括轴标题、标签和刻度线,请指定一个图形。捕获的影片帧不包括图形菜单和工具栏。

    例子:

    I = imread('peppers.png'); %Matrix size of I: 384 x 512 x 3
    I = im2double(I); %Convert I from uint8 to double (result pixel range is [0, 1]).
    figure;
    imshow(I);
    f = getframe(gcf);
    mat = getimage(gcf); %Matrix size of mat: 384 x 512 x 3 and class(mat) is double.
    fprintf('size(mat) = %d x %d x %d, class(mat) = %s\n', size(mat), class(mat)); % 384 x 512 x 3, class is double
    fprintf('size(f.cdata) = %d x %d x %d, class(f.cdata) = %s\n', size(f.cdata), class(f.cdata)); % 479 x 664 x 3 (include margins), class is uint8.
    figure;
    imshow(f.cdata);
    
    imwrite(mat, 'mat.jpg'); % 384 x 512 x 3 (double)
    imwrite(f.cdata, 'f_cdata.jpg'); % 479 x 664 x 3 (uint8)
    

    mat:

    f.cdata:

    如您所见,f.cdata 的大小比mat 大,因为图形的边距。
    在您的情况下,mat 频谱图图像数据类型为doublef.cdata(“帧图像”)类型为uint8

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-17
      • 1970-01-01
      • 2019-11-05
      • 1970-01-01
      • 1970-01-01
      • 2022-06-27
      • 2019-02-25
      • 1970-01-01
      相关资源
      最近更新 更多