Применение оценочной передаточной функции к сигналу
Это простой код для поиска передаточной функции между сигналами "sigout" и "sigin", а затем - коэффициенты фильтра, оцененные функцией "invfreqz".
%% load simlated data
load CFDvsABAQUS_TC.mat
%% simulated data preprocessing (grid orientation B)
time = TCb(:,1);
sigin = TCb(:,2); % inlet temperature (TC signal by Abaqus)
sigout = TCb(:,3); % outlet temperature (by cfd FENIX)
Fs = 1/mean(diff(time)); % sampling frequency
%% Transfer Function Estimate outlet->inlet
[toi,foi]=tfestimate(sigout,sigin,2^13,[],[],Fs);
%% filter design by known transfer function
w = linspace(0,pi,length(fio)); % angular frequency f=[0,fs/2] -> w=[0,pi]
m = 500; % b coeffs
n = 500; % a coeffs
[boi,aoi] = invfreqz(toi,w,n,m);
%% final Digital filtering
esigin = filter(boi,aoi,sigout);
Входные данные доступны по адресу: https://www.dropbox.com/s/hj09ktc67mnzs4d/CFDvsABAQUS_TC.mat?dl=0
Функция конечного фильтра дает совершенно неправильные результаты (результат должен быть аналогичен исходному сигналу "sigin"). Я понятия не имею, что не так.
Любая помощь будет очень полезна для меня. Заранее спасибо.