連續(xù)信號在有限區(qū)間上頻譜分析實(shí)例、實(shí)驗(yàn)
上接:連續(xù)信號(模擬信號)在有限區(qū)間上的傅立葉級數(shù)展開,離散頻譜
此文用matlab作下實(shí)驗(yàn)。
實(shí)驗(yàn)一:由簡諧波疊加起來的信號在有限區(qū)間上的傅立葉級數(shù)展開,離散頻譜。
實(shí)驗(yàn)信號為:
我們?nèi)〔煌臅r間區(qū)間(自變量t變化區(qū)間)對這個信號做頻譜分析。
1.1、 當(dāng)t變化為[2.5, 3.5]時
這里只是限定區(qū)間的長度為1,至于區(qū)間端點(diǎn)的取值,是我隨意取得,沒有限制。畫圖得到的圖像:
圖 1. [2.5, 3.5]上的信號
由 上篇 中公式(17)來求解信號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]時
此時,區(qū)間長度為1.1,圖4、5、6分別給出了使用1.1節(jié)中相同程序作出的原信號圖,離散振幅譜,離散相位譜。
圖 4、區(qū)間[2.5, 3.6]上的信號
圖 5、x(t)在[2.5,3.6]上的離散振幅譜
圖 6、x(t)在[2.5, 3.6]上的離散相位譜
對比圖2和5可以看到,在圖2中,只有頻率為1/T, 和2/T的兩個簡諧波的振幅不為零,頻率相同的振幅的和就是原先信號解析式中相應(yīng)的振幅值。而圖5中并不事這樣的,頻率較小的簡諧波的振幅越大,隨著頻率的增大,振幅逐漸變小。
實(shí)驗(yàn)中,我們可以看出來,實(shí)際上同一個信號在選取不同的時間長度后會得到不同的離散頻譜!區(qū)間長度決定信號的離散頻譜!
實(shí)驗(yàn)二:有限區(qū)間上方波信號的傅立葉級數(shù)展開,離散頻譜。
實(shí)驗(yàn)一中用的是正弦信號的疊加,現(xiàn)在我們使用一般的方波信號,求解他的頻譜。方波信號的解析形式為:
我們?nèi)=2。將實(shí)驗(yàn)一中的程序中修改區(qū)間參數(shù),以及信號函數(shù)后,運(yùn)行結(jié)果:
圖 7, 原信號
圖 8, 信號振幅譜
圖 9, 信號相位譜
附程序:
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');




