why doesnt it work
显示 更早的评论
function x = ss_dtmf(number,dt,nd,np)
nl = length(number);
x = [];
t = 0:1:nd;
t = t*dt;
tp = 0:1:np;
xp = zeros(1,length(tp));
for i=1:nl
xi = ss_dtmf1(number(i),t);
x = [x,xi];
x = [x,xp];
end
end
5 个评论
Cris LaPierre
2022-1-18
Share the complete error message you are getting, as well as the code you use to call the function ss_dtmf.
Also, please share the code for your function ss_dtmf1.
raad abzakh
2022-1-18
Walter Roberson
2022-1-18
The line
Function for DTMF:
is not a valid executable line. You need to comment it out.
Cris LaPierre
2022-1-18
Try commenting out your comments so that you can run your code.
Functions must be called, so I'm asking how you are calling your function ss_dtmf? Specifically what are your input values for number, dt, nd, and np?
What error messages are you getting? Please copy and share all the red text.
回答(1 个)
David Hill
2022-1-18
function x = ss_dtmf(number,dt,nd,np)
x=[];
for i=1:length(number)
x = [x,ss_dtmf1(number(i),0:nd:dt),ss_dtmf1(12,0:np:dt)];
end
end
function x = ss_dtmf1(n,t)
f=[941,697,697,697,770,770,770,852,852,852,941,941,0;1336,1209,1336,1477,1209,1336,1477,1209,1336,1477,1209,1477,0];
x=sin(2*pi*f(1,n+1)*t)+sin(2*pi*f(2,n+1)*t);
end
4 个评论
raad abzakh
2022-1-19
David Hill
2022-1-19
nd and np are not defined. What do they mean?
raad abzakh
2022-1-19
David Hill
2022-1-19
This should do exactly what you want.
function x = ss_dtmf(number,dt,nd,np)
x=[];
lt=linspace(0,dt,nd);
lp=linspace(0,dt,np);
for i=1:length(number)
x = [x,ss_dtmf1(number(i),lt),ss_dtmf1(12,lp)];
end
plot(x);
end
function x = ss_dtmf1(n,t)
f=[941,697,697,697,770,770,770,852,852,852,941,941,0;1336,1209,1336,1477,1209,1336,...
1477,1209,1336,1477,1209,1477,0];
x=sin(2*pi*f(1,n+1)*t)+sin(2*pi*f(2,n+1)*t);
end
for example:
x=ss_dtmf([2 0 8 7 3 9 6 1 0 3],.1,1000,50);
类别
在 帮助中心 和 File Exchange 中查找有关 DTMF 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!