信號與系統:吉布斯現象的驗證,傅里葉級數

信號與系統實驗

 

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)');

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章