如何在Matlab中将字符串变量转换为布尔值?

时间:2016-10-06 07:52:21

标签: string matlab boolean type-conversion

我有一个matlab脚本,其中一个变量是:

a = 'false' % my string

我的目标是将这样的变量转换为布尔变量:

a = false % my goal

是否有matlab函数允许我将字符串转换为布尔值?

a = string2boolean('false') % I would like to have something like this

如果没有允许这样做的功能可能是另一种可能的解决方案吗?

5 个答案:

答案 0 :(得分:2)

你可以滥用strcmpi,即

 a = strcmpi(a, 'true');

这是一个不区分大小写的字符串比较,因此trueTrueTRUE都转换为逻辑true。所有其他字符串将自动转换为false。

答案 1 :(得分:2)

你可以自己写一个,这很简单

function [output]=string2boolean(string)
   if strcmp(string,'false')
     output = false;
   else
     output = true;
   end
end

此外,您可以完全跳过该功能,只需

a = strcmp(a,'true'); 

答案 2 :(得分:1)

str2num有效(已通过Matlab R2018a测试)

str2num( '1' ) %yields double(1)
str2num( '0' ) %yields double(0)
str2num( 'true' ) %yields logical(1)
str2num( 'false' ) %yields logical(0)

答案 3 :(得分:0)

您可以按如下方式定义方法/功能:

function boolValue = string2boolean(stringValue)

    boolValue = ''
    if strcmpi(string,'false')
        boolValue = false
    end

    if strcmpi(string,'true')
        boolValue = true
    end

答案 4 :(得分:0)

使用ismember

str = "true";   % 'true' also works
ismember(lower(str), {'true','1'})    % returns 1

这允许替代真实值而不是 Matlab 的 logical 原生支持:

str = 'yes';
ismember(lower(str), {'true','1','yes','enable'})  % returns 1

enter image description here