私は時変信号(時間、振幅)と測定周波数感度(周波数、振幅変換係数(Mf))を持っています。Matlabのfft/ifftデコンボリューション
信号の中心周波数を使用して信号の振幅変換係数(たとえば0.0312)を選択すると、最大値を得ることができます。変換された振幅値は1.4383である。
私は、時変信号と既知の感度(すなわち、すべての周波数)をデコンボリューションするコードを書いています。 fft(a)は時間変化信号(a)のfftである。ここで、Ptは出力/変換振幅であり、Mfは振幅変換係数データであり、fft(a)は時間変化信号(a)のfftである。 Fsはサンプリング周波数であり、Lは、信号の長さである
xdft = fft(a);
xdft = xdft(1:length(x)/2+1); % only retaining the positive frequencies
freq = Fs*(0:(L/2))/L;
:
Iは、(a)は、FFTの実部をとります。
convS = real(xdft).*Mf;
Mfは大きさ=実数(位相情報はありません)と仮定します。私はまた、周波数と同じ質問ポイントで
Mf=interp1(freq_Mf,Mf_in,freq,'cubic');
を補間します。
Iは、次に使用して、時間領域の信号を再構築:私は、FFTの虚部を使用
fftRespI=complex(real(convS),imag(xdft));
pt = ifft(fftRespI,L,'symmetric')
(A)。
再構成された信号の形状は正しいように見えますが、信号の振幅は正しくありません。
f = 0..MHzの場合、Mf = 0.0312のすべての値を設定すると、変換された振幅値は〜1.4383(中心周波数を使用する場合と同様)ですが、13.0560になります。
どのように振幅軸を較正しますか?つまり、fft(a)をMfで正しく掛けるにはどうすればよいですか?
のy ABS(大きさ)の軸と実際のFFTのいくつかの理解向上は、私が思う私を助けるだろう...
おかげ
fft信号の実数部に大きさを掛けても、振幅と位相情報が混在しているため意味がありません。 'xdft'の係数にあなたの重み' Mf'を直接乗算しようとしましたか?これは、fft信号に周波数可変フィルタを適用することと同じプロセスであるため、より意味をなさないでしょう。 – BillBokeey
ありがとう私はあなたのポイントを理解していますが、 '係数'の意味をよく分かりませんか? – 2one