Grafico matlab e qualità di stampa

  • Creatore
    Topic
  • #72425
    Up
    0
    Down
    ::


    Ciao a tutti, ho un problema con un file matlab. Con una serie di comandi creo una griglia da inserire nella tesi per la valutazione del luogo delle radici con questa serie di comandi:

    `
    num=[1];
    den=num;
    sysc= tf (num, den);
    sysd= c2d(sysc,1);
    rlocus(sysd);
    grid;
    `

    Per aumentare la leggibilità imposto come limite per l’asse x [-1.1, 1.1] e per l’asse y [0, 1.1]. Una volta esportata in eps e inserita nel documento latex in orizzontale su un a4 intero, stampo su carta ma la griglia non si vede perchè sono tratti troppo leggeri. Ho cercato dovunque, ma come si fa a cambiare la dimensione delle linee della griglia per il luogo delle radici (non la grigia delle rette parallele agli assi)? Aiutatemi per favore! Grazie mille a tutti!:grin:

Visualizzazione 5 filoni di risposte
  • Autore
    Risposte
    • #72426
      OldClaudio
      Partecipante
        Up
        0
        Down
        ::


        Usando Tikz, che ti permette di fare bene e meglio tutto quello che puoi fra con matlab e con gnuplot.

        Se ai già le coordinate del luogo delle radici, falle stamapre a matlabe in un file di ascci con le ascisse e le oridnate, e poi importa il tutto con tikz, o mehlio con al sua estensione pdfplots.

        Ci sono una marea di filoni in questo forum dove si parla di tikz.

        Non farti spaventale dal manuale di 700 pagine; aprilo con texdoc tikz e sua l’indice analitico in modo intelligente per andare nelle pagine che interessano; nella prima parte c’è un ottimo tutorial con molti esempi che ti permette di familiarizzarti con la sintassi di tikz.

        Ti stupirai della bellezza dei risultati ottenibili.

      • #72427
        robitex
        Amministratore del forum
          Up
          0
          Down
          ::

          Number22″ post=71557Ciao a tutti, ho un problema con un file matlab. Con una serie di comandi creo una griglia da inserire nella tesi per la valutazione del luogo delle radici con questa serie di comandi:

          `
          num=[1];
          den=num;
          sysc= tf (num, den);
          sysd= c2d(sysc,1);
          rlocus(sysd);
          grid;
          `

          Per aumentare la leggibilità imposto come limite per l’asse x [-1.1, 1.1] e per l’asse y [0, 1.1]. Una volta esportata in eps e inserita nel documento latex in orizzontale su un a4 intero, stampo su carta ma la griglia non si vede perchè sono tratti troppo leggeri. Ho cercato dovunque, ma come si fa a cambiare la dimensione delle linee della griglia per il luogo delle radici (non la grigia delle rette parallele agli assi)? Aiutatemi per favore! Grazie mille a tutti!:grin:

          Ciao.
          Leggi anche l’articolo sul numero di ottobre 2011 su pgfplots… 28 pagine di documentazione di sintesi del pacchetto, che illustra anche come si può lavorare a seconda delle esigenze.
          Finché l’elaborazione numerica è semplice si può anche far fare tutto a pgfplots, altrimenti ci sono un paio di sistemi:
          1 – utilizzare gnuplot
          2 – preparare file nel formato x y in formato testo, da leggere.
          i.e.
          0.1254 5.212
          0.1256 5.542
          0.1258 5.654
          ecc

          Di solito la possibilità di utilizzare tutti i comandi grafici di pgf all’interno della tela del grafico risolve tutti i problemi particolari, come etichettature delle curve, legende personalizzate, linne di riferimento, ecc.
          Nell’articolo è citato anche lo script matlab2tikz che, visto che lavori in Matlab dovresti conoscere.
          Buon lavoro.
          R.

        • #72428
          Liverpool
          Partecipante
            Up
            0
            Down
            ::


            Per impostazione, Matlab nasconde le maniglie della griglia, perciò bisogna prima svelarle, poi è possibile modificarne le proprietà oppure estrarne le coordinate per poterle importare in pgfplots, come ti hanno già suggerito. Questa seconda soluzione è di solito preferibile, per la migliore resa grafica, ma in questo caso richiede un bel po’ di passaggi aggiuntivi e non me la sento di consigliartela. Per rispondere alla tua domanda, segui questo codice Matlab:
            `
            set(0, 'ShowHiddenHandles', 'on') % svela le maniglie nascoste
            hf = get(gcf, 'Children'); % ottiene tutte le maniglie della figura
            hg = get(hf(3), 'Children'); % ottiene tutte le maniglie ai vari elementi della griglia (etichette e linee)
            for i = 1:length(hg) % processa un elemento della griglia per volta
            if strcmp(get(hg(i), 'Type'), 'line') % se l'elemento è una linea…
            set(hg(i), 'LineWidth', 1) % … ne modifica lo spessore (inizialmente 0.5)
            end
            end`Penso che i commenti siano abbastanza chiari. Per provare altri spessori di linea, devi sostituire “1” con un altro numero. Se invece vuoi uno stile di linea differente, devi sostituire la terz’ultima riga con (ad esempio):
            `set(hg(i), 'LineStyle', '–') % … ne modifica lo stile (inizialmente ':')`Se invece vuoi avere accesso alle coordinate per usare pgfplots, devi estrarre i valori di ‘XData’ e ‘YData’ per le linee e i primi due elementi di ‘Position’ per le etichette, ma il lavoro si complica e meriterebbe una risposta a parte.

            Le alternative possibili sono:

            1) modificare direttamente il file EPS aprendolo con un editor di testo qualunque. Non sono un esperto di EPS, ma prova a modificare questa riga:
            `/DO { [0.5 dpi2point mul 4 dpi2point mul] 0 setdash } bdef`[tt]0.5[/tt] è la “lunghezza” del “punto” che tu vuoi modificare, [tt]4[/tt] è la distanza tra i punti. Per esempio, se scrivi`/DO { [4 dpi2point mul 4 dpi2point mul] 0 setdash } bdef`avrai una linea tratteggiata con la lunghezza del tratto pari alla distanza tra due tratti. Puoi scegliere le proporzioni che più ti piacciono.

            2) utilizzare lo script [tt]matlab2tikz[/tt] (vedi altrove su questo forum), che fa il lavoro sporco per te, ma in questo caso non funziona correttamente (mancano le etichette della griglia).
            In ogni caso, dopo aver installato lo script nel percorso di Matlab ed aver generato la figura, scrivi`matlab2tikz('luogo.tikz')` nella finestra di comando. Copia il file generato nella cartella di lavoro di LaTeX, carica [tt]pgfplots[/tt] nel preambolo del documento e, nel punto in cui vuoi inserire il grafico, scrivi:`\begin{tikzpicture}
            \input{luogo.tikz}
            \end{tikzpicture}`Anche in questo caso, puoi modificare le dimensioni dei tratti agendo sul file [tt].tikz[/tt], che si apre normalmente con il tuo editor. Dovresti cercare le righe con la parola [tt]dotted[/tt] ed agire su quelle. Puoi modificare la dimensione dei punti sostituendo ad esempio con
            `dotted, line width=1pt,` oppure adoperare altri tipi di linea (manuale di pgf, par. 15.3.2 pag. 157).
            Puoi anche modificare tutte le righe in una sola volta, ridefinendo lo stile dotted, ad esempio, in questo modo:
            `\begin{tikzpicture}
            \tikzstyle{dotted}=[line width=1pt];
            \input{rlocus.tikz}
            \end{tikzpicture}`o
            `\begin{tikzpicture}
            \tikzstyle{dotted}=[dashed];
            \input{rlocus.tikz}
            \end{tikzpicture}`
            Ciao

            P.S.: poi facci sapere che strada hai scelto e com’è andata

          • #72429
            Liverpool
            Partecipante
              Up
              0
              Down
              ::


              Ho modificato sostanzialmente il messaggio precedente, perché stanotte mi è venuta l’ispirazione.

              Ciao

            • #72430
              Up
              0
              Down
              ::


              Grazie mille a tutti! Grazie intanto per le risposte, ho letto un paio di cose in giro sui metodi che avete citato qui, e il problema sta nel fatto che sono obbligato a tracciare vari grafici con matlab quindi non psso mettermi a farli a mano con i vari sistemi tipo gnuplot o pgfplot. Quindi mi sa che smanetto un po’ con matlab come consigliato da Liverpool! Grazie comunque a tutti!

            • #72431
              Liverpool
              Partecipante
                Up
                0
                Down
                ::

                Number22″ post=71952il problema sta nel fatto che sono obbligato a tracciare vari grafici con matlab quindi non psso mettermi a farli a mano con i vari sistemi tipo gnuplot o pgfplot.

                Peccato. Comunque, come ti hanno già detto @OldClaudio e @robitex, i calcoli puoi farli fare a Matlab ed importarli in pgfplots. Il pdf che ho allegato è stato realizzato interamente con pgfplots con una procedura praticamente automatica. Non ti sembra migliore della griglia di Matlab? Lo stesso risultato si può ottenere importando i valori delle coordinate da Matlab, ma il codice .m per farlo è di una quarantina di righe solo per la griglia.

                [attachment=255]grigliapgf.pdf[/attachment]

                Ciao

                Attachments:
                You must be logged in to view attached files.
            Visualizzazione 5 filoni di risposte
            • Devi essere connesso per rispondere a questo topic.

            Go to top