Se la sequenza di controllo sotto Gnuplot

Come eseguire sequenze di controllo sotto Gnuplot per favore?
Ho bisogno di fare qualcosa di simile

if (x == nan)
  set xrange[]

else
  set xrange[10:30]

Ho provato qualcosa di simile

( x > 100000 ) ?  (set xrange[]) : (set xrange[10:30])

… tuttavia senza successo! Ho passato ore a cercare di risolvere questa situazione!!!
Qualsiasi aiuto per favore?
Alla peggio posso creare uno script di shell una gestione di questo tipo, ma penso non ci dovrebbero essere alcune sequenze di controllo per risolvere questo problema.

  • Da dove viene x provengono da? gnuplot è un if (...) { } else {} costruire.
  • Ciao Christoph! Infatti io ho il mio script di input (‘x’) come parametro di gnuplot file.
  • Così che cosa circa if (x > 10000) { set xrange[*:*] } else { set xrange[10:30]}?
  • Come suggerisci, ho provato questo ‘se(2==3){ set xrange[] } else {set xrange[10:30]}’, ma non funziona.
  • Cosa vuoi dire con ‘non funziona’? Per me funziona bene, ma richiede la versione 4.6. Ma set xrange [] non fa nulla, per utilizzare autoscaling usare, ad esempio,set xrange[*:*] o set autoscale x.
  • Il problema non è stato impostato l’intervallo[]’. Ho già provato. Il problema è con il modo Sto usando ‘se’. P. S Sto usando Gnuplot 4.4
  • xrange[*:*] non funziona per me. Da “non funziona” intendo dire che ho un messaggio di errore. Il codice si rompe.
  • Con 4.4.4 seguenti opere per me: x = 2; if (x == 3) set autoscale x; else set xrange [10:30];
  • Ok, ora funziona. Grazie mille!!!

InformationsquelleAutor Courier | 2013-12-03

 

One Reply
  1. 29

    Per gnuplot 4.4.4 il if dichiarazione deve essere su una riga singola:

    if (x > 10000) set autoscale x; else set xrange [10:30]
    

    o utilizzare \ per continuare sulla riga successiva.

    if (x > 10000) \
        set autoscale x; \
    else \
        set xrange [10:30]
    

    Dal 4.6.0 gnuplot possibile utilizzare le parentesi per delimitare i rami:

    if (x > 10000) {
        set autoscale x
    } else {
        set xrange [10:30]
    }
    

Lascia un commento