Comenzando con la fórmula para la varianza de la muestra
$$ s ^ {2} = \ frac {\ sum_ {i = 1} ^ {N} \ left (X_ {i} - \ bar {X} \ right) ^ 2} {N-1} $$
se multiplica para obtener
$$ s ^ {2} = \ frac {\ sum_ {i = 1} ^ {N} \ left ({X_i} ^ 2-2X_i
\ bar {X} + \ bar {X} ^ 2 \ derecha)} {N-1} $$
Distribuye las sumas. Usando el hecho de que \ $ \ bar {X} \ $ es una constante, entonces $$ \ sum 2X_i \ bar {X} = 2 \ bar {X} \ sum {X_i}, $$ y $$ \ sum {X_i } = N \ bar {X}, $$
Entonces, $$ 2 \ bar {X} \ sum {X_i} = 2N \ bar {X} ^ 2. $$
Luego, usando $$ \ sum_ {i = 1} ^ {N} \ bar {X} ^ 2 = N \ bar {X} ^ 2, $$ y
$$ N \ bar {X} ^ 2 = \ frac {N \ left (\ sum {X} \ right) ^ 2} {N ^ 2} $$
la ecuación general para varancia se reduce a una fórmula computacional conveniente para varianza:
$$ \ frac {\ sum_ {i-1} ^ {N} \ left (X_ {i} ^ 2 \ right) - \ frac {\ left (\ sum_ {i = 1} ^ {N} X_i \ right) ^ 2} {N}} {N-1} $$
XSQR = X. * X; \ Simplemente elemento por elemento ajusta la matriz de columnas, X
Sin explicar por completo la convolución, la convolución con una cadena de longitud N (es decir, convsig) es simplemente una suma de los N puntos anteriores en cada paso de tiempo.
La última línea del código simplemente elimina la basura en cualquiera de los extremos de la matriz asociada con el principio y el final de la convolución.
Por último, debe comprender que la mayoría de las operaciones en arreglos en Matlab operan en todo el arreglo al mismo tiempo: la mayoría de las operaciones en el programa que usted muestra, absolutamente necesitan recorrer cada elemento del arreglo en un idioma. como C, que probablemente sea muy confuso para las personas que no están acostumbradas a trabajar en Matlab.
La conclusión es que no es muy diferente a la implementación real de la suma, pero la convolución es algo que se escribe directamente en matlab, y generalmente hay bibliotecas que manejan la convolución directamente en los DSP, por lo que es una forma conveniente de implementar un filtro de varianza móvil sin Necesito hacer el trabajo duro.