How to remove an autoregressive disturbance of known parameters

2 次查看(过去 30 天)
I would like to find the time series x_r2s_re that gives pert1_re, which latter is supposed to be a realisation of an AR(1) process of known parameters phi_est and sig_est. In other words, x_r2s_re and pert1_re are reconstructions of x_r2s and pert1. In practice, i do not know x_r2s, but i am given two realisations of the signal corrupted by red AR(1) "noise", x_prd_1 and x_prd_2. The parameters of the perturbation AR(1) can be estimated simply given the two realisations as the code snippet below shows.
t = 0:2^8;
N = length(t);
dt = t(2)-t(1);
tau = 20; % time scale of relaxation
x_asym = 4; % relative increase of the observable x t -> infinity
x_r2s = x_asym*(1 - exp(-t/tau)); % uncorrupted signal; not known in practice
sig = 0.05; % noise strength
% Use AR(1) to corrupt the signal instead of white noise.
phi = 0.8; % AR coefficeint
xi1 = sig*randn(1,N);
xi2 = sig*randn(1,N);
pert1 = filter(1,[1 -phi],xi1);
pert2 = filter(1,[1 -phi],xi2);
x_prd_1 = x_r2s+pert1;
x_prd_2 = x_r2s+pert2;
sys = ar(x_prd_1-x_prd_2,1);
sig_est = 2*sys.NoiseVariance;
phi_est = -sys.A(2);
pert1_re = x_prd_1 - x_r2s_re;

回答(1 个)

Sai Pavan
Sai Pavan 2024-2-14
Hello Tamas,
I understand that you want to remove the autoregressive disturbance of known parameters from a corrupt signal. The estimated parameters of the AR(1) process can be used to construct a filter that will estimate the noise component from the observed signal. Once we have an estimate of the noise, we can subtract it from the corrupted signal to retrieve an estimate of the original uncorrupted signal.
Please refer to the below code snippet that illustrates the removal the disturbance:
AR_model = arima('Constant', 0, 'AR', phi_est, 'Variance', sig_est); % Create an AR(1) model with the estimated parameters
noise_est_1 = infer(AR_model, x_prd_1); % Infer the noise component from the corrupted signals
noise_est_2 = infer(AR_model, x_prd_2);
x_r2s_re_1 = x_prd_1 - noise_est_1; % Subtract the estimated noise from the corrupted signals
x_r2s_re_2 = x_prd_2 - noise_est_2; % to get the estimates of uncorrputed signals
x_r2s_re = (x_r2s_re_1 + x_r2s_re_2) / 2; % Average them to get a better estimate
Please refer to the below documentation learn more about:
Hope it helps!

类别

Help CenterFile Exchange 中查找有关 Linear Model Identification 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by