2011-10-20 22 views
0

基本的に私は与えられたwaveファイルから新しいwaveファイルを作成する必要がある学校プロジェクトを持っています。この新しい波はMatlabで作成されなければならず、唯一の違いは、正弦波が指定されたwavファイルと混合されることです(末尾に連結されません)。正弦波は500Hzです。これまでMATLAB - さまざまなサンプリング周波数のWAVファイルを組み合わせる

私のコードは次のとおりです。

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

しかし、このコードはnewsignal変数を作成することに失敗しました。問題は、2つの波のサンプリングレートが異なるため、2つの行列のサイズが異なることです。

 797696   2 

     1   18089 

を見て、これらのファイルは、私は44回以上、私は単に罪波から同じサンプルを使用することができます考え出し〜44倍の大きさが異なるよう次のよう

サイズ呼び出しの出力は、与えられたwaveファイルの各サンプルに対してしかし、違いが正確に44ではないので、これがオプションであるかどうかはわかりません。

誰もこの2つのファイルをどのように混合するかに関する提案はありますか?

+0

問題を解決できましたか?もしそうなら、他の人がこの投稿を楽しむことができるように、回答としてマークしてください。 – Xyand

答えて

2

0.002から1/Fsに変更してみてください。そうすれば同じサンプリングレートが得られます。 yのステレオチャンネルの1つだけを選択し、適切なトランスポーズを行う必要があります。

また、それは、時間パラメータではなく、サンプリング周波数を表しているようSINETか何かに名前をsinefsを変更することを検討することがあります。

+0

それを感謝します..私が何かを見落としてしまったか分かりません> – Nedlinin