MATLAB字符串到整数的转换



我是matlab的新手。我使用flask部署了一个机器学习模型(使用python开发)。从matlab中,我调用了API并收到了字符串响应。他们的反应是:"[0.8]"。但matlab是显示字符串的大小是1。我只需要0.8这个值。我的代码:

import matlab.net.http.*
import matlab.net.http.field.*
request = RequestMessage( 'POST', ...
[ContentTypeField( 'application/vnd.api+json' ), AcceptField('application/vnd.api+json')], ...
'{"meta": {"Speed_RPM_PU": 0.2}}' );
response = request.send( 'http://127.0.0.1:5000/predict' );
ans=response.Body.Data
length(ans) % equals to 1
% for i = 1:length(ans)
%  
%    fprintf('%c ',ans(i))
%  
%    %disp(String(i))
%  
% end

, ans = ' [0.8]

如果ans='[0.8]',那么length(ans)将等于5(因为在这个字符数组中有5个字符)。我怀疑你实际上有ans={'[0.8]'},即长度为1的单元格数组,其中包含单个字符数组。否则,您正在使用单引号'_',表示字符,其中MATLAB实际上显示双引号"_",表示字符串,因为长度将是1,如果它也是字符串。字符和字符串不相等。

调用class(ans)而不是length(ans)会告诉你哪个是正确的。

在任何情况下都可以使用str2num(ans),但如果是单元格,则需要使用str2num(ans{1})

str2num('[0.8]') % = 0.8 (double from char)
str2num("[0.8]") % = 0.8 (double from string)
str2num({'0.8'}) % -> error
a = {'0.8'};
str2num(a{1})    % = 0.8 (double from char element of cell)

str2double通常优于str2num,但是你需要删除的方括号字符/字符串或将给南,所以类似

str2double( erase( '[0.8]', {'[',']'} ) ) % = 0.8 (double)

注意ans是未分配函数输出的默认变量名,考虑使用不同的变量名以避免意外问题。

最新更新