吉布斯现象的matlab代码实现
第一题: 代码 clear; close all; clc; t = -2:0.01:2; T = [15,25,51,101]; for k = 1:length(T) a=0; for n = 1:2:T(k) b=exp(1i*n*pi*t)/n; a=a+b; end y=2*a/(1j*pi); x=0.5*square(pi*t); figure; p=plot(t,real(y),t,x); axis([-2,2,-0.8,0.8]); set(gca, XTick ,-2:1:2) set(gca, YTick ,-0.8:0.4:0.8) set(gca, XTickLabel ,{ -2 , -1 , 0 , 1 , 2 }) set(gca, YTickLabel ,{ -0.8 , -0.4 , 0 , 0.4 , 0.8 }) xlabel( 自变量 ) ylabel( 函数值 ) titlemsg=sprintf( 吉布斯现象N=%d的合成波形 ,T(k)); title(titlemsg) text(0,-0.5, \leftarrow 方波函数 , HorizontalAlignment , left ) set(gcf, Color , w ) %hold on End 其次题 代码 clear; close all; clc; t = -2:0.01:2; T = [15,25,51,101]; for k = 1:length(T) a=0; for n = 1:2:T(k) b=exp(1i*n*pi*t)/n; a=a+b; end y=2*a/(1j*pi); x=0.5*square(pi*t); %figure; if (k==1) p=plot(t,real(y), c ,t,x, k ); elseif (k==2) p=plot(t,real(y), m ,t,x, k ); elseif (k==3) p=plot(t,real(y), r ,t,x, k ); elseif (k==4) p=plot(t,real(y), b ,t,x, k ); end axis([-2,2,-0.8,0.8]); set(gca, XTick ,-2:1:2) set(gca, YTick ,-0.8:0.4:0.8) set(gca, XTickLabel ,{ -2 , -1 , 0 , 1 , 2 }) set(gca, YTickLabel ,{ -0.8 , -0.4 , 0 , 0.4 , 0.8 }) xlabel( 自变量 ) ylabel( 函数值 ) titlemsg=sprintf( 吉布斯现象N=%d的合成波形 ,T(k)); title(titlemsg) text(0,-0.5, \leftarrow 方波函数 , HorizontalAlignment , left ) set(gcf, Color , w ) hold on End 第三题 1、 傅里叶级数随着N增加,其合成的波形就就越接近方波 2、 随着N增加,波动就越向边缘点压缩靠近 3、 当选取的项数越多,在所合成的波形中出现的峰起越靠近原信号的不连续点 第四题 1、 一次谐波角频率2rad/s,三次6rad/s,五次10rad/s 2、 一次谐波的系数是4/π,三次谐波的系数是4/3π,五次谐波的系数是4/5π 3、 N次谐波的系数是4/nπ 7 / 7