Store spectrogram with image data format in the MATLAB workspace

7 vues (au cours des 30 derniers jours)
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

Réponse acceptée

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

Plus de réponses (1)

yanqi liu
yanqi liu le 4 Jan 2022
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

Produits


Version

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by