Применение оценочной передаточной функции к сигналу

Это простой код для поиска передаточной функции между сигналами "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"). Я понятия не имею, что не так.

Любая помощь будет очень полезна для меня. Заранее спасибо.

0 ответов

Другие вопросы по тегам