Détecter un saut dans un paramètre et signaler où il se trouveChère communauté JMP,
J'ai du mal à trouver un moyen de détecter la coordonnée X d'un point qui représente la rupture d'un produit.
Je suis sûr qu'il est possible de le faire à l'aide de scripts, mais j'ai très peu d'expérience avec JMP.
Toute aide est la bienvenue !!
Meilleures salutations,
/ JM

Re: Détecter un saut dans un paramètre et signaler où il se trouveLes noms de colonne JMP ne font pas la distinction entre majuscules et minuscules ...... dans la plupart des cas, le fait de le référencer avec "v" ou "V" n'a aucun impact sur l'exécution du code.Re: Détecter un saut dans un paramètre et signaler où il se trouveMerci beaucoup! Ça aide beaucoup. Comme nous montrons le chemin du script dans JMP, j'entre dans le code et constate qu'il y a une petite erreur. J'ai remplacé "définir chaque valeur (e-06)" pour définir chaque valeur (-6) "-log10 I- et cela fonctionne parfaitement. Aussi, puis-je vous demander pourquoi dans JMP: dtsumm: v [dtsummRow] ne génère aucune erreur. J'aurais mis dtsumm: V [dtsummRow] car le nom de la colonne est en majuscule. Encore une fois, merci beaucoup pour votre aide! / JMRe: Détecter un saut dans un paramètre et signaler où il se trouveVoici un script qui fera les calculs pour déterminer la tension de croisement
Names Default To Here( 1 );
dt = Current Data Table();
// Create a summary table to hold the new information
dtsumm = dt << Summary( Group( :batch, :Samples ID ), Freq( "None" ), Weight( "None" ) );
// Add a new column to hold the calculated value for the Voltage value when the data crosses
// crosses the target value
dtsumm << New Column( "V" );
// Create a new column that has the target value
dtsumm << New Column( "Log10 I", set each value( e-06 ) );
// Set the active data table back to the original data table
Current Data Table( dt );
// Loop across the active data table and calculate the voltage when the Y variable crosses the
// target value
For Each Row(
currow = Row();
curbatch = dt:batch[Row()];
cursampleID = :Samples ID[Row()];
// Get the row in the output table that matches the Batch value and Samples ID
// value for the row in the main table the looping is working on
dtsummRow = (dtsumm << get rows where( dtsumm:batch == curbatch & dtsumm:Samples ID == cursampleID ))[1];
// Don't process the data if the crossing point has been previously found
If( Is Missing( dtsumm:v[dtsummRow] ),
// Find all of the matching rows above the current looping row
Highrows = dt << get rows where( dt:batch == curbatch & dt:Samples ID == cursampleID & Row() > currow );
// If the target value lies between the current rows Y value and the next matching rows Y value then
// determine the crossing voltage value by doing an interprelation of the voltage values of the current row
// and the next matching rows value.
If( dt:Name( "Log10 I [A]" )[Row()] <= dtsumm:Log10 I[dtsummRow] & dt:Name( "Log10 I [A]" )[Min( Highrows )] > dtsumm:Log10 I[dtsummRow],
dtsumm:V[dtsummRow] = dt:V[Row()] + (dt:V[Min( Highrows )] - dt:V[Row()]) * (dtsumm:Log10 I[dtsummRow] - dt:Name( "Log10 I [A]" )[Row()])
/ (dt:Name( "Log10 I [A]" )[Min( Highrows )] - dt:Name( "Log10 I [A]" )[Row()])
);
);
);