Inserire colonna dati a matlab [MatLab]

gtsolid
ciao a tutti.
ho un file di testo del genere:

http://img819.imageshack.us/img819/6282/immaginezpr.jpg
devo prendere la terza e la quarta colonna della parte bassa (rettangolo rosso) di quel file di testo chilometrico in modo da creare 2 vettori. essi andranno poi dati in pasto ad una funzione matlab che ho già implementato e che funziona con vettori però definiti dall'interno di matlab stesso.

come posso fare?

Risposte
apatriarca
Lo devi fare una singola volta o molte volte? Esistono degli editor di testo che permettono di selezionare "rettangoli" di testo e quindi selezionare solo quelle due colonne. Alternativamente puoi probabilmente usare un qualche linguaggio di scripting e qualche regex.

claudio862
Direi che basta una semplice regex da un editor di testi un minimo evoluto (Notepad++, Sublime Text...). Qualcosa del genere (supponendo che i numeri siano sempre nello stesso formato):

^\s*(\d+)\s+(\d+,\d+)\s+([\+-]?\d+,\d+)\s+([\+-]?\d+,\d+)\s+.*$

(magari ti sembra incomprensibile, ma è davvero banale, ti consiglio di imparare un minimo le regex perché in questi casi sono fondamentali)

Ad ogni riga il terzo e il quarto campi catturati (di solito indicati con \3 e \4) corrispondono ai due valori.

Magari fai un esempio di come vuoi l'output (anche solo delle prime 3 righe, ma non come immagine, come testo).

gtsolid
ho importato i dati dal file di testo ad uno di excel. in questo modo ho un accesso più rapido e intuitivo ai dati: http://img189.imageshack.us/img189/5709/immagineuur.jpg

per trasformare i dati selezionati in 2 vettori distinti (uno per colonna) ho usato la funzione
num=xlsread(filename,xlRange)

detta funzione andrà poi interfacciata ad una GUI; quindi ogni volta dovrò andare a specificare un file.
cosa grandiosa sarebbe dirgli: prendi in vettore tutti i valori nelle celle delimitate in alto da "Cycle Number" e in basso da un cella vuota. questo perchè tutti i file di excel che sputa fuori la macchina hanno lo stesso formato.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.