作业帮 > 综合 > 作业

采用有限项级数逼近偶对称周期三角信号.这段matlab代码为什么有错

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/11/09 10:26:57
采用有限项级数逼近偶对称周期三角信号.这段matlab代码为什么有错
就是体现不出来逼近的效果.求高手指教代码错误
A=5;
ya=0;yb=0;yc=0;yd=0;ye=0;yf=0;
f=50;
w=2*pi*f;
t=0:0.05:1;
for i=1:2
ya=ya+4*A*cos((2*i-1)*w*t)/((2*i-1)*(2*i-1)*pi*pi);
end
ya=ya+A/2;
for i=1:5
yb=yb+4*A*cos((2*i-1)*w*t)/((2*i-1)*(2*i-1)*pi*pi);
end
yb=yb+A/2;
for i=1:10
yc=yc+4*A*cos((2*i-1)*w*t)/((2*i-1)*(2*i-1)*pi*pi);
end
yc=yc+A/2;
for i=1:50
yd=yd+4*A*cos((2*i-1)*w*t)/((2*i-1)*(2*i-1)*pi*pi);
end
yd=yd+A/2;
for i=1:100
ye=ye+4*A*cos((2*i-1)*w*t)/((2*i-1)*(2*i-1)*pi*pi);
end
ye=ye+A/2;
subplot(321);plot(t,ya);grid;xlabel('time');ylabel('前2项级数');
subplot(322);plot(t,yb);grid;xlabel('time');ylabel('前5项级数');
subplot(323);plot(t,yc);grid;xlabel('time');ylabel('前10项级数');
subplot(324);plot(t,yd);grid;xlabel('time');ylabel('前50项级数');
subplot(325);plot(t,ye);grid;xlabel('time');ylabel('前100项级数');
你的采样点太少,所以看上去都一样
结合你的函数f=50,周期是0.02
所以时间的范围不用太大两个周期就是0.04就够了

而如果计算前n项,频率最高到达(2n-1)f~2nf
例如计算10项,最高信号频率约1000,如果给每个周期留个10个采样点
那么采样频率要达到10000,也就是采样间隔是0.0001

这样t=0:0.0001:0.02,只用比较到前10项就好了

A=5;
ya=0;yb=0;yc=0;
f=50;
w=2*pi*f;
t=0:0.0001:0.04;
for i=1:2
ya=ya+4*A*cos((2*i-1)*w*t)/((2*i-1)*(2*i-1)*pi*pi);
end
ya=ya+A/2;
for i=1:5
yb=yb+4*A*cos((2*i-1)*w*t)/((2*i-1)*(2*i-1)*pi*pi);
end
yb=yb+A/2;
for i=1:10
yc=yc+4*A*cos((2*i-1)*w*t)/((2*i-1)*(2*i-1)*pi*pi);
end
yc=yc+A/2;

subplot(311);plot(t,ya);grid;xlabel('time');ylabel('前2项级数');set(gca,'YLim',[0 5]);
subplot(312);plot(t,yb);grid;xlabel('time');ylabel('前5项级数');set(gca,'YLim',[0 5]);
subplot(313);plot(t,yc);grid;xlabel('time');ylabel('前10项级数');set(gca,'YLim',[0 5]);


要注意你的采样间隔
只是增加循环并不能是真正计算出曲线
因为项数越多,信号的频率越高
那么采样频率就要相应的增加
根据奈奎斯特采样定理,采样频率最小不能低于信号最高频率的两倍
也就是每个周期起码采两个以上的点