PDA

View Full Version : [Matlab] Preallocazione di celle


cumel
15-03-2010, 15:30
Buongiorno,
realizzando una function matlab mi sono imbattutto nel suggerimento (sottolineatura in rosso dell'editor) di preallocare la cella inserita in un ciclo for.


Bene: la soluzione

FI = cell(1, numel(BLOCCHI_RIGHE)); % preallocazione


non porta ad alcun vantaggio.

(la forma finale della cella è del tipo: { 'stringa con m righe' , 'stringa con n righe' , 'stringa con l righe'...... })


La preallocazione all'interno della cella, inoltre, aumenta il tempo necessario!!

FI{i} = zeros(numel(SINGOLO_BLOCCO_RIGHE), 3);



Mi sapete dire dove sbaglio?


Inoltre vi chiedo se, per portare stringhe in numeri, è meglio utliizzare la funzione sscanf o la funzione str2num (a parità di complessità nella programmazione)

Grazie mille

MK

cumel
16-03-2010, 14:23
Ho aggirato almeno il secondo quesito in questo modo



... FOR... CICLO SU i

fid = fopen('tmp.txt', 'w');
fprintf(fid, '%s\n', BLOCCO{:});
fclose(fid);

PIPPO{i} = load('temp.txt');





In questo modo i tempi si riducono di 10 VOLTE:D .

Ma come mai mi devoo appoggiare a un file esterno per scrivere iol contenuto di una cella per poi rileggerlo?

BLCCO è del tip {' 1 2 3 4 5,12'; '1 2 3 4 5,12323 ' ;....}

Perchè non è possibile trasformare direttamente il contenuto di una cella nella quale sono contenute solo stringhe numeriche (ma con un numero differente di caratteri) in una variabile senza impazzire????


grazie a chi sa la risposta!!!

MK