連續(xù)信號(hào)在有限區(qū)間上頻譜分析實(shí)例、實(shí)驗(yàn)
上接:連續(xù)信號(hào)(模擬信號(hào))在有限區(qū)間上的傅立葉級(jí)數(shù)展開(kāi),離散頻譜
此文用matlab作下實(shí)驗(yàn)。
實(shí)驗(yàn)一:由簡(jiǎn)諧波疊加起來(lái)的信號(hào)在有限區(qū)間上的傅立葉級(jí)數(shù)展開(kāi),離散頻譜。
實(shí)驗(yàn)信號(hào)為:
我們?nèi)〔煌臅r(shí)間區(qū)間(自變量t變化區(qū)間)對(duì)這個(gè)信號(hào)做頻譜分析。
1.1、 當(dāng)t變化為[2.5, 3.5]時(shí)
這里只是限定區(qū)間的長(zhǎng)度為1,至于區(qū)間端點(diǎn)的取值,是我隨意取得,沒(méi)有限制。畫(huà)圖得到的圖像:
圖 1. [2.5, 3.5]上的信號(hào)
由 上篇 中公式(17)來(lái)求解信號(hào)x(t)在有限區(qū)間[2.5, 3.5]上的離散頻譜c_n,積分采用matlab提供的數(shù)值積分函數(shù)quad()。
如圖2,作出的是離散頻譜n=-50,...,50的離散振幅譜|c_n|。圖3事離散相位譜Arg(c_n),
圖 2,x(t)在[2.5, 3.5]上的離散振幅譜
圖 3, x(t)在[2.5, 3.5]上的離散相位譜
1.2、當(dāng)t變化為[2.5, 3.6]時(shí)
此時(shí),區(qū)間長(zhǎng)度為1.1,圖4、5、6分別給出了使用1.1節(jié)中相同程序作出的原信號(hào)圖,離散振幅譜,離散相位譜。
圖 4、區(qū)間[2.5, 3.6]上的信號(hào)
圖 5、x(t)在[2.5,3.6]上的離散振幅譜
圖 6、x(t)在[2.5, 3.6]上的離散相位譜
對(duì)比圖2和5可以看到,在圖2中,只有頻率為1/T, 和2/T的兩個(gè)簡(jiǎn)諧波的振幅不為零,頻率相同的振幅的和就是原先信號(hào)解析式中相應(yīng)的振幅值。而圖5中并不事這樣的,頻率較小的簡(jiǎn)諧波的振幅越大,隨著頻率的增大,振幅逐漸變小。
實(shí)驗(yàn)中,我們可以看出來(lái),實(shí)際上同一個(gè)信號(hào)在選取不同的時(shí)間長(zhǎng)度后會(huì)得到不同的離散頻譜!區(qū)間長(zhǎng)度決定信號(hào)的離散頻譜!
實(shí)驗(yàn)二:有限區(qū)間上方波信號(hào)的傅立葉級(jí)數(shù)展開(kāi),離散頻譜。
實(shí)驗(yàn)一中用的是正弦信號(hào)的疊加,現(xiàn)在我們使用一般的方波信號(hào),求解他的頻譜。方波信號(hào)的解析形式為:
我們?nèi)=2。將實(shí)驗(yàn)一中的程序中修改區(qū)間參數(shù),以及信號(hào)函數(shù)后,運(yùn)行結(jié)果:
圖 7, 原信號(hào)
圖 8, 信號(hào)振幅譜
圖 9, 信號(hào)相位譜
附程序:
1.1的程序
函數(shù)文件:
function?y?=?fun0001(t) y?=?2.5*sin(2*pi*t?+?pi/3)?+?3.1*sin(6*pi*t?+?pi/4); end
執(zhí)行文件:
clear clc t_s?=?2.5;?%?start?of?the?interval T?=?1.0;???%?length?of?the?interval t_e?=?t_s?+?T;?%?the?end?of?the?interval num_samples?=?1000;?%?number?of?samples t?=?linspace(t_s,?t_e,?num_samples); x?=?fun0001(t); figure;?plot(t,?x,?'LineWidth',2?);?title('signal'); f_0?=?1/T;?%?foundamental?frequency. N?=?50;?%?how?many?frequency?we?want?to?caculate. fn?=?f_0*(1:N); cn?=?zeros(N*2+1,1)*1i?+?zeros(N*2+1,1); for?k?=?1:N ????Fun?=?@(t)(fun0001(t).*exp(-2*pi*fn(k)*t*1i)); ????cn(N+1+k)?=?quad(Fun,?t_s,?t_e); ????Fun?=?@(t)(fun0001(t).*exp(2*pi*fn(k)*t*1i)); ????cn(N+1-k)?=?quad(Fun,?t_s,?t_e); end cn(N+1)?=?quad(@fun0001,?t_s,?t_e); figure;?stem(-N:N,?abs??(cn));?title('amplitude'); figure;?stem(-N:N,?angle(cn));?title('angle');
1.2的程序
函數(shù)文件與1.1相同,只需要將執(zhí)行文件的T的值改成1.1.
實(shí)驗(yàn)二的程序
函數(shù)文件
function?y?=?fun0002(t) y?=?double(~(t0.5)); end
執(zhí)行文件
clear clc t_s?=?-1.0;?%?start?of?the?interval T?=?2.0;???%?length?of?the?interval t_e?=?t_s?+?T;?%?the?end?of?the?interval num_samples?=?1000;?%?number?of?samples t?=?linspace(t_s,?t_e,?num_samples); x?=?fun0002(t); figure;?plot(t,?x,?'LineWidth',2?);?title('signal'); f_0?=?1/T;?%?foundamental?frequency. N?=?50;?%?how?many?frequency?we?want?to?caculate. fn?=?f_0*(1:N); cn?=?zeros(N*2+1,1)*1i?+?zeros(N*2+1,1); for?k?=?1:N ????Fun?=?@(t)(fun0002(t).*exp(-2*pi*fn(k)*t*1i)); ????cn(N+1+k)?=?quad(Fun,?t_s,?t_e); ????Fun?=?@(t)(fun0002(t).*exp(2*pi*fn(k)*t*1i)); ????cn(N+1-k)?=?quad(Fun,?t_s,?t_e); end cn(N+1)?=?quad(@fun0002,?t_s,?t_e); figure;?stem(-N:N,?abs??(cn));?title('amplitude'); figure;?stem(-N:N,?angle(cn));?title('angle');