我试图通过matlab使用默认函数生成DTMF音调,对于按钮5,可以说,根本没有运气。代码是:
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);
你可以提出建议吗?
更好地解释:
答案 0 :(得分:2)
我对你的代码有点困惑,因为我更喜欢用另一种方式说明。正如@Daniel所说,问题是使用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 :(得分: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);
结果的微小差异是因为第二种情况下的常数omega四舍五入为四位数。现在有了解决方案我意识到这只是你问题中遗漏的一个简单信息,n
是一个包含自然数的向量。