Cambio de fase para normalizar los datos de onda sinusoidalEstoy tratando de cambiar de fase los datos de onda sinusoidal para que todos los picos mínimos se desplacen a lo largo del eje x. He estado intentando con este código pero encontré un error con " Debe ser una lista o número en el acceso o evaluación de 'Matrix' , Matrix/*###*/(sineCol < < Get Values)"
Cualquier ayuda sería apreciada.
// Cargar datos
dt = Tabla de datos actuales ();
// Especificar columna con datos de onda sinusoidal
sineCol = dt << columna("PITCH");
// Convertir sineCol a matriz
sineMat = Matrix(sineCol << Obtener valores);
// Calcular el índice del pico mínimo
minIndex = Loc Min(sineMat);
// Calcular el número de puntos para desplazar los datos
shiftPoints = N filas (sineMat) - minIndex;
// Cambia los datos
shiftedSineCol = J(N Rows(sineMat), 1, .);
Para(i = 1, i <= N Filas(sineMat), i++,
shiftedSineCol[i] = If(i <= shiftPoints, sineMat[shiftPoints-i+1], sineMat[N Rows(sineMat)-i+shiftPoints+1]);
);
// Crear tabla de datos desplazados
newTable = New Table("PITCH Shifted", Add Rows(N Rows(dt)));
newTable["PITCH Shifted"] = shiftedSineCol;
nuevaTabla["HORA"] = dt:columna("HORA");
// Guardar tabla
newTable << Guardar("PITCH Shifted.jmp");
Análisis y modelado de datos básicosRe: Cambio de fase para normalizar datos de onda sinusoidalLa referencia a sineCol no es correcta
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
sineCol = dt << Column("name");
show(sineCol);
sineCol2 = Column(dt, "name");
show(sineCol2);
aquí hay algunas formas opcionales de obtener valores en la matriz desde una columna continua
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
sineMat1 = Column(dt, "height") << get values;
sineMat2 = dt[0, "height"];
show(sineMat1, sineMat2);Re: Cambio de fase para normalizar datos de onda sinusoidalHola, gracias por esto, no tengo mucha experiencia con la escritura de guiones, ¿puedes explicarme dónde puse estas líneas actualizadas en el guión? ¿Y cuál es la diferencia entre sineMat1 y sineMat2?
Gracias
Re: Cambio de fase para normalizar datos de onda sinusoidalMe gustaría mucho tratar de familiarizarme lo suficiente con las secuencias de comandos para que pueda usar esto y comprender lo que hace (usar la impresión para depurar secuencias de comandos, hacer referencia a la columna de la tabla de datos y obtener valores de esa columna). sineMat1 y sineMat2 son iguales, pero el método de cómo se recuperan los valores de la tabla de datos difiere.
Reemplazaría el código utilizado para su sineCol y sineMat con los nombres de columna y tabla de datos correspondientes, a continuación se muestra un ejemplo que usa Big Class y columna de altura.
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
sineCol = Column(dt, "height");
sineMat = Column(dt, "height") << get values;
Re: Cambio de fase para normalizar datos de onda sinusoidalGracias, esta no es mi área de especialización. Estoy tratando de encontrar una manera de visualizar mis datos para mi doctorado. Tengo este error y he intentado arreglarlo pero parece que no puedo.
¿Tendrías algún consejo?
subíndice no válido (debe ser un número o una lista de números){395} en el acceso o la evaluación de 'Assign', newTable["PITCH Shifted"] = /*###*/shiftedSineCol/*###*/
Re: Cambio de fase para normalizar datos de onda sinusoidalLa sintaxis después de crear la nueva tabla parece ser incorrecta cuando intenta crear una columna. Sugeriría revisar JMP Scripting Index (que se encuentra en el menú de ayuda de JMP) y Guía de secuencias de comandos (jmp.com) . Ambos tienen buenos ejemplos (a veces) en la sintaxis .jsl
Índice de secuencias de comandos:

Tablas de datos (jmp.com)
Re: Cambio de fase para normalizar datos de onda sinusoidal¿Tienes JMP Pro? Si es así, entonces el Explorador de datos funcionales podría ser útil Proporciona muchas funciones de procesamiento de datos y ajusta las funciones de base spline para analizar datos cíclicos. Es posible que no necesite codificar tanto.