Impossibile eseguire la logica booleana utilizzando lo script jmp sulla formula della tabellaCIAO,
Sto cercando di eseguire uno script semplice che selezioni e poi nasconda ed escluda i punti che si trovano a una distanza radiale maggiore di 100 mm dal centro.
Per semplificare il debug, ho suddiviso questo in due script: il primo genera una colonna con la formula della distanza radiale Radial = (x^2 + y^2)^(1/2) e il secondo valuta questa formula, selezionando e nascondendo le righe in cui Radial > 100.
Sfortunatamente questo non funziona. Per qualche strana ragione, la valutazione funziona su questa formula solo fino a un certo valore. Radial > (qualsiasi cosa oltre 30) seleziona tutte le righe.
Vedo due soluzioni:
1) Scrivere i valori nella colonna Radial, non la formula stessa. (I valori vengono valutati correttamente, la formula no). Non so come fare.
2) Comprendere e correggere il problema in modo che la formula possa essere valutata rispetto a un valore maggiore di 30.
Sarebbe accettabile una risposta di scripting o una spiegazione interattiva. Vorrei risolvere questo problema e imparare da esso.
Grazie!
Davide
// script for creating the Radial column<BR />dt1 = Current Data Table ();
dt1 << New Column( "Radial", Formula ((X coordinate^2 + Y coordinate^2)^(1/2)));<BR /><BR />// script for evaluating the Radial formula<BR />dt =Current Data Table();<BR />dt << Clear Row States; <BR />dt << Select where(Radial < 100);<BR />dt << hide and exclude;<BR />
Fusione e pulizia dei datiRe: Impossibile eseguire la logica booleana utilizzando lo script jmp sulla formula della tabellaSto facendo un po 'di indovinare, ma credo che il tuo problema con Radial vs Radial 1 sia il tuo non ambito corretto della variabile di colonna.Nella tua dichiarazione
dt << Select where((Radial 1> 100) | (Radial 1< 30) | (Pits Only > mf));
dovresti inserire un ":" davanti ai nomi delle colonne :Radial 1 e :Pits Only.Il motivo per cui lo script funziona con Radial 1 è che non esiste una variabile di memoria chiamata Radial 1, in cui JMP può essere confuso.Presumo che a un certo punto dei tuoi tentativi di codifica tu abbia accidentalmente creato una variabile di memoria di Radial, quindi quando hai specificato
dt << Select where((Radial> 100) | (Radial< 30) | (Pits Only > mf));
JMP stava sostituendo il valore per Radial con il valore delle variabili di memoria, non il valore della colonna Radial.
Re: Impossibile eseguire la logica booleana utilizzando lo script jmp sulla formula della tabellaGrazie per aver risposto Jeff.
Incollare l'ultima riga del tuo script nel mio non ha risolto il problema. Tuttavia, sono stato in grado di trovare una soluzione cambiando il nome della colonna in "Radial 1" e aggiungendo una riga con Eval Formula alla fine. Non sono sicuro del motivo per cui funziona. La tabella dati è di circa 1.300 righe con 15 colonne, ogni numero ha una larghezza da 10 a 12.
I seguenti due script funzionano. Li incollo nella loro interezza. Le altre linee valutano la profondità e la distribuzione della fossa.
Qualche idea sul perché le modifiche hanno funzionato? Sono stato in questo per la maggior parte della giornata.
Script 1: crea le colonne "Solo box" e "Radiale 1".
dt1 = Current Data Table ();
dt1 << Clear Row States;
dt1 << New Column( "Pits Only", Formula (If( :Name( "Height (mm)" ) <= 0, :Name( "Height (mm)"), 0 )) );
dt1 << New Column( "Radial 1", Formula ((X coordinate^2 + Y coordinate^2)^(1/2)));
dt1 << Eval Formula;
obj = dt1 << Distribution( Column( :Pits Only), Horizontal Layout( 1 ), Count Axis);
Script 2: nascondi ed escludi righe con Solo buche > 10 o Radiale 1 > 100 o Radiale 1 < 30
dt =Current Data Table();
dt << Clear Row States;
win = New Window( "Feature Depth" , <<MODAL> 100) | (Radial 1< 30) | (Pits Only > mf));
dt << hide and exclude;</MODAL>
Re: Impossibile eseguire la logica booleana utilizzando lo script jmp sulla formula della tabellaTemo di avere problemi a riprodurre qualsiasi problema qui. Ecco lo script con cui ho provato.
dt1 = New Table( "Community 416651 Select Where",
Add Rows( 1000000 ),
New Column( "x coordinate",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( Sequence( 5, 100, 5 ) ),
Set Selected
),
New Column( "y coordinate",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( Sequence( 5, 100, 5, 20 ) ),
)
);
dt1 << New Column( "Radial",
Formula(
(X coordinate ^ 2 + Y coordinate ^ 2) ^ (1 / 2)
)
);
dt1 << Select where( Radial < 60 );
Quindi, avremo bisogno di un po' più di dettagli sul tuo script e sulla tua tabella di dati.
Quanto è grande la tua tabella dati? Cos'altro sta facendo la tua sceneggiatura?
Re: Impossibile eseguire la logica booleana utilizzando lo script jmp sulla formula della tabellascript per la creazione della colonna Radiale
dt1 = Current Data Table ();
dt1 << Clear Row States;
dt1 << New Column( "Radial", Formula ((X coordinate^2 + Y coordinate^2)^(1/2)));
script per la valutazione della formula Radiale
dt =Current Data Table();
dt << Clear Row States;
dt << Select where(Radial < 100);
dt << hide and exclude;