Además del cálculo de datos y la creación de estructuras de datos, una aplicación importante de FPScript es la extracción de partes de conjuntos de datos, por ejemplo, de todos los máximos locales de una señal o del intervalo entre dos cruces cero. FPScript le proporciona dos potentes operadores de índice para este tipo de aplicaciones.
Operador de índice
El operador de índice extrae valores escalares o rangos de datos a través de su posición en la estructura de datos. Todas las filas de las series de datos y todas las filas y columnas de las matrices de datos se numeran empezando por cero. Los índices negativos cuentan desde el final, es decir, -1 indica la última fila o columna. La operación de índice le permite acceder a valores escalares o rangos a través de esos números.
SerieDeDatos[99n] lee el centésimo valor de una serie de datos, por ejemplo.
SerieDeDatos[-2n] lee el penúltimo valor de una serie de datos.
SerieDeDatos[0n, 49n] forma una serie de datos con los 50 primeros valores de la serie de datos.
SerieDeDatos[49n, -1n] forma un rango desde el valor 50 hasta el último de una serie de datos.
SerieDeDatos[{0n, 5n, 7n, 9n}] forma una serie de datos con los valores cuyos índices se indican. Aquí se ha utilizado el operador de agrupación para combinar los índices deseados en una serie de datos.
SerieDeDatos[(NumberOfRows(SerieDeDatos), NumberOfRows(SerieDeDatos) - 1n, -1n)]
Aquí se ha utilizado el operador de series de datos para generar los índices. La instrucción invierte el orden de los valores de la serie de datos.
En una matriz de datos, se especifican dos índices, el primero selecciona una o más columnas y el segundo, una o más filas:
MatrizDeDatos[1n][2n] lee, por ejemplo, el 3.er valor de la segunda columna de la matriz de datos como valor escalar.
MatrizDeDatos[-1n] lee la última columna de una matriz de datos como serie de datos.
MatrizDeDatos[][2n] lee la 3.ª fila de una matriz de datos como serie de datos.
También puede utilizar un índice 2D. Se trata de una matriz de datos con 2 filas y n columnas. Cada columna contiene el índice de columna y fila de un valor que debe extraerse:
MatrizDeDatos[{ {1, 0}, {0, 1} }] toma dos valores de una matriz de datos como serie de datos. Corresponde a { MatrizDeDatos[1][0], MatrizDeDatos[0][1] }.
También puede utilizar el operador de índice en cadenas para extraer una subcadena o el código de un único carácter.
Cadena[1n, 3n] extrae una subcadena con una longitud de tres caracteres empezando por el 2.º carácter de la cadena.
Cadena[1n] toma el código del segundo carácter de la cadena. La expresión devuelve un entero de 16 bits con el Unicode del carácter.
(Cadenas[2n])[1n, 3n] extrae la 3.ª cadena a partir de una serie de datos de cadenas y, de ella, una subcadena con una longitud de tres caracteres a partir del 2.º carácter. El corchete es necesario para separar el índice de datos del índice de cadena.
Operador de índice de valores
Cuando se trabaja con señales y series de señales, suele ser más práctico especificar los valores X o Z directamente al indexar los rangos que trabajar con los índices. Para ello, FPScript proporciona el operador de índice de valores.
Señal[[0 s, 4.5 s]], por ejemplo, forma una señal parcial con los puntos de los primeros 4.5 segundos.
Tenga en cuenta que la operación también funciona como se espera si el componente X de la señal tiene la unidad ms, por ejemplo.
SerieDeSeñales[[3.5 kHz]] extrae la señal con el valor Z 3.5 kHz de la serie de señales.
La sintaxis del operador de índice de valores corresponde a la del operador de índice, solo hay que escribir dos veces todos los corchetes. A continuación, FPScript interpreta los índices especificados como valores X o Z y los busca en el componente X o Z de la señal o serie de señales para obtener las posiciones.
Operador de elemento de lista
Puede utilizar el operador de elemento de lista para extraer uno o varios elementos de lista de una lista, y puede trabajar con los índices de los elementos de lista o con sus nombres.
Lista.[1n], por ejemplo, proporciona el 2.º elemento de una lista.
Lista.[-2n] toma el penúltimo elemento de una lista.
Lista.[1, 2] proporciona una lista parcial con los elementos 2.º y 3.º.
Lista.Nombre toma el elemento con el nombre "Nombre" de una lista.
Lista.["Corriente*"] devuelve todos los elementos de lista cuyo nombre empiece por "Corriente".
Nota Tenga en cuenta que el acceso a elementos de lista a través de sus nombres no siempre es único, ya que varios elementos de una lista pueden tener el mismo nombre.