我假定你的意思是使用resample
而不是reshape
函数。 reshape
用于(好..)重塑一个矩阵,即改变行数和列数。函数resample
可用于更改信号的采样率。您可以使用它来增加/减少WAV文件的播放速度。的resample
的语法是:
y = resample(x,p,q);
其中x
是输入信号,p
是所需的采样率和q
是当前采样率。输出y
然后是输入x
,以原始速率的p/q
倍重采样。
现在我们该如何加倍速度? - 如果我们设置了p=2
和q=1
,我们得到的采样率是采样率的两倍,即我们有两倍的采样率。如果使用相同命令播放WAV,则信号需要两倍的时间才能播放,所以我们将播放速度除以2.
要加倍播放速度,我们必须做相反的操作并设置p=1
和q=2
:
x = wavread('D:\\Sample.wav');
y = resample(x,1,2);
-
由于在编辑的要求,这当然是可以添加的零如在每个第二个位置改变采样率。请注意,这会产生高频噪声,通常通过FIR滤波来消除。然而,过程很简单:
x = x(:).'; % Make x a row vector
y = [x; zeros(1,numel(x))]; % add one zero between elements
y = y(:);
最后一行这里确实神奇:它需要的y
列和堆栈他们彼此上方。由于x
是一行,我们在其下面添加了一行零,所产生的y
将是一行,其中包含x
的所有元素,值之间为零。
当你特别想用reshape
,我们可以做使用重塑相同:
x = x(:).'; % Make x a row vector
y = [x; zeros(1,numel(x))]; % add one zero between elements
y = reshape(y,[],1);
-
要合并两个WAV文件合并成一个,我们可以简单地使用[...]
串联载体符号或cat
函数。
x = wavread('D:\\Sample1.wav');
y = wavread('D:\\Sample2.wav');
z = [x,y];
z = cat(2,x,y);
给我一点时间来看看 –
不,这是重塑蚂蚁不要重新取样 –
我编辑我的问题 –