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