[英]frequency domain interpolation changes the signal spectrum
我正在研究一些與正弦掃描激勵有關的實驗數據。
我首先使用從數據文件中獲得的幅度和頻率信息來重構信號:
% finz: frequency
% ginz: amplitude
R = 4; % sweep rate
tz = 60/R*log2(finz/finz(1)); % time
u_swt = sin(2*pi*((60*finz(1)/(R*log(2.))*(2.^(R/60*tz)-1))));
time_sign = ginz.*u_swt;
freq_sign = fft(time_sign);
這是我得到的:
然后,在計算時間信號以獲得“更細微”的信號之前,我嘗試對頻率數據進行插值(擁有更多樣本,應該更容易重建它):
ginz = interp(ginz,200);
finz = interp(finz,200);
但是現在頻譜發生了變化:
為什么頻譜如此不同? 我在插值中做錯了嗎? 我不應該插值數據嗎?
我不清楚您正在使用的信號的詳細信息。 例如,您能否提供finz和ginz的典型示例? 另外,不清楚您希望通過插值實現什么,因此很難建議使用它。
但是,如果您對時間序列進行插值,則應該期望其頻譜隨着采樣頻率的增加而發生變化。 內插信號的頻率將相對於新的采樣頻率變得更小。 因此,信號頻譜將(在這里不是很技術性)推向零。 我在下面提供了一個腳本,該腳本會產生高斯白噪聲,並繪制不同插值級別的頻譜。 在沒有內插的第一個子圖中,頻譜被均勻占用(根據設計-白噪聲)。 在隨后的子圖中,隨着插值的增加,占用的頻譜變得越來越小。 希望這可以幫助。
% white Gaussian noise (WGN)
WGN = randn(1,1000);
% DFT of WGN
DFT_WGN = abs(fft(WGN));
% one-sided spectrum
DFT_WGN = DFT_WGN(1:length(WGN)/2);
% interpolated WGN by factor of 2 (q = 2)
WGN_interp_2 = interp(WGN,2);
% DFT of interpolated WGN
DFT_WGN_interp_2 = abs(fft(WGN_interp_2));
% one-sided spectrum
DFT_WGN_interp_2 = DFT_WGN_interp_2(1:length(DFT_WGN_interp_2 )/2);
% interpolated WGN by factor of 10 (q = 10)
WGN_interp_10 = interp(WGN,10);
% DFT of interpolated WGN
DFT_WGN_interp_10 = abs(fft(WGN_interp_10));
% one-sided spectrum
DFT_WGN_interp_10 = DFT_WGN_interp_10(1:length(DFT_WGN_interp_10 )/2);
figure
subplot(3,1,1)
plot(DFT_WGN)
ylabel('DFT')
subplot(3,1,2)
plot(DFT_WGN_interp_2)
ylabel('DFT (q:2)')
subplot(3,1,3)
plot(DFT_WGN_interp_10)
ylabel('DFT (q:10)')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.