How can I remove the effect of a known subsystem from the data?

Sometimes a part (maybe some poles) of the system are almost perfectly known, and it is necessary to identify only the rest of the dynamics. In this case, we can remove the effect of these poles/zeros from the data.
Warning! We can remove the effect of exactly given poles/zeros only. If they are imprecise, a part of the dynamics they cause can remain in the data.

We enclose a self-explanatory example.

%1. PREPARATIONS
%Close all windows first, and clear previous data:
close all, clear, figure(1)
%Define full system model:
model=fidmodel('s',real(poly([1+j,1-j])),real(poly([-1-j,-1+j,-0.1,-0.5])));
plot(model) %plot original model
%Define helper data object for simulation:
Fdat=fiddata(NaN*ones(10,1),ones(10,1),[0.05:0.05:0.5]);
Fdat.variance=[0.001,0.001];
%Simulate noisy measurement:
data=simfou(model,Fdat);
%Plot simulated data (simulated from original model)
figure(2), plot(data), figure(3)
%
%2. MAIN PART
model_est=elis(data,'s',2,4); %estimate original model
model_known=fidmodel('s',1,real(poly([-0.1]))); %known subsystem
datam=data/model_known; %Modify data, remove effect of one pole
%Plot modified data:
figure(4), plot(datam), figure(5)
model_partial=elis(datam,'s',2,3); %estimate remaining model

Back to the fdident FAQ page     Back to the Developers' Page