matlab - 音调发生器

时间:2016-03-01 22:18:01

标签: matlab dtmf

我试图通过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);

你可以提出建议吗?

更好地解释:

  1. 这是按钮的表格矩阵,按钮5的通用代码是:d5 [n] = sin(0.5906n)+ sin(1.0247n)
  2. enter image description here

2 个答案:

答案 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是一个包含自然数的向量。