Espectrometría de movilidad iónica

Temas generales de física. Obtención de vacío, operación, medición, materiales y accesorios. Producción y medición de radiación y partículas
Responder
Mensaje
Autor
Avatar de Usuario
baldo
Mensajes: 1514
Registrado: Vie Dic 23, 2005 7:54 pm
País: españa
Ciudad: coruña y madrid
Ubicación: Galicia
Contactar:

Re: Espectrometría de movilidad iónica

#131 Mensaje por baldo »

Homer escribió:No te compliques la vida, no necesitas variar ni frecuencia, ni voltaje, ni nada de nada. De hecho, llevando la cosa hasta el extremo de la simplicidad, ni siquiera necesitas modular la puerta, la abres una vez, no la cierras, y lo que vas detectando es la integral del espectro.
Muy bien dicho, claro que si.

Si, pero para eso necesitamos una precision y rapidez en el ADC que no tenemos. ¿o si?.

para resolver el problema, se recurre a una especie de submuestreo. puertecillas que abren y cierran.

lo de la hadamar,,, ufff.
me lo tienes que explicar otro dia, con mazanas. a viva voz.
debi quemar la neurona, cerebro fraguar, que ya no veo mas alla,

Avatar de Usuario
Homer
Mensajes: 2151
Registrado: Dom Abr 30, 2006 2:07 pm
País: España
Ciudad: Sabadell
Contactar:

Re: Espectrometría de movilidad iónica

#132 Mensaje por Homer »

Bueno, al final he conseguido captar tu atención. Pues ahora en lugar de dejar abierto vamos abriendo y cerrando. La matriz quedaría así:

1 0 0 0 0 0 0 0 0 0 D[0]
0 1 0 0 0 0 0 0 0 0 D[1]
1 0 1 0 0 0 0 0 0 0 D[2]
0 1 0 1 0 0 0 0 0 0 D[3]
1 0 1 0 1 0 0 0 0 0 D[4]
0 1 0 1 0 1 0 0 0 0 D[5]
1 0 1 0 1 0 1 0 0 0 D[6]
0 1 0 1 0 1 0 1 0 0 D[7]
1 0 1 0 1 0 1 0 1 0 D[8]
0 1 0 1 0 1 0 1 0 1 D[9]

Tan fácil de resolver como la anterior. Y si no te gusta puedes abrir un pulso y cerrar dos, tres, etc. o no volver a abrir hasta que el paquete llegue (el método tradicional de un paquete por viaje). Podemos subir o bajar el ritmo para ajustarlo a la resolución que tenga el detector.

Con todos mis respetos, el FT-IMS, las matrices de Hadamard y demás zarandajas son para físicos de pizarra, no merece la pena perder más tiempo con eso.

Avatar de Usuario
fusion
Mensajes: 4573
Registrado: Lun Feb 20, 2006 1:12 pm
País: Madrid
Ciudad: Alcobendas
Ubicación: Madrid

Re: Espectrometría de movilidad iónica

#133 Mensaje por fusion »

He hecho el SW de Homer y he sacado esta matriz de Hammad pero no vá:
Imagen
Al multiplicarlo por sí misma no sale la matriz unidad y por tanto la directa no es la inversa. A ver si encuentro la versión que yo hice y que llamé "trasformada digital" y que tsí cumple y tiene unos y ceros solo

NOTA: en RS amidata venden relés de láminas que van a 10kV

Avatar de Usuario
Homer
Mensajes: 2151
Registrado: Dom Abr 30, 2006 2:07 pm
País: España
Ciudad: Sabadell
Contactar:

Re: Espectrometría de movilidad iónica

#134 Mensaje por Homer »

¿0? Las matrices de Hadamard no contienen 0, solo +1 y -1. Y al multiplicarla por su traspuesta, que en este caso es igual a la original, te dará la matriz identidad multiplicada por el rango (16).

Las reclamaciones a James Joseph Sylvester, que fue quien inventó el algoritmo https://en.wikipedia.org/wiki/Hadamard_matrix :lol:

Avatar de Usuario
fusion
Mensajes: 4573
Registrado: Lun Feb 20, 2006 1:12 pm
País: Madrid
Ciudad: Alcobendas
Ubicación: Madrid

Re: Espectrometría de movilidad iónica

#135 Mensaje por fusion »

Ok, ¡gracias!, ya funciona, aunque he cambiado un poco el sw:

Código: Seleccionar todo

int main()
{
const int RANGO=2048;
    int i, j;
    double hadamard[RANGO][RANGO];
    hadamard[0][0] = 1;
    for (int k = 1; k < RANGO; k += k) {
        for (i = 0; i < k; i++) {
            for (j = 0; j < k; j++) {
                hadamard[i + k][j] = hadamard[i][j];
                hadamard[i][j + k] = hadamard[i][j];
                hadamard[i + k][j + k] = -hadamard[i][j];
            }
        }
    }
    FILE* str = fopen("out.csv", "w");
    if (!str) { cout << "ERROR out.csv" << endl; getchar(); return -1; }
    for (i = 0; i < RANGO; i++)
    {
        for (j = 0; j < RANGO; j++)
        {
            fprintf(str, "%i,", hadamard[i][j]);
        }
        fprintf(str, "\n");
    }
    fclose(str);
	cout << "===== END =====" << endl; getchar();
}
Rango debe ser el doble de líneas de resolución :)

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados