MATLAB - 混合不同采样频率的wav文件

时间:2011-10-20 22:17:11

标签: matlab wav

基本上我有一个学校项目,我必须从给定的wave文件创建一个新的wave文件。这个新波必须在Matlab中创建,唯一的区别是正弦波与给定的wav文件混合(不连接到末尾......)。正弦波为500hz。

到目前为止我的代码是:

clear;
filename = 'C:\Documents and Settings\cmh0007\My Documents\rofl.wav';

[y, Fs, nbits, readinfo] = wavread(filename);
duration = numel(y) / Fs;

sinefs = 0:0.002:duration;
sinwave = 0.5*sin(2*pi*sinefs);

disp(size(y));
disp(size(sinwave));

newsignal = y + sinwave;

subplot(2,2,1), plot(y), title('Entire waveform');
subplot(2,2,3), plot(sinwave), title('sine waveform');
subplot(2,2,2), plot(newsignal), title('added waveform');

但是,此代码无法创建新闻信号变量。问题在于两个矩阵的大小不同,因为两个波之间的采样率不同。

大小调用的输出如下:

     797696           2

       1           18089

看到这些文件的大小差异大约为44倍,我想我可以简单地使用来自sin波的相同样本44次给定波形文件的每个样本。但是,由于差异不完全是44,我不知道这是否是一种选择。

有没有人对如何混合这两个文件有什么建议?

1 个答案:

答案 0 :(得分:2)

尝试将0.002更改为1 / F.这样你就可以获得相同的采样率。您还应该只为 y 选择一个立体声通道并进行适当的转置。

您也可以考虑将名称 sinefs 更改为 sinet 或其他内容,因为它代表的是时间参数,而不是采样频率。