我从另一个问题中理解这段代码时遇到了一些问题(我不能对这个答案发表评论,因为我是新人,而且我没有足够的声誉)。
代码是这样的:
[song, fs] = wavread('C:\Path of My File\song.wav');
song = song(1:fs*10);
spectrogram(song, windowSize, windowOverlap, freqRange, fs, 'yaxis');
我不知道第二行代码是做什么的。有人可以解释一下吗?它会影响频谱图的输出吗?
我的代码是:
[song, fs] = wavread('C:\Users\Iván\Downloads\Kawai-K3-Strings-C5.wav');
song = song(1:fs*5); //(first this line was ...(1:fs*10) but didnt work. why? i would like to know.
spectrogram(song, 256, [], [], fs, 'xaxis');
答案 0 :(得分:1)
第二行代码是提取歌曲时间序列的样本,其长度是采样频率的10倍,单位是赫兹。
首先应使用
检查歌曲的长度,检查歌曲中是否有足够的样本songlength = numel(song)/ fs
如果样本频率不足10倍,请使用较短的乘数。
然后在该样本上计算频谱图,而不是整首歌曲。
您需要查阅有关频谱图的Matlab文档,以选择呼叫选项以实现有用的信号处理目标,具体取决于您要执行的操作。