在wav文件的循环中保存频谱图

时间:2013-11-26 04:35:00

标签: matlab matlab-figure spectrogram

我正在尝试生成频谱图,以便我可以将它们与以后的单词样本进行比较,以进行非常基本的语音识别项目。这是在循环中完成的。代码如下:

folder = '<<my directory path>>';
files = dir(fullfile(folder,'*.wav'));
for k = 1:length(files)
    baseFileName = files(k).name;
    fullFileName = fullfile(folder, baseFileName);
    fprintf(1, 'Now reading %s\n', fullFileName);
    [word, fs] = wavread(fullFileName);
    sound(word, fs);
    figure('visible','off');
    %%fig = figure, specgram(fullFileName, 512, fs);
    %%saveas(fig, baseFileName.fig);
end

我的问题在最后两行。我想将频谱图保存为.fig文件(除非你们后来有更好的建议用于比较),并将其命名为baseFileName。我一直在谷歌搜索一段时间,但格式混乱,光谱图被保存为数字并不多。

如果所有数字都没有在循环中弹出但是我可以处理,我会更喜欢它。

编辑:或许将它存储为matfile会更好吗?

1 个答案:

答案 0 :(得分:0)

这对你有用吗?

for k=1:length(files)
   h=figure
   spectrogram();
   Figname = strcat(baseFileName,'.fig');
   saveas(h,Figname); 
end

对于格式不同于.fig的数字,另一种方法:

fh=figure
for k=1:length(files)
   figure(fh); 
   spectrogram();
   frm = getframe(fh);
   Figname = strcat(baseFileName,'.jpg');
   imwrite(frm.cdata, Figname);
end

不幸的是,当尝试使用此方法保存.fig文件时,它将导致错误“无法确定文件名中的文件格式”。