Matlab 用数值方法近似计算三角波信号的频谱,代码有问题,求大神指教
题目是:试用数值方法近似计算三角波信号的频谱图示三角波可表示为:f1(t)=(1-|t|)[u(t+1)-u(t-1)]三角波信号频谱的理论值为:F(jw)=Sa...
题目是:
试用数值方法近似计算三角波信号的频谱
图示三角波可表示为:f1(t)=(1-|t|)[u(t+1)-u(t-1)]
三角波信号频谱的理论值为:F(jw)=Sa²(w/2)
答案是:
function y=sf1(t,w);
y=(t>=1&t<=1).*(1-abs(t)).*exp(j*w*t);
w=linspace(-6*pi,6*pi,512);
N=length(w);F=zeros(1,N);
for k=1:N
F(k)=quad('sf1',-1,1,[],[],w(k));
end
figure(1);
plot(w,real(F));
xlable('\omega');
ylabel('F(j\omega)');
figure(2);
plot(w,real(F)-sinc(w/2/pi).^2);
xlabel('\omega');
title('计算误差');
但是这个答案里有三个错误。一个错误是虚数j貌似前面要加个系数1?另一个错误是第一句最后不用加分号?还有个错误是运行下来提示:
>> sf1
Error using sf1 (line 2)
Not enough input arguments.
这个要怎么改啊??求指教,谢谢! 展开
试用数值方法近似计算三角波信号的频谱
图示三角波可表示为:f1(t)=(1-|t|)[u(t+1)-u(t-1)]
三角波信号频谱的理论值为:F(jw)=Sa²(w/2)
答案是:
function y=sf1(t,w);
y=(t>=1&t<=1).*(1-abs(t)).*exp(j*w*t);
w=linspace(-6*pi,6*pi,512);
N=length(w);F=zeros(1,N);
for k=1:N
F(k)=quad('sf1',-1,1,[],[],w(k));
end
figure(1);
plot(w,real(F));
xlable('\omega');
ylabel('F(j\omega)');
figure(2);
plot(w,real(F)-sinc(w/2/pi).^2);
xlabel('\omega');
title('计算误差');
但是这个答案里有三个错误。一个错误是虚数j貌似前面要加个系数1?另一个错误是第一句最后不用加分号?还有个错误是运行下来提示:
>> sf1
Error using sf1 (line 2)
Not enough input arguments.
这个要怎么改啊??求指教,谢谢! 展开
1个回答
展开全部
function y=sf1(t,w);
y=(t>=1&t<=1).*(1-abs(t)).*exp(j*w*t);
这两句要做成 函数,放m文件里
改:y=(t>=-1&t<=1)
其他放命令窗中
w=linspace(-6*pi,6*pi,512);
N=length(w);F=zeros(1,N);
for k=1:N
F(k)=quad('sf1',-1,1,[],[],w(k));
end
figure(1);
plot(w,real(F));
xlable('\omega');
ylabel('F(j\omega)');
figure(2);
plot(w,real(F)-sinc(w/2/pi).^2);
xlabel('\omega');
title('计算误差');
y=(t>=1&t<=1).*(1-abs(t)).*exp(j*w*t);
这两句要做成 函数,放m文件里
改:y=(t>=-1&t<=1)
其他放命令窗中
w=linspace(-6*pi,6*pi,512);
N=length(w);F=zeros(1,N);
for k=1:N
F(k)=quad('sf1',-1,1,[],[],w(k));
end
figure(1);
plot(w,real(F));
xlable('\omega');
ylabel('F(j\omega)');
figure(2);
plot(w,real(F)-sinc(w/2/pi).^2);
xlabel('\omega');
title('计算误差');
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询