Estoy 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");