信号与系统:吉布斯现象的验证,傅里叶级数

 

请问,MATLAB的代码用什么格式才不会和下面一样乱???

 

信号与系统实验

 

1.谐波的叠加

2.方波的函数逼近

3.吉布斯现象的验证

 

 

题目描述

1.写出由程序

t=-2*pi:0.001:2*pi;

y=sawtooth(0.5*t,1);

plot(t,y)

形成的信号经周期延拓得到的周期信号的时域表达式;手动计算函数的傅里叶系数,再代入方程,用MATLAB编程计算其指数形式的傅里叶系数(计算至11次谐波),画出前11次谐波叠加的波形,了解并指出吉布斯现象。

 

信号波形:
 t1=-2*pi:0.001:2*pi;
y1=sawtooth(0.5*t1,1);
subplot(2,1,1);
plot(t1,y1);


 
周期延拓 :
t2=-8*pi:0.001:8*pi;
y2=sawtooth(0.5*mod(t2,4*pi),1);
subplot(2,1,2);
plot(t2,y2);

谐波叠加:
t=-2*pi:0.001:2*pi;
g=zeros(size(t));
f=zeros(size(t));
for n=-11:11
    g=1j/(n*pi);
    f=f+g*exp(1j*0.5*t*n);
end
y=sawtooth(0.5*t,1);
xlabel('t');
plot(t,y);
hold on;
plot(t,f);
legend('y  原函数','f  谐波叠加波形图');

2. 利用square_wave函数f=,将t从0到4π等间隔取1001个值,输入非负整数n,输出为1001列的行向量,计算f对于不同输入n的输出,我们可以通过调用n=20或更大的函数来测试函数,并绘制波形图,读出 n = 200 时 square_wave 函数生成的波形,观察并记录该波形的参数,如幅度、周期等,用MATLAB的square函数画出一致的波形。

t = linspace(0, 4*pi, 1001);
n = 200;
for t1 = 1 : length(t)
    t2= t(t1);
    k = 1 : n;
    a = sin(t2* (2*k-1));
    b = 2 * k - 1;
    theSum(t1) = sum(a ./ b);
end
plot(t,theSum);
hold on;
f=0.8*square(t);
plot(t,f);
axis([0 4*pi -1 1]);
legend('square-wave','square');

3. 

(1)根据傅里叶级数反推出原函数f(t)的闭合形式;

(2)计算函数f(t)的傅里叶级数的三角形式,与上面的进行对比,观察原函数的傅里叶级数的cos项的系数。画出一些不同N值对应的的波形图,与原函数f(t)波形图进行对比,观察在哪些时刻f(t)与值相差最大,随着,二者的差值是逐渐趋近于一个确定的值还是无穷大,如果是一个确定的值,计算出来它,结合吉布斯现象,画差值与N的波形图。

 

(3)画出一些不同N值对应的的波形图,将其与的波形图进行对比,利用所学的信号与系统和数学知识分析它们不同的原因。画出一些不同N值对应的的波形图,与原函数f(t)波形图进行对比,观察在哪些时刻f(t)与值相差最大,随着,二者的差值是逐渐趋近于一个确定的值还是无穷大,如果是一个确定的值,计算出来它,结合吉布斯现象,画差值与N的波形图。

(4)画出一些不同N值对应的的波形图,将其与的波形图进行对比,利用所学的信号与系统和数学知识分析它们不同的原因。

 

(1)t=-pi:0.001:pi;
y=-pi/2*sawtooth(t);
n=5;
f = zeros(size(t));
for n0=1:n
    f=f+(sin(n0*t))/n0;
end
plot(t,f);
hold on;
plot(t,y);
title(['n=', num2str(n)]);


(3)
t=-pi:0.001:pi;
N=input(‘N=’);
for j=1: N
    f = zeros(size(t));  
    for i=1:j  
        f = f + (sin(i*t))/i;
    end  
    fmax(j) = (max(f)-pi/2)/pi;  
end  
  
figure(1); plot(t, f, 'r');
hold on;  
y=-pi/2*sawtooth(t);
plot(t,y);axis([-4 4 -2 2]) ;
title(['N=', num2str(N)]);
 
figure(2); plot(fmax) ;
legend('(f_{n}-f)/f(max)');
axis([0 200 -0.2 0.15]);
title('吉布斯现象');


(4)

t=-pi:0.001:pi;
N=input(‘N=’);;
F0= zeros(size(t));
for j=1:N
    f = zeros(size(t));  
    for i=1:j  
        f = f + (sin(i*t))/i;
        F0=F0+(sin(i*t))/i;
    end  
end  
F=F0/n;
y=-pi/2*sawtooth(t);
plot(t, f);hold on;
plot(t,y);
plot(t,F) ;title(['n=', num2str(n)]);
legend('f_{N}(t)','sawtooth','F_{N}(t)');

 

 

 

  • 26
    点赞
  • 71
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值