Contenido principal

movsum

Descripción

M = movsum(A,k) devuelve las sumas locales de k puntos, donde se calcula cada suma con una ventana deslizante de longitud k que abarca elementos vecinos de A. Cuando k es impar, la ventana se centra sobre el elemento en la posición actual. Cuando k es par, la ventana se centra sobre los elementos actuales y anteriores. El tamaño de la ventana está truncado automáticamente en los puntos finales cuando no hay suficientes elementos para rellenar la ventana. Cuando la ventana está truncada, la suma se toma únicamente sobre los elementos que rellenan la ventana. M es del mismo tamaño que A.

  • Si A es un vector, movsum opera en la longitud del vector A.

  • Si A es un arreglo multidimensional, movsum opera en la primera dimensión de A cuyo tamaño no es igual a 1.

  • Si A es una tabla o un horario, movsum opera a lo largo de las variables de A. (desde R2025a)

ejemplo

M = movsum(A,[kb kf]) calcula la suma con una ventana de longitud kb+kf+1 que incluye el elemento en la posición actual, kb elementos hacia atrás, y kf elementos hacia adelante.

ejemplo

M = movsum(___,dim) especifica la dimensión de A en la que operar para cualquiera de las sintaxis anteriores. Por ejemplo, si A es una matriz, movsum(A,k,2) opera en las columnas de A, calculando la suma deslizante de k elementos para cada fila.

ejemplo

M = movsum(___,nanflag) especifica si incluir u omitir valores NaN en A. Por ejemplo, movsum(A,k,"omitnan") ignora todos los valores NaN al calcular cada suma. De forma predeterminada, movsum incluye valores NaN.

ejemplo

M = movsum(___,Name,Value) especifica parámetros adicionales para la suma utilizando uno o más argumentos nombre-valor. Por ejemplo, si x es un vector de valores de tiempo, movsum(A,k,"SamplePoints",x) calcula la suma móvil de A relativa a las unidades de tiempo en x.

ejemplo

Ejemplos

contraer todo

Calcule la suma móvil centrada en tres puntos de un vector fila. Cuando hay menos de tres elementos en la ventana en los puntos finales, tome la suma sobre los elementos que están disponibles.

A = [4 8 6 -1 -2 -3 -1 3 4 5];
M = movsum(A,3)
M = 1×10

    12    18    13     3    -6    -6    -1     6    12     9

Calcule la suma móvil final en tres puntos de un vector fila. Cuando hay menos de tres elementos en la ventana en los puntos finales, movsum toma la suma sobre el número de elementos que están disponibles.

A = [4 8 6 -1 -2 -3 -1 3 4 5];
M = movsum(A,[2 0])
M = 1×10

     4    12    18    13     3    -6    -6    -1     6    12

Calcule la suma móvil centrada en tres puntos para cada fila de una matriz. La ventana comienza en la primera fila y se desliza horizontalmente hasta el final de la fila. Después, se mueve hacia la segunda fila, y así sucesivamente. El argumento de dimensión es dos, que desliza la ventana a través de las columnas de A.

A = [4 8 6; -1 -2 -3; -1 3 4]
A = 3×3

     4     8     6
    -1    -2    -3
    -1     3     4

M = movsum(A,3,2)
M = 3×3

    12    18    14
    -3    -6    -5
     2     6     7

Cree un vector fila que contenga valores NaN.

A = [4 8 NaN -1 -2 -3 NaN 3 4 5];

Calcule la suma móvil centrada en tres puntos de un vector, sin valores NaN. Para ventanas que contienen un valor NaN, movsum se calcula con elementos que no son NaN.

M = movsum(A,3,"omitnan")
M = 1×10

    12    12     7    -3    -6    -5     0     7    12     9

Calcule una suma móvil centrada en 3 horas de los datos en A de acuerdo con el vector de tiempo t.

A = [4 8 6 -1 -2 -3];
k = hours(3);
t = datetime(16,1,1,0,0,0) + hours(0:5)
t = 1×6 datetime
   01-Jan-0016 00:00:00   01-Jan-0016 01:00:00   01-Jan-0016 02:00:00   01-Jan-0016 03:00:00   01-Jan-0016 04:00:00   01-Jan-0016 05:00:00

M = movsum(A,k,"SamplePoints",t)
M = 1×6

    12    18    13     3    -6    -5

Calcule la suma móvil centrada en tres puntos de un vector fila, pero descarte cualquier cálculo que utilice menos de tres puntos desde la salida. En otras palabras, devuelva únicamente las sumas calculadas de una ventana completa de tres elementos, descartando los cálculos de punto final.

A = [4 8 6 -1 -2 -3 -1 3 4 5];
M = movsum(A,3,"Endpoints","discard")
M = 1×8

    18    13     3    -6    -6    -1     6    12

Cree una tabla a partir de las columnas de un cuadrado mágico.

A = magic(3);
T = array2table(A)
T=3×3 table
    A1    A2    A3
    __    __    __

    8     1     6 
    3     5     7 
    4     9     2 

Calcule las sumas móviles de las variables de la tabla con movsum.

M = movsum(T,3)
M=3×3 table
    A1    A2    A3
    __    __    __

    11     6    13
    15    15    15
     7    14     9

Para calcular sumas móviles solo para las variables especificadas, especifique el argumento nombre-valor DataVariables.

M2 = movsum(T,3,DataVariables=["A2" "A3"])
M2=3×3 table
    A1    A2    A3
    __    __    __

    8      6    13
    3     15    15
    4     14     9

Para añadir las sumas móviles a la tabla en lugar de reemplazar los valores, especifique ReplaceValues como false.

M3 = movsum(T,3,ReplaceValues=false)
M3=3×6 table
    A1    A2    A3    A1_movsum    A2_movsum    A3_movsum
    __    __    __    _________    _________    _________

    8     1     6        11            6           13    
    3     5     7        15           15           15    
    4     9     2         7           14            9    

Argumentos de entrada

contraer todo

Datos de entrada, especificados como vector, matriz, arreglo multidimensional, tabla u horario.

Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | table | timetable

Longitud de la ventana, especificada como escalar numérico o de duración. Cuando k es un escalar entero positivo, la suma centrada incluye el elemento en la posición actual, además de los vecinos que lo rodean.

Por ejemplo, movsum(A,3) calcula un arreglo de sumas locales de tres puntos.

movsum(A,3) computation. The elements in the sample window are 1, 3, and 5, so the resulting local sum is 9.

Longitud de ventana direccional, especificada como vector fila numérico o de duración que contiene dos elementos. Cuando kb y kf son escalares enteros positivos, el cálculo es sobre los elementos kb+kf+1. El cálculo incluye el elemento en la posición actual, los elementos kb anteriores a la posición actual, y los elementos kf posteriores a la posición actual.

Por ejemplo, movsum(A,[2 1]) calcula un arreglo de sumas locales de cuatro puntos.

movsum(A,[2 1]) computation. The elements in the sample window are 4, 1, 3, and 5, so the resulting local sum is 13.

Dimensión en la que operar, especificada como escalar entero positivo. Si no especifica la dimensión, el valor predeterminado es la primera dimensión del arreglo cuyo tamaño no es igual a 1.

La dimensión dim es la que indica sobre cuál opera movsum, es decir, la dirección en la que se desliza la ventana especificada.

Considere una matriz de entrada de m por n, A:

  • movsum(A,k,1) calcula la suma deslizante de k elementos para cada columna de A y devuelve una matriz de m por n.

    movsum(A,k,1) column-wise operation

  • movsum(A,k,2) calcula la suma deslizante de k elementos para cada fila de A y devuelve una matriz de m por n.

    movsum(A,k,2) row-wise operation

Si A es una tabla o un horario, no se puede especificar dim. La función movsum siempre opera a lo largo de las variables de tablas y horarios. (desde R2025a)

Condición de valor faltante, especificada como uno de estos valores:

  • "includemissing" o "includenan": incluyen los valores NaN en A al calcular cada suma. Si un elemento de la ventana es NaN, el elemento correspondiente en M es NaN. "includemissing" y "includenan" presentan el mismo comportamiento.

  • "omitmissing" u "omitnan": ignoran los valores NaN en A y calculan cada suma en menos puntos. Si todos los elementos de la ventana son NaN, el elemento correspondiente en M es 0. "omitmissing" y "omitnan" presentan el mismo comportamiento.

Argumentos de par nombre-valor

contraer todo

Especifique pares opcionales de argumentos como Name1=Value1,...,NameN=ValueN, donde Name es el nombre del argumento y Value es el valor correspondiente. Los argumentos nombre-valor deben aparecer después de otros argumentos, pero el orden de los pares no importa.

En las versiones anteriores a R2021a, utilice comas para separar cada nombre y valor, y encierre Name entre comillas.

Ejemplo: M = movsum(A,k,"Endpoints","fill")

Método para tratar las ventanas cercanas a los puntos finales, especificado como una de estas opciones:

ValorDescripción
"shrink"Reduce el tamaño de la ventana cerca de los puntos finales de la entrada para incluir únicamente elementos existentes.
"discard"

No muestra sumas de salida cuando la ventana no se solapa por completo con elementos existentes.

Si A es una tabla o un horario, no se puede especificar Endpoints como "discard".

"fill"Reemplaza los elementos no existentes con NaN.
escalar númerico o lógicoReemplaza los elementos no existentes con el valor numérico o lógico especificado.

Puntos de muestra para calcular sumas, especificados como vector. Los puntos de muestra representan las ubicaciones de los datos en A. Los puntos de muestra no tienen que ser muestreados de manera uniforme. De forma predeterminada, el vector de puntos de muestra es [1 2 3 ... ].

Las ventanas móviles se definen de forma relativa a los puntos de muestra, que se deben ordenar y contienen elementos únicos. Por ejemplo, si t es un vector de tiempos correspondiente a los datos de entrada, movsum(rand(1,10),3,"SamplePoints",t) tiene una ventana que representa el intervalo de tiempo entre t(i)-1.5 y t(i)+1.5.

Cuando el vector de puntos de muestra tiene el tipo de datos datetime o duration, la longitud de la ventana móvil debe tener el tipo duration.

Si los puntos de muestra no están espaciados de manera uniforme y se especifica Endpoints, su valor debe ser "shrink".

Desde R2025a

Variables de tabla u horario sobre las que operar, especificadas como una de las opciones de esta tabla.

  • Si no se especifica DataVariables, movsum opera sobre todas las variables. Este comportamiento es el predeterminado.

  • Si se especifica DataVariables, movsum solo opera sobre las variables especificadas. Otras variables no especificadas por DataVariables pasan a la salida sin modificaciones.

Esquema de indexaciónValores que se desea especificarEjemplos

Nombre de la variable

  • Un escalar de cadena o un vector de caracteres

  • Un arreglo de cadenas o un arreglo de celdas de vectores de caracteres

  • Un objeto pattern

  • "A" o 'A': una variable llamada A

  • ["A" "B"] o {'A','B'}: dos variables llamadas A y B

  • "Var"+digitsPattern(1): variables cuyo nombre empieza por "Var" seguido de un solo dígito

Índice de variable

  • Un número de índice que hace referencia a la ubicación de una variable en la tabla

  • Un vector de números

  • Un vector logical. Normalmente, este vector es de la misma longitud que el número de variables, pero puede omitir los valores 0 (false) al final.

  • 3: la tercera variable de la tabla

  • [2 3]: la segunda y la tercera variable de la tabla

  • [false false true]: la tercera variable

Identificador de función

  • Un identificador de función que toma una variable de tabla como entrada y devuelve un escalar logical

  • @isnumeric: todas las variables que contienen valores numéricos

Tipo de variable

  • Un subíndice vartype que selecciona variables de un tipo especificado

  • vartype("numeric"): todas las variables que contienen valores numéricos

Desde R2025a

Indicador de valores de reemplazo, especificado como uno de estos valores cuando A es una tabla o un horario.

  • true o 1: en la tabla u horario de salida, reemplaza las variables de la tabla u horario de entrada por variables que contienen valores de salida de movsum.

  • false o 0: añade variables que contienen valores de salida de movsum a la tabla u horario de salida.

Para datos de entrada de vectores, matrices o arreglos multidimensionales, ReplaceValues no es compatible.

Capacidades ampliadas

expandir todo

Historial de versiones

Introducido en R2016a

expandir todo

Consulte también

Funciones