Déphasage pour normaliser les données d'onde sinusoïdaleJ'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");
Analyse et modélisation de données de baseRe : Déphasage pour normaliser les données d'onde sinusoïdaleLa référence à sineCol n'est pas correcte
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
sineCol = dt << Column("name");
show(sineCol);
sineCol2 = Column(dt, "name");
show(sineCol2);
voici quelques façons facultatives d'obtenir des valeurs dans la matrice à partir d'une colonne continue
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 : Déphasage pour normaliser les données d'onde sinusoïdaleSalut merci pour cela, je ne suis pas très expérimenté avec l'écriture de script, pouvez-vous m'expliquer où j'ai mis ces lignes mises à jour dans le script. Et quelle est la différence entre sineMat1 et sineMat2.
Merci
Re : Déphasage pour normaliser les données d'onde sinusoïdaleJe voudrais très fortement essayer de me familiariser suffisamment avec les scripts pour que vous puissiez l'utiliser afin de comprendre ce qu'il fait (utiliser l'impression pour déboguer les scripts, référencer la colonne de la table de données et obtenir les valeurs de cette colonne). sineMat1 et sineMat2 sont identiques mais la méthode de récupération des valeurs à partir de datatable diffère.
Vous remplaceriez le code utilisé pour votre sineCol et sineMat par les noms de table de données et de colonne correspondants, ci-dessous un exemple utilisant la grande classe et la colonne de hauteur.
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
sineCol = Column(dt, "height");
sineMat = Column(dt, "height") << get values;
Re : Déphasage pour normaliser les données d'onde sinusoïdaleMerci, ce n'est pas mon domaine d'expertise, j'essaie de trouver un moyen de visualiser mes données pour mon doctorat. J'ai cette erreur et j'ai essayé de la corriger mais je n'y arrive pas.
Auriez-vous des conseils ?
indice non valide (doit être un nombre ou une liste de nombres){395} dans l'accès ou l'évaluation de 'Assign' , newTable["PITCH Shifted"] = /*###*/shiftedSineCol/*###*/
Re : Déphasage pour normaliser les données d'onde sinusoïdaleLa syntaxe après la création de la nouvelle table semble erronée lorsque vous essayez de créer une colonne ? Je suggérerais de consulter l'index de script JMP (trouvé dans le menu d'aide de JMP) et Guide de création de scripts (jmp.com) . Les deux ont de bons exemples (parfois) sur la syntaxe .jsl
Indice de script :

Tableaux de données (jmp.com)
Re : Déphasage pour normaliser les données d'onde sinusoïdaleAvez-vous JMP Pro ? Si oui, alors le Explorateur de données fonctionnelles pourrait être utile. Il fournit de nombreuses fonctions de traitement de données et adapte les fonctions de base spline pour analyser les données cycliques. Vous n'aurez peut-être pas besoin de coder autant.