typestar

Waves de dos dimensiones en Igor Pro

Una matriz es una wave con dos dimensiones, y MatrixOP es la vía rápida para recorrerla.

Function/WAVE ColumnMeans(WAVE m)
    Variable rows = DimSize(m, 0), cols = DimSize(m, 1)

    Make/O/N=(cols)/D means
    MatrixOP/O means = sumCols(m) / rows

    Make/O/N=(rows, cols)/D centered
    centered = m[p][q] - means[q]

    Printf "%d by %d, centered\r", rows, cols
    return means
End

Cómo funciona

  1. w[i][j] indexa filas y columnas; p y q lo hacen en una asignación.
  2. MatrixOP corre una expresión completa en una sola pasada, en C.
  3. DimSize(w, 0) es el número de filas; DimSize(w, 1), el de columnas.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
12
Caracteres a escribir
271
Tokens
78
Ritmo de tres estrellas
85 tpm

Al ritmo de tres estrellas de 85 tokens por minuto, este intento toma unos 55 segundos.

Escribe este fragmento

Paso 4 de 4 en Señales y matrices; paso 14 de 16 en Waves y análisis.

← Anterior Siguiente →