Conversione da Cell a Char

di il
1 risposte

Conversione da Cell a Char

Aiuto!!
Ciao a tutti, innanzitutto ci tengo a dirvi che sono nuovo di MatLab quindi potrei chiedervi aiuto per un problema che in realtà è facilmente risolvibile, ma giuro che ci sto impazzendo sopra.

INTRODUZIONE

Il quesito consiste nel convertire un' array di celle in un array di stringhe. Sinceramente non so neanche quanto sia utile porsi questo tipo di problema, ma vorrei scrivere un programma chiaro e, dato che sono nuovo di questo linguaggio di programmazione, a me sembra meglio lavorare direttamente con le stringhe piuttosto che con le celle (anche perché non ho ancora ben capito a cosa servano, ulteriori chiarimenti sono naturalmente ben accetti). Nonostante ciò penso che la risoluzione di questo problema potrebbe essere molto interesante per un principiante come me, lavorsndoci su ho infatti capito un po' come il programma tratta le variabili (anche se penso ci sia ancora molto lavoro da fare).

PROBLEMA

Devo leggere un file composto in questo modo:
"Data" "Apertura" "Max" "Min" "Chiusura" "Volume_ultimo"
20.10.09 37.57 37.57 37.57 37.57 55
21.10.09 36.94 36.94 36.94 36.94 60
22.10.09 37.74 37.98 37.63 37.98 1419
23.10.09 37.05 37.22 37.04 37.04 1350

In cui sia la prima riga che la prima colonna sono delle stringhe. Ho provaro con la funzione 'import' ma non riesce a distinguere che la prima colonna è composta di stringhe.
Allora ho optato per 'textscan':

fid = fopen (fileName);
dataName = textscan (fid, '%s', 6);
data = textscan(fid, '%s %f %f %f %f %f');

In tal modo ottengo due array di celle: dataName <1x1 cell> e data <1x6 cell>. Questi contengono rispettivamente i seguenti valori che vorrei trasformare in array char:

dataName{1}
ans =

'Data'
'Apertura'
'Max'
'Min'
'Chiusura'
'Volume_ultimo'

data{1}
ans =

'20.10.09'
'21.10.09'
'22.10.09'
'23.10.09'
(gli altri elementi di data sono numerici e sono riuscito a trattarli come volevo).

Vorrei ora riscrivere questi vettori come array di stringhe ed inserirli in una struttura. Nel secondo caso non ho avuto problemi utilizzando il seguente script:

for i = 1:length (data{1})
SS.date(i,:) = data{1}{i};
end

Nel primo però questo semplicissmo 'for' pare non basti, mi da infatti un errore:

for i = 1:length (dataName{1})
SS.name(i,:) = dataName{1}{i};
end
??? Subscripted assignment dimension mismatch.

(riesce però a scrivere il primo elemento).
La cosa che mi sembra ancora più strana è che scrivendo:

for i = 1:length (dataName{1})
dataName{1}{i}
end

stampa perfettamente tutti i valori contenuti all'inteno delle celle, trattandoli, a quanto pare, come stringhe.


Grazie mille per l'attenzione e spero vivamente mi rispondiate presto, rischio il licenziamentoooo!!
No dai scherzo (almeno spero), comunque mi sareste molto d'aiuto.

Ciao Andrea

P.S. Spero di non esser stato troppo prolisso

1 Risposte

  • Re: Conversione da Cell a Char

    Risolto!!!

    Il problema è il seguente: matlab lavora solamente con array rettangolari, quindi è possibile costruire vettori di stringhe solamente se tutte le stringhe hanno stessa lunghezza. Ecco perché in uno dei due casi lo script funziona!
    Comunque per ottenere informazioni su cosa siano le celle e come queste possano venir utilizzare consultate:
    http://www.mathworks.com/help/techdoc/matlab_prog/br04bw6-98.html

    Qui è spiegato molto bene! Purtroppo sono riuscito a trovare il link solamente oggi.

    Grazie lo stesso per aver perso tempo a leggere il mio post.

    Ciao
    Andrea
Devi accedere o registrarti per scrivere nel forum
1 risposte