Premessa: penso che Claudio (cfiandra) ti abbia dato un consiglio d’oro. Potresti generare il codice TikZ e poi modificare quello.
tonegas” post=64389– In più sarebbe bello che capisse in automatico il numero di campioni totale così da inserire gli zeri nel grafico.
Comando \pgfplotstablegetrowsof a pag. 56 del manuale di pgfplotstable. Un esempio che ti può essere utile, lo trovi qui.
tonegas” post=64389– sarebbe bello si riuscisse a fare in automatico le coppie [numero reale, numero immaginario] indipendentemente dal numero di poli.
Con \pgfplotstablegetcolsof, sempre a pag. 56 del manuale di pgfplotstable, puoi conoscere il numero di colonne. Utilizzando \foreach e i puntini di sospensione, puoi andare da 0 ad (ncol – 1) / 2 – 1 per le parti reali e da (ncol – 1) / 2 ad (ncol – 1) per le parti immaginarie. Il -1 tra parentesi serve perché l’ultima colonna riporta i valori di k che non ci interessano (e non ho capito perché li hai salvati).
Cosiderazioni su Matlab.
Tieni presente che, se ci sono zeri all’infinito, Matlab ti darà degli Inf tra i valori numerici e non so come verrebbero trattati da pgfplots. Se dovessero dare problemi, la soluzione potrebbe essere di sostituirli con dei nan che pgfplots ignorerebbe.
Non mi fido troppo del metodo con il quale Matlab individua i rami del luogo. Penso che Mathematica sia più affidabile.
Dal punto di vista dell’interpretazione dei dati, sarebbe meglio se le coppie parte reale/immaginaria si trovassero in colonne adiacenti. Un codice per ottenerlo potrebbe essere:
`
[nrow, ncol] = size(r);
r_re_im = [real(r) imag(r)]';
r_re_im = [reshape(r_re_im, ncol, 2*nrow) k'];`
corrispondente al più sintetico:
`
r_re_im = [reshape([real(r) imag(r)]', size(r, 2), 2*size(r, 1)) k'];`
Ovviamente poi dovresti riscrivere il codice del \foreach prendendo le colonne pari a partire da 0 per le parti reali e quelle dispari per le parti immaginarie.
Ciao