Formula di colonna personalizzataVorrei aggiungere una nuova colonna "Vth" nella mia tabella con il seguente calcolo: -
Per prima cosa devo trovare l'indice i della colonna 'IDS' dove 'IDS' è più vicino a 1e-9 (o Log10[IDS] = -9); e quindi Vth = VGS(i). Dovrebbe essere raggruppato anche per colonne Sito, Misurazione, SWP e Wafer. Cioè, ogni combinazione unica di Sito, Misurazione, SWP, Wafer avrà un valore V.
Se l'IDS non è esattamente 1e-9. Per favore, interpola in questo modo. Questo è; Log10[IDS] rispetto a VGS.
VTH esatto = Interpola( Log10( 1e-9 ), [Log10[IDS](i)) Log10[IDS](i-1)] , [VGS (i) VGS (i-1) ] );
Notare che la colonna SWP è la scansione del VGS in direzione avanti (0) e indietro (1); pertanto è necessario curare adeguatamente la direzione dell'interpolazione.
Combinazione e pulizia dei datiRi: Formula della colonna personalizzataho fatto alcuni errori di battitura nella email qui sotto. Di seguito dovrebbe essere corretto
Trova VGS, logIDS, che è appena sopra -9..-- Chiamalo VGS_u, log(IDS)_u
Trova VGS, logIDS, che è appena sotto -9..-- Chiamalo VGS_i, log(IDS)_i
calcolare la pendenza, m = abs(log(IDS)_u-log(IDS)_i)./abs(abs(VGS_u-VGS_i))
VTH esatto = VGS_i + 1/m*(9-abs(log(IDS)_i)))
Ri: Formula della colonna personalizzataCiao, Kevin!
Stavo pensando che potresti adottare questo approccio.
Trova VGS, logIDS, che è appena sopra -9..-- Chiamalo VGS_u, log(IDS)_u
Trova VGS, logIDS, che è leggermente inferiore a -9..-- Chiamalo VGS_i, log(IDS)_i
calcolare la pendenza, m = abs(log(IDS)_u-log(IDS)_i)./abs( log(IDS)_u-log(IDS)_i)
VTH esatto = m*(abs(VGS_u-VGS_i)) + min(abs( log(IDS)_u), abs( log(IDS)_i) )
Volevo davvero una formula personalizzata anche se può essere eseguita tramite formule in più colonne.
Saluti,
Pankaj
Ri: Formula della colonna personalizzataSe fosse possibile averlo come formula di colonna sarebbe piuttosto difficile.Probabilmente la scelta migliore per te sarebbe uno script di tabella o semplicemente uno script normale.Quanto segue sembra funzionare bene.
dt = Current Data Table();
summarized table = dt << Summary( Group( :Site, :Measurement, :SWP, :Device, :Wafer ) );
lookup = [=> ];
For Each Row(
summarized table,
If( !(lookup << Contains( :Site, Empty() )),
lookup[:Site] = [=> ]
);
If( !(lookup[:Site] << Contains( :Measurement, Empty() )),
lookup[:Site][:Measurement] = [=> ]
);
If( !(lookup[:Site][:Measurement] << Contains( :SWP, Empty() )),
lookup[:Site][:Measurement][:SWP] = [=> ]
);
If( !(lookup[:Site][:Measurement][:SWP] << Contains( :Device, Empty() )),
lookup[:Site][:Measurement][:SWP][:Device] = [=> ]
);
If( !(lookup[:Site][:Measurement][:SWP][:Device] << Contains( :Wafer, Empty() )),
lookup[:Site][:Measurement][:SWP][:Device][:Wafer] = [=> ]
);
summarized table << Clear Select;
summarized table << Select Rows( Row() );
rows = dt << Get Selected Rows;
vals = Column( dt, "Log10[IDS]" )[rows];
test = {};
For( i = 1, i <= N Items( rows ), i++,
test[i] = Eval List( {Abs( 9 + vals[i] ), rows[i]} )
);
Sort List Into( test );
lookup[:Site][:Measurement][:SWP][:Device][:Wafer] = Column( dt, "VGS" )[test[1][2]];
);
Close( summarized table, No Save );
Eval( Eval Expr(
dt << New Column( "LOOKUP_RESULT", "Numeric", Formula( lookup = Expr( lookup ); lookup[:site][:measurement][:swp][:device][:wafer] ) )
) )Ri: Formula della colonna personalizzataCiao, pankajsync!
Sì, ho potuto guardarlo.
Trovare il valore VGS relativo al valore IDS più vicino a 1e-9 è piuttosto banale.Imposta una colonna della funzione di perdita che accetta il valore assoluto di log10(IDS)+9, quindi identifica il Col Minimum di tale valore mediante Sito, Misurazione, SWP, Dispositivo, Wafer.Il VGS corrispondente a questi minimi del valore di perdita sarà il tuo Vth inesatto.
Ma nessuno dei valori IDS è esattamente 1e-9, e alcuni dei valori IDS "più vicini" sono abbastanza distanti da 1e-9, quindi spiega più in dettaglio quale procedura e risultato intendi ottenere quando usi la parola "interpolare ".Intendi una previsione di Vth se l'IDS fosse esattamente 1e-9?Utilizzando un modello lineare?Ogni combinazione unica di sito, misurazione, SWP, dispositivo e wafer richiede questa procedura indipendentemente dalla distanza del valore IDS da 1e-9?
Forse, oltre a rispondere a queste domande, potresti condividere quali approcci hai già provato senza successo?Personalmente, prenderei in considerazione la possibilità di scrivere uno script JSL per farlo perché sembra che la tua applicazione possa trarre vantaggio da alcuni controlli degli errori e dalla verifica delle condizioni al contorno dei dati iniziali, ma alcuni degli abitanti di questo sito di discussione sono Formula Jedi che mi impressionano seriamente con le loro capacità e potrebbero avere una soluzione se è necessario avere una formula.Se anticipo correttamente le tue risposte, non credo che lo farò comunque.
Saluti,
Kevin
Ri: Formula della colonna personalizzataCIAO,
Ecco quanto sono andato lontano: posso trovare l'ID dell'IDS più vicino a 1e-9 per Wafer, Sito, Misurazione, Dispositivo e Wafer e quindi restituire il VGS corrispondente altrimenti restituisce 0. Tuttavia, l’interpolazione è, come ho detto prima, più impegnativa.
If(
Abs( :Name( "Log10[IDS]" ) + 9 ) == Col Minimum(
Abs( :Name( "Log10[IDS]" ) + 9 ),
:Site,
:Measurement,
:Device,
:Wafer
),
:VGS,
0
);
Migliore,
TS
Ri: Formula della colonna personalizzataCIAO,
Si scopre che è un po' più impegnativo del previsto ottenere una formula di colonna per fare ciò che chiedi.
Spero che altri abbiano più fortuna di quella che ho avuto io finora.
Migliore,
TSRi: Formula della colonna personalizzataQualcuno è riuscito a guardarlo?Ri: Formula colonna personalizzatasi prega di utilizzare questo file JMP. Ignora Excel sopra.
Descrizione aggiornata di seguito: -
Vorrei aggiungere una nuova colonna "Vth" nella mia tabella con il seguente calcolo: -
Per prima cosa devo trovare l'indice i della colonna 'IDS' dove 'IDS' è più vicino a 1e-9 (o Log10[IDS] = -9); e quindi Vth = VGS(i). Dovrebbe essere raggruppato anche per colonne Sito, Misurazione, SWP, Dispositivo, Wafer. Cioè, ogni combinazione unica di Sito, Misurazione, SWP, Wafer, Dispositivo avrà un valore V.
Se l'IDS non è esattamente 1e-9. Per favore, interpola in questo modo. Questo è; Log10[IDS] rispetto a VGS.
VTH esatto = Interpola( Log10( 1e-9 ), [Log10[IDS](i)) Log10[IDS](i-1)] , [VGS (i) VGS (i-1) ] );
Notare che la colonna SWP è la scansione del VGS in direzione avanti (0) e indietro (1); pertanto è necessario curare adeguatamente la direzione dell'interpolazione.