2011-06-09 25 views
5

Tengo un problema por el cual una cadena de 8 dígitos como '313397E9' se pasa a excel, luego se lee como el número '313397000000000' o '3.133970e + 014'.número de notación científica de matlab

Esto está siendo leído por Matlab y reconocido como el número, no como la cadena. ¿Cuál sería la forma más fácil de convertirlo a la cadena de 8 dígitos?

Gracias de antemano por toda su ayuda.

+0

Tendrás que decirnos el mecanismo de comunicación entre MATLAB y Excel –

+0

. Utiliza actxserver para abrir excel, luego obtiene la hoja específica, luego value = (sheet.Range (['A2: A32000']). Value) Eso es todo en una gran base de código que no escribí, y probablemente no debería meterme. ¿Hay alguna forma de convertirlo a los 8 dígitos una vez que es un número? – Alec

+0

¿Cómo se almacenan los números en MATLAB? ¿Son realmente cuerdas? ¿Y cómo los quiere almacenados en Excel? ¿Cuerdas o números? –

Respuesta

5

Regular expressions to the rescue! Puede usar REGEXPREP para convertir los ceros finales en Ex, donde x es el número de ceros que acaba de reemplazar.

%# convert the number to a string 
nn = num2str(3.133970e+014) 

nn = 
313397000000000 

%# replace zeros using regexprep 
regexprep(nn,'([0]*)','E${num2str(length($1))}') 
ans = 
313397E9 

Esto también funciona si nn es una serie de células de cadenas, por cierto, lo que puede convertir su lista de números de una sola vez.

+0

¿Recuperas 313390000000000.0 en 313390E9 o 31339E10? –

+0

funciona a la perfección! En realidad, es un buen punto, Jouni ... Supongo que no hay forma de saber cuál era el valor que se suponía en primer lugar ... – Alec

+0

@Jouni: 313390000000000 se convierte en 31339E10 - no estoy seguro de si ese es realmente el OP. Por supuesto, si la idea era tener siempre 6 dígitos seguidos por E9, entonces todo sería bastante trivial. Además, 313390000000000.0 se convertiría a 313393E10.E1. Sin embargo, esta entrada no debería ocurrir si comienza con un número como 3e + 014. Si es necesario, esto podría solucionarse en la expresión regular, por supuesto. – Jonas

Cuestiones relacionadas