Impostazione di una formula con un parametroCiao,
Sto cercando di impostare una formula in una colonna in una tabella insieme a un parametro nella formula. È facile da fare con i clic del mouse. Ma ho bisogno di scrivere una sceneggiatura. Di seguito è riportato il comando che ho scritto:
Column( Data Table( "field_data" ), "diameter Prediction Formula" ) << Set Formula( Parameter({tuning = 1},eval(Name Expr(f11)) ));
La mia formula è memorizzata in "f11". La formula cambierà, quindi posso solo riferirla usando una variabile e non scrivere la formula effettiva. Quando eseguo questa riga, la formula viene valutata correttamente, ma quando faccio clic sulla colonna per controllare la formula mostra " eval(Nome Espr(f11)) ". C'è un modo per mettere la formula attuale qui? Per favore aiuto. Grazie!!
Ri: Impostazione di una formula con un parametroGrazie mille Ian!! Questo funziona!! 
Ri: Impostazione di una formula con un parametroJim ha mostrato come utilizzare 'Substitute()' per costruire l'espressione della formula. Si noti che, per vedere come appare l'espressione richiesta, è sempre possibile creare manualmente la colonna della formula e inviare alla colonna risultante un messaggio "getScript" o "getFormula". Quindi puoi basarti sull'esempio di Jim per ottenere:
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
f11 = expr(:Height);
dt << New Column( "Column 6" );
Eval(
Substitute(
Expr(
:column 6 << set formula(tuning=2; :weight * __f11__ )
:column 6 << setFormula( Parameter( {b0 = initialValueTBD}, :weight * (__f11__ * b0) ) ),
),
Expr(initialValueTBD), 2,
Expr( __f11__ ), evalexpr(f11)
)
);
Ri: Impostazione di una formula con un parametroGrazie xnelson. Scusa, avrei dovuto dirti il passo successivo della mia analisi anche per cui è importante per me definire il parametro nel modo che ho citato prima.
Sto eseguendo una regressione non lineare utilizzando la colonna con la formula (e il parametro). Ora, se definisco il parametro nel modo in cui lo hai definito nel tuo codice, la regressione non lineare non considererà la "messa a punto" come un parametro che deve ottimizzare. Lo considererà come un valore fisso.Quindi, non mi darà il valore ottimizzato di "tuning". D'altra parte, se definisco "tuning" come parametro, la regressione non lineare mi darà il valore del parametro "tuning" che minimizza la somma dei quadrati.
Quindi, per favore fatemi sapere se c'è un modo per definire il parametro "tuning" nella stessa colonna in modo che la regressione non lineare lo consideri un parametro che deve ottimizzare e non un valore fisso. Grazie!!
Ci scusiamo per non essere stato chiaro prima.
Ri: Impostazione di una formula con un parametroUn parametro imposta semplicemente un valore di variabile di memoria nella formula, che può essere emulato semplicemente inserendo quel codice nella formula.Vedi la mia nuova variazione sulla formula
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
f11 = expr(:Height * tuning);
dt << New Column( "Column 6" );
Eval(
Substitute(
Expr(
:column 6 << set formula(tuning=2; :weight * __f11__ )
),
Expr( __f11__ ), evalexpr(f11)
)
);Ri: Impostazione di una formula con un parametroGrazie xnelson, Capisco il tuo codice. Ma il mio problema ha 1 cosa in più. Devo anche impostare un parametro nella mia formula. Lascia che ti spieghi con l'aiuto del codice di esempio che hai fornito. Ti è stata assegnata correttamente la formula nella colonna 6. Ora dopo questo ho anche bisogno di uno script per fare quanto segue che può essere fatto con i clic del mouse come segue:
1) Fare clic con il tasto destro sulla colonna 6. Vai a "Formula.."
2) Seleziona "Parametri" dal menu a discesa (vicino all'angolo in basso a sinistra)
3) Fare clic su "Nuovo parametro"
4) Assegnare un nome e un valore al parametro
5) Fare clic su ok
Per favore fatemi sapere se questo può essere fatto. Grazie!!
Ri: Impostazione di una formula con un parametroDevi forzare la valutazione nella formula e ho trovato il modo più semplice per farlo è usare Substitute()
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
f11 = ":Height";
dt << New Column( "Column 6" );
Eval(
Substitute(
Expr(
:column 6 << set formula( :weight * __f11__ )
),
Expr( __f11__ ), Parse( f11 )
)
);