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