这个使用wavread函数的代码如何在matlab中运行?

时间:2015-06-14 16:35:00

标签: matlab

我从另一个问题中理解这段代码时遇到了一些问题(我不能对这个答案发表评论,因为我是新人,而且我没有足够的声誉)。

代码是这样的:

[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');

1 个答案:

答案 0 :(得分:1)

第二行代码是提取歌曲时间序列的样本,其长度是采样频率的10倍,单位是赫兹。

首先应使用

检查歌曲的长度,检查歌曲中是否有足够的样本
  

songlength = numel(song)/ fs

如果样本频率不足10倍,请使用较短的乘数。

然后在该样本上计算频谱图,而不是整首歌曲。

您需要查阅有关频谱图的Matlab文档,以选择呼叫选项以实现有用的信号处理目标,具体取决于您要执行的操作。