str2num returning value while the preferred str2double returning NaN...

New to MATLAB, so maybe this is a stupid question. I have the following script in MATLAB to run a python script and return a value (3.4763, for eg). When I use str2num like below, I get a the value in p. However, MATLAB suggests to use str2double. When I do that, I get NaN instead of the value. Please help...
w = 16;
systemCommand = ['python fun.py ',num2str(w)];
[stat, res] = system(systemCommand);
p = str2num(res);
What python returns from execution is '[3.4763]' in the variable res.

 採用された回答

Rik
Rik 2021 年 4 月 1 日
This is another difference:
str2double('evalc(''exit'')')
ans = NaN
str2num('evalc(''exit'')')
%will exit Matlab
You should parse the result to single values. In your case simply removing the brackets will do, but this should be more robust:
str='[3.14159 1.00e-001]';
str2double(regexp(str,'[.0-9eE\-]*','match'))
ans = 1×2
3.1416 0.1000

その他の回答 (0 件)

カテゴリ

製品

リリース

R2020b

質問済み:

2021 年 4 月 1 日

回答済み:

Rik
2021 年 4 月 1 日

Community Treasure Hunt

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

Start Hunting!

Translated by