1.4 練習:週期方波的頻譜
傅立葉級數的三角函式展開式和復指數展開式很重要,想掌握公式還是得練幾道題,本篇就拿週期
方波
來試試手,順便提一些“術語”。
※ 主要參考《機械工程測試技術》(孫紅春等主編) 機械工業出版社 ※
三角函式展開式
※ 傅立葉級數的三角函式展開式 ※
利用三角函式的一個公式:
其中,
用此公式,將求和符號中的同一頻率下的三角函式都轉變成
,傅立葉級數變成了:
其中,
,
,
的諧波(理解為正弦, sin)稱為基波;其他的諧波稱為
次諧波;
稱為
次諧波的
幅值
,
稱為
次諧波的
初相位
。
為了更直觀地表示一個訊號的頻率成分,均以圓頻率
為橫座標,以幅值An為縱座標作
幅值譜
,以初相位
為縱座標作
相位譜
;這兩個圖一起稱為
頻譜
。
都是整數,畫出來的頻譜是離散的,一根一根的線。
現在把方波帶入求解。
首先觀察函式:
① 方波的週期是
,所以
,
;
② 方波是奇函式。
在對稱積分割槽間下,奇函式的積分結果為0,偶函式的積分結果等於它在整個區間的一半上積分的2倍;
並且兩奇函式相乘為偶函式,奇函式和偶函式相乘為奇函式;
所以
和
的值都是0:
,
。
帶入公式求幅值和初相位:
※ 頻譜圖 ※
非常清晰地看出不同諧波成分的幅值和初相位。
隨著頻率增加,幅值下降;可以看出,高次諧波的幅值幾乎為0了,所以在精度範圍內,可以適當捨去高次諧波。
這裡就畫出前20次諧波。
在網上找到一張很有意思的圖,書本上有類似的圖,我當時的感測器技術老師也拿類似的圖當群頭像。
如有來源,請聯絡指明
這張圖上的數值不是很準,時域影象的縱座標數值應該寫錯了。因為相位譜都是0,所以頻譜就只畫出了幅值譜。
時域影象不是完全的週期方波,畢竟這只是前20項的疊加結果,無窮項能完全逼近週期方波。
你注意到了嗎?頻譜就是函式的
頻域
描述,在此之前,我們一直都只是在
時域
內研究函式。
恭喜你!ψ(`∇´)ψ多了一個看待函式的角度。
但是你現在還只能得到週期函式的頻域,因為傅立葉級數分析的就是滿足狄利克雷條件的週期函式。至於非週期函式,交給以後的
傅立葉變換
吧。
下面回到主題,接著整復指數展開式。
復指數展開式
※ 傅立葉級數的復指數展開式 ※
是複變函式,可以由尤拉公式轉變為復指數形式:
其中,
幅值
和
相位
為:
,
需要注意的是,這裡的相位和上一節三角函式展開式的初相位是不一樣的!雖然這裡符號一樣,但是值是不一樣的。(有些書上為了區分兩者,符號不一樣)
之前由
三角函式展開式
推導
復指數展開式
的過程中,兩者有這樣一個聯絡:
所以,復指數展開式中的相位為:
現在帶入週期方波求解。
首先觀察函式
:
① 方波的週期是
,所以
,
;
② 方波是奇函式。
由於是奇函式,對稱區間上積分後
等於0:
。
算出幅值和相位,畫出頻譜圖:
※ 頻譜圖 ※
三角展開式的頻譜叫“單邊譜”。
復指數展開式的頻譜叫“雙邊譜”。
兩者沒有好壞之分,並且幅值單邊譜和幅值雙邊譜還有聯絡:
如果只取幅值雙邊譜右半部分,再取絕對值,乘2倍,就是幅值單邊譜。
(
處有
)
肯定有人和我當初一樣有個疑惑:頻率
能為
負數
嗎??
如果只是以實數的角度來說,確實很難理解,頻率不可能為負數。我認為,這裡應該把正負理解為“方向”,復指數的方向,可以想想之前把復指數視覺化的文章。
而真正的頻率是正負號後面的數字,即其絕對值。
其實他沒有什麼實際意義,理解為“方向”也只是我自己這麼想。
總結
頻譜圖能非常直觀地呈現各個諧波成分的幅值和相位。
利用傅立葉級數,我們可以得到一般週期函式(滿足狄利克雷條件)的頻譜。
至於非週期函式的頻譜(傅立葉變換),且聽下回分解。
程式碼(Matlab)
% 第一個圖
clear
clc
T1
=
1
;
T2
=
2
;
T3
=
4
/
5
;
T4
=
4
/
7
;
T0
=
2
*
pi
;
% 週期 如果是相加項 取所有周期分子的公約數 再乘pi
omiga
=
2
*
pi
/
T0
;
fsin
=@(
n
,
t
)
sin
(
n
*
omiga
*
t
)
。*
square
(
t
);
fcos
=@(
n
,
t
)
cos
(
n
*
omiga
*
t
)
。*
square
(
t
);
N
=
20
;
Fsin
=
zeros
(
1
,
N
+
1
);
Fcos
=
zeros
(
1
,
N
+
1
);
for
n
=
1
:
N
Fsin
(
n
)=
quad
(@(
t
)
fsin
(
n
,
t
),
-
T0
/
2
,
T0
/
2
,
1e-9
)
/
T0
*
2
;
Fcos
(
n
)=
quad
(@(
t
)
fcos
(
n
,
t
),
-
T0
/
2
,
T0
/
2
,
1e-9
)
/
T0
*
2
;
end
n
=
0
;
a0
=
quad
(@(
t
)
fcos
(
n
,
t
),
-
T0
/
2
,
T0
/
2
,
1e-9
)
/
T0
;
% 把極小值弄為0
Fcos
(
Fcos
<
0。01
)=
0
;
Fsin
(
Fsin
<
0。01
)=
0
;
subplot
(
211
),
stem
((
1
:
N
+
1
)
。*
omiga
,
Fcos
);
title
(
‘an’
);
grid
on
ylim
([
-
1
,
1
])
% 設定幅值顯示範圍
xlabel
(
‘n’
)
ylabel
(
‘幅值’
)
subplot
(
212
),
stem
((
1
:
N
+
1
)
。*
omiga
,
Fsin
);
title
(
‘bn’
);
grid
on
ylim
([
-
1
,
1
])
% 設定幅值顯示範圍
xlabel
(
‘n’
)
ylabel
(
‘幅值’
)
figure
subplot
(
211
);
stem
((
1
:
N
+
1
)
。*
omiga
,
sqrt
(
Fcos
。^
2
+
Fsin
。^
2
));
grid
on
title
(
‘幅值譜’
,
‘fontsize’
,
13
);
xlabel
(
‘\omega’
,
‘fontsize’
,
12
);
ylabel
(
‘A_n’
,
‘fontsize’
,
12
)
subplot
(
212
);
phi
=
atan
(
Fcos
。/
Fsin
);
phi
(
isnan
(
phi
))=
0
;
% bn為0時 算出來NaN無效值 這一步去除無效值
stem
((
1
:
N
+
1
)
。*
omiga
,
phi
);
grid
on
ylim
([
-
pi
pi
])
xlim
([
0
25
])
title
(
‘相位譜’
,
‘fontsize’
,
13
)
xlabel
(
‘\omega’
,
‘fontsize’
,
12
);
ylabel
(
‘\phi_n’
,
‘fontsize’
,
12
)
% 第二個圖
clear
clc
T1
=
1
;
T2
=
2
;
T3
=
4
/
5
;
T4
=
4
/
7
;
T0
=
2
*
pi
;
% 週期 如果是相加項 取所有周期分子的公約數 再乘pi
omiga
=
2
*
pi
/
T0
;
cn
=
@(
n
,
t
)
exp
(
-
1
i
*
n
*
omiga
*
t
)
。*
square
(
t
);
N
=
20
;
Cn
=
zeros
(
1
,
2
*
N
+
1
);
for
n
=
-
N
:
N
Cn
(
n
+
N
+
1
)
=
quad
(@(
t
)
cn
(
n
,
t
),
-
T0
/
2
,
T0
/
2
,
1e-9
)
/
T0
;
end
n
=
0
;
c0
=
quad
(@(
t
)
cn
(
n
,
t
),
-
T0
/
2
,
T0
/
2
,
1e-9
)
/
T0
;
% % 把極小值弄為0
% Fcos(Fcos<0。01)=0;
% Fsin(Fsin<0。01)=0;
figure
subplot
(
211
);
stem
((
-
N
:
N
)
。*
omiga
,
abs
(
Cn
));
grid
on
title
(
‘幅值譜’
,
‘fontsize’
,
13
);
xlabel
(
‘\omega’
,
‘fontsize’
,
12
);
ylabel
(
‘|c_n|’
,
‘fontsize’
,
12
);
ylim
([
0
,
0。67
])
subplot
(
212
);
stem
((
-
N
:
N
)
。*
omiga
,
angle
(
Cn
));
grid
on
ylim
([
-
pi
pi
])
title
(
‘相位譜’
,
‘fontsize’
,
13
)
xlabel
(
‘\omega’
,
‘fontsize’
,
12
);
ylabel
(
‘\phi_n’
,
‘fontsize’
,
12
)