2012-08-28 37 views

risposta

26

Un array di stringhe deve essere un array di celle. Detto:

s = [12 25 34 466 55] 
strtrim(cellstr(num2str(s'))') 
+0

Un modo migliore di quello che ho scritto sopra. – Vish

+0

Questo è due volte più veloce di arrayfun e cellfun. +1 – Doresoom

0

In MATLAB, [ '12' '25' '34' '466' '55'] è la stessa come una singola stringa contenente quei numeri. Vale a dire:

['12' '25' '34' '466' '55'] 

ans = 

12253446655 

ho bisogno di più contesto qui per ciò che si sta cercando di realizzare, ma supponendo che si vuole essere ancora in grado di accedere a ogni singolo numero come una stringa, un array di celle è probabilmente l'approccio migliore si può prendere:

A = [1 2 3] 
num2cell(num2str(A)) 

(Naturalmente, saresti ancora necessario rimuovere gli spazi randagi dalla ans)

+0

Anche se si rimuovono gli spazi vaganti, si finisce con una serie di stringhe che contiene ciascuna cifra separatamente. Scambia invece l'ordine di 'num2cell' e' num2str'. 'cellfun (@ num2str, num2cell (s), 'UniformOutput', false)' fa il lavoro ben fatto. – Doresoom

10

Utilizzando arrayfun insieme num2str avrebbe funzionato:

0.123.516,41 mila
>> A = [12 25 34 466 55] 
A = 
    12 25 34 466 55 

>> arrayfun(@num2str, A, 'UniformOutput', false) 
ans = 
    '12' '25' '34' '466' '55' 
+1

perché non 'arrayfun (@ num2str, A, 'UniformOutput', false)'? Stesso concetto, stesso output, ma si evitano le conversioni "from-cell" e "to-cell". – gevang

+0

@gevang: +1. Buon punto Ho aggiornato la risposta. – Kavka

7

Ora, dopo MATLAB 2016b, si può semplicemente utilizzare

s = [12 25 34 466 55]; 
string(s) 
Problemi correlati