基本上我有一个学校项目,我必须从给定的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,我不知道这是否是一种选择。
有没有人对如何混合这两个文件有什么建议?
答案 0 :(得分:2)
尝试将0.002更改为1 / F.这样你就可以获得相同的采样率。您还应该只为 y 选择一个立体声通道并进行适当的转置。
您也可以考虑将名称 sinefs 更改为 sinet 或其他内容,因为它代表的是时间参数,而不是采样频率。