how to execute str2num or str2double in matlab?

2 次查看(过去 30 天)
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 个评论
per isakson
per isakson 2018-5-9
编辑:per isakson 2018-5-9
Hint:
t = { '2' 'u1' 'u2 '};
c = regexp( t, '[\d ]+', 'match' );
p = cellfun( @str2double, c )
outputs
p =
2 1 2
MEENAL SINGHAL
MEENAL SINGHAL 2018-5-9
编辑:MEENAL SINGHAL 2018-5-9
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.

请先登录,再进行评论。

采纳的回答

Stephen23
Stephen23 2018-5-9
编辑:Stephen23 2018-5-9
Simple, and possibly the most efficient way:
>> t = {'2','u1','u2 '};
>> sscanf([t{:}],'%du')
ans =
2
1
2
  2 个评论
MEENAL SINGHAL
MEENAL SINGHAL 2018-5-9
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 2018-5-9
编辑:Stephen23 2018-5-9
@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

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Numeric Types 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by