For the below given input and output, the matrix A
can be found out by pseudoinverse or mrdivision
in MATLAB. Similarly, I would now like to know, how to determine A
, if my output signal Y
matrix contains additive zero mean, uncorrelated, Gaussian noise?
x1 = [1 1 1]';
x2 = [0 1 1]';
x3 = [0 0 1]';
x4 = [1 0 1]';
y1 = [1 2 0]';
y2 = [-1 0 3]';
y3 = [3 1 1]';
y4 = [5 3 -2]';
X = [x1 x2 x3 x4];
Y = [y1 y2 y3 y4];
A = Y/X
Also, I have modelled the unknown noisy output as below:
y1_n = y1 + sqrt(var(y1))*randn(size(y1));
y2_n = y2 + sqrt(var(y2))*randn(size(y2));
y3_n = y3 + sqrt(var(y3))*randn(size(y3));
y4_n = y4 + sqrt(var(y4))*randn(size(y4));
Y = [y1_n y2_n y3_n y4_n];
The statement
A = Y/X
solves the linear system of equationsA*X = Y
. If the system is overdetermined, as in your case, the solution given is the least squares solution. Thus, if you have additive, zero mean, uncorrelated, Gaussian noise onY
, thenA = Y/X
will give you the best possible, unbiased, estimate ofA
.Note that the noise you add to your
Y
matrix is quite large, hence the estimate ofA
is far away from the ideal. If you add less noise, the estimate will be closer:Output:
Of course if you make
X
andY
larger by adding more vectors you'll get a better estimate too, and will be able to compensate more noisy data.