Spostamento di fase per normalizzare i dati dell'onda sinusoidaleSto 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");
Analisi e modellazione dei dati di baseRe: Phase shifting per normalizzare i dati dell'onda sinusoidaleIl riferimento a sineCol non è corretto
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
sineCol = dt << Column("name");
show(sineCol);
sineCol2 = Column(dt, "name");
show(sineCol2);
qui ci sono alcuni modi opzionali per ottenere valori nella matrice dalla colonna 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: Phase shifting per normalizzare i dati dell'onda sinusoidaleCiao grazie per questo, non ho molta esperienza con la scrittura di sceneggiature, puoi spiegarmi dove ho inserito queste righe aggiornate nella sceneggiatura. E qual è la differenza tra sineMat1 e sineMat2.
Grazie
Re: Phase shifting per normalizzare i dati dell'onda sinusoidaleVorrei fortemente provare a familiarizzare abbastanza con lo scripting da poterlo utilizzare in modo da capire cosa fa (utilizzando la stampa per eseguire il debug degli script, facendo riferimento alla colonna da datatable e ottenendo valori da quella colonna). sineMat1 e sineMat2 sono uguali ma il metodo con cui i valori vengono recuperati da datatable differisce.
Sostituirai il codice utilizzato per sineCol e sineMat con i corrispondenti nomi di datatable e colonna, di seguito è riportato un esempio che utilizza Big Class e altezza colonna.
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
sineCol = Column(dt, "height");
sineMat = Column(dt, "height") << get values;
Re: Phase shifting per normalizzare i dati dell'onda sinusoidaleGrazie, questa non è la mia area di competenza, sto cercando di trovare un modo per visualizzare i miei dati per il mio dottorato di ricerca. Ho questo errore e ho provato a risolverlo ma non ci riesco.
Avresti qualche consiglio?
pedice non valido (deve essere un numero o un elenco di numeri){395} nell'accesso o nella valutazione di 'Assign' , newTable["PITCH Shifted"] = /*####*/shiftedSineCol/*####*/
Re: Phase shifting per normalizzare i dati dell'onda sinusoidaleLa sintassi dopo aver creato la nuova tabella sembra essere errata quando si tenta di creare una colonna? Suggerirei di controllare JMP Scripting Index (trovato dal menu della guida di JMP) e Guida agli script (jmp.com) . Entrambi hanno buoni esempi (a volte) sulla sintassi .jsl
Indice di script:

Tabelle dati (jmp.com)
Re: Phase shifting per normalizzare i dati dell'onda sinusoidaleHai JMP Pro? Se è così, allora il Esploratore di dati funzionali potrebbe essere utile. Fornisce molte funzioni di elaborazione dei dati e adatta le funzioni di base spline per analizzare i dati ciclici. Potrebbe non essere necessario codificare così tanto.