Store spectrogram with image data format in the MATLAB workspace

7 次查看(过去 30 天)
Hi.
I want to analyze spectrograms of multiple audio files in a folder.
Audio files share the word "SPTGRM" in their names.
Audio files are stereo-type and I will take one channel data.
I saved data in the "AudioData" and also saved spectrogram data of these audio files.
I want to store spectrogram image in the cell with image data format (like [512 512 3]).
However, spectrograms are saved in "complex double" matrix like the figure below.
How can I get image data format?
Address = 'C:\Users\KOH\Desktop\MATLABcode\Soundsample';
Directory = dir(fullfile(Address,'SPTGRM*.wav'));
windowSize = 256;
windowOverlap = [];
freqRange = 1000:20000;
for i = 1:numel(Directory)
F = fullfile(Address,Directory(i).name);
[y,Fs] = audioread(F);
endtime = numel(y)/(2*Fs);
t = 1/Fs:1/Fs:endtime;
AudioData{i}=y(:,1);
Spectrogram{i}=spectrogram(AudioData{i}, windowSize, windowOverlap, freqRange, Fs, 'yaxis');
end

采纳的回答

Star Strider
Star Strider 2022-1-4
I would use the saveas function on the created figure to save it to whatever format is desired (and supported).

更多回答(1 个)

yanqi liu
yanqi liu 2022-1-4
Address = 'C:\Users\KOH\Desktop\MATLABcode\Soundsample';
Directory = dir(fullfile(Address,'SPTGRM*.wav'));
windowSize = 256;
windowOverlap = [];
freqRange = 1000:20000;
for i = 1:numel(Directory)
F = fullfile(Address,Directory(i).name);
[y,Fs] = audioread(F);
endtime = numel(y)/(2*Fs);
t = 1/Fs:1/Fs:endtime;
AudioData{i}=y(:,1);
data=spectrogram(AudioData{i}, windowSize, windowOverlap, freqRange, Fs, 'yaxis');
Spectrogram{i} = im2uint8(mat2gray(abs(data)));
end

产品


版本

R2019b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by