Re: Matlab – luogo delle radici – PGF & TikZ

#65275
tonegas
Partecipante
    Up
    0
    Down
    ::


    Lavorando ci un po’ su posso spiegare i passaggi iniziali.
    Il grafico che ottengo però non è molto bello.
    Se qualcuno trovasse dei modi per migliorarlo è bene accetto.

    Allora su matlab:
    `
    [r,k] = rlocus(FDT);
    r_re_im= [real(r)',imag(r)',k'];
    save('dati.mat','-ascii','r_re_im');
    `

    Invece per creare il pdf con il grafico con pgfplots:

    `
    \documentclass[landscape,a5paper,11pt]{article}
    \usepackage[utf8x]{inputenc} % utf8 encoding

    \usepackage{color} % change text color

    \usepackage{tikz}
    \usepackage{pgfplots}
    \usepackage{pgfplotstable}

    \usepackage[active,tightpage]{preview}
    \PreviewEnvironment{tikzpicture}
    \setlength\PreviewBorder{0pt}

    \usetikzlibrary{plotmarks}

    %nome del file
    \newcommand{\name}{dati.mat}

    %inserire il numero di righe
    \newcommand{\righenum}{17}

    \begin{document}
    \begin{tikzpicture}
    \begin{axis}[ymin=-150,ymax=150,xmin=-19,xmax=2,xmajorgrids,ymajorgrids,xtick={0},ytick={0}]
    %qui bisogna inserire tutte le colonne a gruppi reale immaginario
    %in questo caso il grafico ha 4 poli
    \foreach \re / \im in {0/4,1/5,2/6,3/7}{
    \pgfplotstablegetelem{0}{\re}\of{\name}
    \let\varpr = \pgfplotsretval
    \pgfplotstablegetelem{0}{\im}\of{\name}
    \let\varpi = \pgfplotsretval
    \addplot[mark = x] coordinates {(\varpr,\varpi)};

    \pgfplotstablegetelem{\righenum}{\re}\of{\name}
    \let\varzr = \pgfplotsretval
    \pgfplotstablegetelem{\righenum}{\im}\of{\name}
    \let\varzi = \pgfplotsretval
    \addplot[mark = o] coordinates {(\varzr,\varzi)};
    \addplot[no marks] table[x index = \re, y index = \im]{\name};
    }
    \end{axis}
    \end{tikzpicture}
    \end{document}
    `

    Ci sono vari abbellimenti che possono essere fatti al grafico.
    – In più sarebbe bello che capisse in automatico il numero di campioni totale così da inserire gli zeri nel grafico.
    – sarebbe bello si riuscisse a fare in automatico le coppie [numero reale, numero immaginario] indipendentemente dal numero di poli.

    Grazie a tutti per i consigli.
    Gastone

    Go to top