Sto cercando di sfasare i dati dell'onda sinusoidale in modo che tutti i picchi minimi siano spostati per trovarsi lungo l'asse x. Ho provato con questo codice ma ho riscontrato un errore con " Dovrebbe essere un elenco o un numero in accesso o valutazione di 'Matrix' , Matrix/*###*/(sineCol < < Get Values)"
Qualsiasi aiuto sarebbe apprezzato.
// Caricamento dati
dt = Tabella dati corrente();
// Specifica la colonna con i dati dell'onda sinusoidale
sineCol = dt << colonna("PASSO");
// Converte sineCol in matrice
sineMat = Matrix(sineCol << Ottieni valori);
// Calcola l'indice del picco minimo
minIndex = Loc Min(sineMat);
// Calcola il numero di punti per spostare i dati
shiftPoints = N Rows(sineMat) - minIndex;
// Sposta i dati
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]);
);
// Crea una tabella di dati spostati
newTable = New Table("PITCH Shifted", Add Rows(N Rows(dt)));
newTable["PITCH Shifted"] = shiftedSineCol;
nuovaTabella["ORA"] = dt:colonna("ORA");
// Salva tabella
newTable << Save("PITCH Shifted.jmp");