Как найти матрицу преобразования на выходе с гауссовым шумом?

Для приведенных ниже входных и выходных данных матрица A можно узнать с помощью псевдообратного или mrdivisionв MATLAB. Точно так же я хотел бы теперь узнать, как определитьA, если мой выходной сигнал Y матрица содержит аддитивное нулевое среднее, некоррелированный, гауссовский шум?

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

Кроме того, я смоделировал неизвестный шумный выход, как показано ниже:

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];

1 ответ

Решение

Заявление A = Y/X решает линейную систему уравнений A*X = Y. Если система переопределена, как в вашем случае, данное решение является решением методом наименьших квадратов. Таким образом, если у вас есть аддитивный, нулевой средний, некоррелированный гауссов шум наY, тогда A = Y/X предоставит вам максимально возможную объективную оценку A.

Обратите внимание, что шум, который вы добавляете Y матрица довольно велика, поэтому оценка Aдалека от идеала. Если добавить меньше шума, оценка будет ближе:

x1 = [1 1 1]';
x2 = [0 1 1]';
x3 = [0 0 1]';
x4 = [1 0 1]';
X = [x1 x2 x3 x4];

y1 = [1 2 0]';
y2 = [-1 0 3]';
y3 = [3 1 1]';
y4 = [5 3 -2]';
Y = [y1 y2 y3 y4];

for n = [1,0.1,0.01,0]
   Y_n = Y + n*randn(size(Y));
   A = Y_n/X;
   fprintf('n = %f, A = \n',n)
   disp(A)
end

Выход:

n = 1.000000, A = 
    2.9728   -5.5407    2.8011
    2.6563   -1.3166    0.6596
   -3.3366    1.1349    1.5342

n = 0.100000, A = 
    2.0011   -4.0256    2.9402
    1.9223   -1.0029    1.0921
   -3.1383    1.9874    1.0913

n = 0.010000, A = 
    1.9903   -3.9912    2.9987
    1.9941   -1.0001    1.0108
   -3.0015    2.0001    1.0032

n = 0.000000, A = 
    2.0000   -4.0000    3.0000
    2.0000   -1.0000    1.0000
   -3.0000    2.0000    1.0000

Конечно, если вы сделаете X а также Y больше, добавив больше векторов, вы также получите лучшую оценку и сможете компенсировать более зашумленные данные.

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