typestar

wave_toolkit.ipf en Igor Pro

Las pequeñas funciones utilitarias que todo proyecto de Igor termina escribiendo, en un archivo.

#pragma TextEncoding = "UTF-8"
#pragma rtGlobals = 3

// Utilidades. Nada aquí toca una global ni deja una wave atrás.

Function/WAVE Normalize(WAVE src)
    Duplicate/FREE src, out
    WaveStats/Q out
    if (V_max == V_min)
        out = 0
        return out
    endif
    out = (out - V_min) / (V_max - V_min)
    return out
End

Function/WAVE RemoveOutliers(WAVE src, Variable sigmas)
    Duplicate/FREE src, out
    WaveStats/Q out
    Variable low = V_avg - sigmas * V_sdev
    Variable high = V_avg + sigmas * V_sdev
    out = (out < low || out > high) ? NaN : out
    return out
End

Function/WAVE MovingAverage(WAVE src, Variable window)
    Duplicate/FREE src, out
    Smooth/B window, out
    return out
End

Function Rms(WAVE src)
    Duplicate/FREE src, squared
    squared = src[p]^2
    return sqrt(sum(squared) / numpnts(squared))
End

Function/S DescribeWave(WAVE w)
    WaveStats/Q w
    String out
    sprintf out, "%s: %d points, %g to %g", NameOfWave(w), V_npnts, V_min, V_max
    return out
End

Function TestToolkit()
    Make/FREE/N=100/D probe = p
    WAVE scaled = Normalize(probe)

    WaveStats/Q scaled
    if (abs(V_min) > 1e-9 || abs(V_max - 1) > 1e-9)
        Print "Normalize is wrong"
        return -1
    endif

    Make/FREE/N=4/D flat = 3
    if (abs(Rms(flat) - 3) > 1e-9)
        Print "Rms is wrong"
        return -1
    endif

    Print "toolkit ok:", DescribeWave(probe)
    return 0
End

Cómo funciona

  1. Cada una toma una referencia a wave y devuelve algo, así que se componen.
  2. Las waves libres dejan el trabajo de borrador fuera del experimento.
  3. El autotest del final es lo que vuelve confiable un toolkit.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
63
Caracteres a escribir
1255
Tokens
276
Ritmo de tres estrellas
85 tpm

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

Escribe este fragmento

Paso 1 de 1 en Bis; paso 18 de 18 en Fundamentos del lenguaje.

← Anterior