¿Cómo generar una señal gaussiana con covarianza media cero conocida en matlab?
¿Cómo transformar una variable aleatoria que satisfaga la matriz de covarianza requerida a partir de dicha muestra?
Cuando la media es cero, Cz=E{z*z'},
Asumimos x=A*z, entonces CX = e { x * x ' } = e {(A * z)*(A * z)' } = A * e { z * z ' } * A ' = A * cz * A ' = A * A '
Ahora el problema resuelto es a* A ' = Cx =[4-1;-1 2], ¿cómo encontrar a? Obviamente, hay muchas A de ese tipo. Para facilitar el cálculo, asumimos que A es una matriz simétrica, es decir, A = A’, entonces el cuadrado de A es igual a Cx y A es igual a la raíz cuadrada de Cx.
El proceso es el siguiente:
z=randn(2,N);
x = sqrtm(Cx)* z;
Si es una media distinta de cero, agregue x = x+media*(1,n);
Nota:
En el programa (1), sqrtm(Cx ) se utiliza para encontrar la raíz cuadrada, en lugar de sqrt(Cx). El primero es encontrar A que satisfaga A*A=Cx, y el segundo es encontrar A que satisfaga A.*A=Cx.
(2) Cuando el valor de n es demasiado pequeño, Cz puede no ser igual a [1 0 0 1]. Cuanto menos datos, menos pueden reflejar las características estadísticas.