2012-08-28 18 views

Respuesta

26

Una matriz de cadenas tiene que ser una matriz de celdas. Dicho:

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

Una manera mejor que lo que he escrito anteriormente. – Vish

+0

Esto es más del doble de rápido que arrayfun y cellfun. +1 – Doresoom

0

En MATLAB, [ '12' '25' '34' '466' '55'] es el mismo como una sola cadena que contiene esos números. Es decir:

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

ans = 

12253446655 

necesito más contexto aquí por lo que está tratando de lograr, pero asumiendo que usted quiere seguir siendo capaz de acceder a cada número individual como una cadena, una matriz de células es probablemente el mejor enfoque que puede tomar:

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

(Por supuesto, usted todavía tiene que quitar los espacios callejeros de la American National Standard)

+0

Incluso si elimina los espacios vagabundos, termina con una matriz de celdas de cadenas que contiene cada dígito por separado. Cambie el orden de 'num2cell' y' num2str' en su lugar. 'cellfun (@ num2str, num2cell (s), 'UniformOutput', false)' hace el trabajo bien. – Doresoom

10

Usando arrayfun junto con num2str funcionaría:

>> A = [12 25 34 466 55] 
A = 
    12 25 34 466 55 

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

¿por qué no 'arrayfun (@ num2str, A, 'UniformOutput', false)'? Mismo concepto, el mismo resultado, pero evita las conversiones "desde la celda" y "con la célula". – gevang

+0

@gevang: +1. Buen punto. He actualizado la respuesta. – Kavka

7

Ahora, después de MATLAB 2016b, sólo tiene que utilizar

s = [12 25 34 466 55]; 
string(s) 
Cuestiones relacionadas