2016-03-01 80 views
0

我想通過matlab生成使用默認函數的DTMF音調,對於按鈕5說,沒有運氣。代碼是:matlab - 音發生器

button5= sin(0.5906*n)+sin(1.0247*n); This line of code is obligated. 

n=linspace (-1, 1, 1000); 
Fs = 8192; 
button5 = sin(0.5906*n)+sin(1.0247*n); 
sound(button5, Fs); 

你能否提供一些建議?

爲了解釋更好:

  1. 這對按鈕和按鈕5的一般性代碼表矩陣爲:D5 [N] = SIN(0.5906n)+ SIN(1.0247n)

enter image description here

+0

你爲什麼說這條線是錯的? – dubafek

+0

你經常瞄準什麼?它似乎產生了一個遠低於人類範圍的音調。 – Daniel

+0

@Daniel頻率很好,在這種情況下,所需的是770Hz和1336Hz。我也在Matlab中測試它,它聽起來。 – dubafek

回答

1

嘗試的數目的一些組合,我意識到Ω是預先計算的2*pi*f/FS其中f是頻率。

這裏是一個版本,只是從dubafek改寫答案代入一些變量:

f=[770 1336]; 
Fs = 8192; 
n = [0:10000]; 
omega=2.*pi.*f./Fs; 
button5 = sin(omega(1)*n)+sin(omega(2)*n); 
button5=button5/max(button5(:)); 
sound(button5, Fs); 

其中,用常數取代歐米茄導致:

Fs = 8192; 
n = [0:10000]; 
button5 = sin(0.5906*n)+sin(1.0247*n); 
button5=button5/max(button5(:)); 
sound(button5, Fs); 

在結果的微小差異是因爲第二種情況下的恆定歐米茄四捨五入爲四位數。現在有了解決方案,我意識到這只是一個簡單的信息在你的問題中缺失,n是一個包含自然數的向量。

2

我對你的代碼的事業有點困惑我寧願狀態,它的另一種方式。正如@丹尼爾所說,問題是使用1000個樣本來標準化頻率。

此代碼應該工作:

Fs = 8192; 
n = [0:10000]; 
t = n/Fs; 
button5 = sin(2*pi*770*t)+sin(2*pi*1336*t); 
sound(button5/max(button5) ,Fs) 
+1

你忘了規範。使用'sound(button5/max(button5),Fs)'我注意不到[參考信號]有任何不同(http://www.matthis.thorade.de/mfv/index.php?nummer=5)(選擇一個數字並點擊「Wählen」) – Daniel

+0

您需要添加我的init文章的第一行。這是強制性的。此代碼有效,但通常我沒有frequncies。我有Ω。 –

+0

他不需要爲你做任何事情。你可能會問,但不要求任何東西!他做了一件好工作,讓你瞭解你的不清楚和不完整的問題,並提供了一個很好的答案。解釋這些神奇數字背後的數學,並解釋什麼是歐米茄,你可能會得到一個更好的答案。 – Daniel