how to execute str2num or str2double in matlab?

2 visualizaciones (últimos 30 días)
MEENAL SINGHAL
MEENAL SINGHAL el 9 de Mayo de 2018
Editada: Stephen23 el 9 de Mayo de 2018
I am having trouble using commands str2num.
I have a character
t='2'
'u1'
'u2 '
I used the command p=str2double(char(t)). Right now if I use str2num, a null array appears in the output whereas using str2double gives NaN in output. While searching about these I learned that these character values are not converted to numbers.
I wanted p to store values [2, 1, 2]. How can I do that? Thanks for reading...
  4 comentarios
per isakson
per isakson el 9 de Mayo de 2018
Editada: per isakson el 9 de Mayo de 2018
Hint:
t = { '2' 'u1' 'u2 '};
c = regexp( t, '[\d ]+', 'match' );
p = cellfun( @str2double, c )
outputs
p =
2 1 2
MEENAL SINGHAL
MEENAL SINGHAL el 9 de Mayo de 2018
Editada: MEENAL SINGHAL el 9 de Mayo de 2018
Thanks @per isakson for the hint [and for editing my question :)]. It works individually in command prompt but gives a error saying "set UniformOutput to false" when I run the same with the complete code.

Iniciar sesión para comentar.

Respuesta aceptada

Stephen23
Stephen23 el 9 de Mayo de 2018
Editada: Stephen23 el 9 de Mayo de 2018
Simple, and possibly the most efficient way:
>> t = {'2','u1','u2 '};
>> sscanf([t{:}],'%du')
ans =
2
1
2
  2 comentarios
MEENAL SINGHAL
MEENAL SINGHAL el 9 de Mayo de 2018
Thanks Stephen Cobeldick for answering. The problem is solved for
t='2'
'u1'
'u2 '
But what if I have
t= 'u0*2 '
'u1*2 '
'u2*2 '
Now I want 'p' to store [0*2 1*2 2*2] ,i.e., [0 2 4]. How can I do that?
Stephen23
Stephen23 el 9 de Mayo de 2018
Editada: Stephen23 el 9 de Mayo de 2018
@MEENAL SINGHAL: Perhaps you are asking about how to write a maths parser, which in general is not a trivial task. What operators do you expect to have? For simple multiplication:
>> t = {'u0*2','u1*2','u2*2'};
>> v = sscanf([t{:}],'u%d*%d');
>> v(1:2:end).*v(2:2:end)
ans =
0
2
4

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Numeric Types en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by