J'essaie de déphaser les données d'onde sinusoïdale afin que tous les pics minimaux soient décalés pour se situer le long de l'axe x. J'ai essayé avec ce code mais j'ai rencontré une erreur avec " Doit être une liste ou un nombre dans l'accès ou l'évaluation de 'Matrix' , Matrix/*###*/(sineCol < < Get Values)"
Toute aide serait appréciée.
// Charger les données
dt = table de données actuelle();
// Spécifiez la colonne avec des données d'onde sinusoïdale
sineCol = dt << colonne("PITCH");
// Convertit sinusCol en matrice
sineMat = Matrix(sineCol << Get Values);
// Calcule l'indice du pic minimum
minIndex = Loc Min(sineMat);
// Calcule le nombre de points pour décaler les données
shiftPoints = N Rows(sineMat) - minIndex ;
// Décaler les données
shiftedSineCol = J(N Rows(sineMat), 1, .);
For(i = 1, i <= N Rows(sineMat), i++,
shiftedSineCol[i] = If(i <= shiftPoints, sineMat[shiftPoints-i+1], sineMat[N Rows(sineMat)-i+shiftPoints+1]);
);
// Crée une table de données décalées
newTable = New Table("PITCH Shifted", Add Rows(N Rows(dt)));
newTable["PITCH Shifted"] = shiftedSineCol ;
newTable["TIME"] = dt:column("TIME");
// Enregistrer le tableau
newTable << Enregistrer("PITCH Shifted.jmp");