¿Cómo calcular la suma móvil en MATLAB?

La suma móvil de un vector se puede denominar como la suma acumulada de cada ventana de algún tamaño k en el vector.

Supongamos que vector = [1 2 3 4 5]

Entonces la suma móvil de cada ventana de tamaño 2 es

[1 2] = 3

[2 3] = 5

[3 4] = 7

[4 5] = 9

Entonces el vector de sumas móviles es [3 5 7 9]

Matlab nos permite realizar esta operación de manera efectiva usando el método movsum() . Las diferentes sintaxis asociadas con el método movsum() son :

  • M = movsum(A, k)
  • M = movsum(A, [kb kf])
  • M = movsum(___, dim)
  • M = movsum(___, nanflag)

Analicemos ahora la sintaxis anterior en detalle:

movsum(A, k)

  • El método devuelve una array de sumas de ventana de tamaño k del vector A.
  • El vector devuelto tendrá el mismo tamaño que A.
  • Si k es impar, entonces la ventana se centra en el elemento en la posición actual.

Suponga que A = [1 2 3 4 5] y k = 3, entonces el tamaño de la ventana deslizante es 3.

Dado que k es impar, la ventana se centra en cada índice y considera un valor desde la izquierda y un valor desde la derecha en una ventana.

Entonces las ventanas son

[1 2] –> Dado que en el primer índice (es decir, el valor 1) no queda ningún valor, la ventana se trunca al tamaño 2

[1 2 3]

[2 3 4]

[3 4 5]

[4 5] -> Dado que en el último índice (es decir, el valor 5) no hay un valor correcto, la ventana se trunca al tamaño 2

  • Si k es par , la ventana se centra en los elementos actuales y anteriores .
  • Cuando hay pocos elementos en la ventana, la ventana se trunca automáticamente y considera la suma de la ventana truncada.

Matlab

% Input vector
A = [1 2 3 4 5];
disp("Vector :");
disp(A);
 
% Moving sum of A of size 3
M = movsum(A,3);
disp("Moving sum :");
disp(M);

Producción :

movsum(A, [kb kf])

Devuelve la suma móvil del vector A, con cada ventana centrada en la posición actual y con elementos kb del lado izquierdo y elementos kf del lado derecho con una ventana total de tamaño kb+kf+1 .

Suponga que A = [1 2 3 4 5] y [kb = 2 kf = 0], entonces el tamaño de la ventana deslizante es kb+kf+1 = 3

En cada elemento, los 2 elementos anteriores y los 0 elementos siguientes se consideran en la ventana junto con el elemento actual.

Entonces las ventanas son

[1]

[1 2]

[1 2 3]

[2 3 4]

[3 4 5]

Matlab

% Input vector
A = [1 2 3 4 5];
disp("Vector :");
disp(A);
 
% Moving sum of A of size 3
% every window having 2 elements
% to left  and 0 elements to the
% right
M = movsum(A,[2 0]);
disp("Moving sum :");
disp(M);

Producción :

movsum(___,dim)

  • Devuelve la suma móvil de array calculando en cada dimensión de dim .
  • dim toma dos valores 1 o 2 corresponde operar a lo largo de cada columna y a lo largo de cada fila respectivamente.
  • El valor predeterminado de dim = 1 , es decir, realiza la suma móvil de la array en cada columna.

Matlab

% Input vector
A = [1 2 3; 4 5 6; 7 8 9];
disp("Matrix :");
disp(A);
 
% Moving sum of A of size k=3
% along each row(dim=1)
M = movsum(A,3,2);
disp("Moving sum :");
disp(M);

Producción :

movsum(___,bandera)

  • El valor de nanflag decide si incluir o excluir el valor NaN del vector en la suma móvil o no.
  • nanflag toma dos valores ‘includenan’ u ‘omitnan’ que corresponde a incluir elementos NaN y excluir elementos NaN respectivamente.
  • omitNaN’ considera los valores de NaN como 0 .

Nota: NaN + número = NaN

Matlab

% Input vector
A = [3 5 NaN 9 0 NaN];
disp("Vector :");
disp(A);
 
% Including NaN values
B = movsum(A,3,'includenan');
disp("Moving sum Include NaN :");
disp(B);
 
% Excluding NaN values
B = movsum(A,3,'omitnan');
disp("Moving sum Exclude NaN :");
disp(B);

Producción :

Publicación traducida automáticamente

Artículo escrito por ManikantaBandla y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *