2013-10-03 11 views
7

Ciao Sto cercando di creare un array di celle di stringhe con:creare un array di celle di stringhe MATLAB

data = ['1';'2';'3';'4';'5';'6';'7';'8';'9';'10';'11';'12';'13';'14';'15';'16';'17';'18';'19';'20';]; 

dove mi aspetta un array di celle di 25 elementi. ma ottengo:

length(data) 

= 33 

quindi ovviamente i numeri 12,13 ecc. contano come 2 bit.

La mia domanda è quindi come faccio a garantire che l'array di celle sia di lunghezza 20? anche la funzione in cui inserisco l'array di celle deve essere una matrice di stringhe, anche se sto usando gli ints!

+0

Le stringhe sono matrici di caratteri in Matlab. Unire stringhe come questa si traduce in una lunga stringa. A parte questo: lunghezza, dimensione ecc. Riportano le dimensioni in numero di elementi anziché in byte. – jpjacobs

+0

possibile duplicato di [Crea un array di stringhe] (http://stackoverflow.com/questions/7100841/create-an-array-of-strings) –

risposta

16

quello che devi fare:

data = {'1';'2';'3';'4';'5';'6';'7';'8';'9';'10';'11';'12';'13';'14';'15';'16';'17';'18';'19';'20';}; 

Usa {}. Questi formeranno un array di celle.

+0

ovviamente, mio ​​errore! – brucezepplin

+0

Signore, mi hai salvato dalla sofferenza eterna. Grazie. –

11

È possibile utilizzare {} invece di [] per costruire una cella, oppure è possibile utilizzare strsplit per costruire una cella lunghezza arbitraria di stringhe che rappresentano numeri da 1-N:

data = strsplit(num2str(1:N)); 

Update: Il modo più veloce per fare questo ora è con la funzione di sprintfc non documentata (notare la "c" alla fine) che stampa ogni elemento di essa la propria cella:

>> A = sprintfc('%g',1:20) 
A = 
    Columns 1 through 11 
    '1' '2' '3' '4' '5' '6' '7' '8' '9' '10' '11' 
    Columns 12 through 20 
    '12' '13' '14' '15' '16' '17' '18' '19' '20' 
>> which sprintfc 
built-in (undocumented) 
+0

o 'data = arrayfun (@ (ii) ii, 1: N, 'uni', false)' –

+1

@GuntherStruyf: Close! Ciò non dà stringhe. Penso che tu intendessi 'data = arrayfun (@ num2str, 1: N, 'uni', false)'. ;) – chappjc

+0

o 'cellfun (@ num2str, num2cell (1: N), 'uni', false)'. Così tante possibilità! – chappjc

Problemi correlati