采用有限项级数逼近偶对称周期三角信号.这段matlab代码为什么有错
来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/11/15 16:12:36
采用有限项级数逼近偶对称周期三角信号.这段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项级数');
就是体现不出来逼近的效果.求高手指教代码错误
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]);
要注意你的采样间隔
只是增加循环并不能是真正计算出曲线
因为项数越多,信号的频率越高
那么采样频率就要相应的增加
根据奈奎斯特采样定理,采样频率最小不能低于信号最高频率的两倍
也就是每个周期起码采两个以上的点
结合你的函数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]);
要注意你的采样间隔
只是增加循环并不能是真正计算出曲线
因为项数越多,信号的频率越高
那么采样频率就要相应的增加
根据奈奎斯特采样定理,采样频率最小不能低于信号最高频率的两倍
也就是每个周期起码采两个以上的点
为什么连续周期信号的傅里叶级数是无限项级数,而离散周期信号的傅里叶级数却是有限项级数?
求matlab周期三角波信号频谱分析的代码,能画出三角波信号、幅度谱和相位谱.
周期偶信号的傅里叶级数不会含有什么项
Matlab 用数值方法近似计算三角波信号的频谱,代码有问题,
5行代码,用matlab绘制三角正弦的泰勒级数图像
MATLAB 这段代码正确吗
这段matlab代码的结果是什么?
为什么傅里叶级数只能用于 连续周期信号呢
周期信号展开,傅里叶级数
利用MATLAB实现周期信号的傅立叶级数分解与综合.利用MATLAB求解周期矩形脉冲傅立
MATLAB三角波信号问题
这段MATLAB代码有没有错误,为什么总是不能运行?