Re: Matlab – luogo delle radici – PGF & TikZ

#65281
Liverpool
Partecipante
    Up
    0
    Down
    ::


    Il codice che hai scritto nel messaggio 64432 contiene un errore. Con l’istruzione:

    `
    \pgfmathsetmacro{\goodrows}{\rows-2}
    `
    stai dicendo che il numero di righe da leggere è inferiore di una unità rispetto a quello effettivo della tabella di dati. Quindi, con l’istruzione:

    `
    \pgfplotstablegetelem{\goodrows}{\im}\of\datawhead
    `
    stai andando a leggere i valori nella penultima riga e li stai prendendo come ordinate degli zeri, ma in realtà non è così. Nel tuo caso, ad esempio, gli zeri al finito si trovano in
    (-10,\pm 48.26) mentre, con il tuo codice, gli zeri si trovano in (-10,\pm 48.25) e non è detto che l’errore sia sempre così piccolo.

    L’istruzione corretta è:

    `
    \pgfmathsetmacro{\goodrows}{\rows-1}
    `
    Tuttavia, se provi a compilare, avrai l’errore che ti avevo segnalato nell’intervento 64416 dovuto alla presenza degli Inf, che pgfplots non accetta. La soluzione consiste nel sostituire tutti gli Inf con dei NaN, che da pgfplots vengono invece riconosciuti ed ignorati. Non so se in pgfplots ci sia un comando per farlo automaticamente (non lo conosco bene), ma di sicuro c’è in Matlab.

    Nel tuo sorgente, prima di

    `
    r_re_im= [real(r)',imag(r)',k'];
    `
    inserisci

    `
    r(isinf(r))=NaN;
    `
    In questo modo sostituirai solo gli Inf di r e non quello di k.

    Devo anche segnalarti che, siccome la tua tabella non ha una riga di intestazione, la definizione di \datawhead è inutile e tutto quanto ad esso riferito, potrebbe esserlo equivalentemente a \data. Infine ti ricordo che \varpi è già il comando per ottenere una lettera greca, quindi sarebbe meglio utilizzare un altro nome.

    Ciao

    Go to top