我有一个Matlab脚本,其中一个变量是:
a = 'false' % my string
我的目标是将这个变量转换成布尔变量:
a = false % my goal
有没有一个Matlab函数可以将字符串转换为布尔值?
a = string2boolean('false') % I would like to have something like this
如果没有允许做到这一点的功能,可能会有另一个解决方案吗?
我有一个Matlab脚本,其中一个变量是:
a = 'false' % my string
我的目标是将这个变量转换成布尔变量:
a = false % my goal
a = string2boolean('false') % I would like to have something like this
strcmpi
实现这个功能,也就是说 a = strcmpi(a, 'true');
true
、True
和TRUE
都会被转换为逻辑上的true。所有其他字符串将自动转换为false。a = ~strcmpi(a, 'false')
。如果 a = 'false'
,则会得到 a = false
。 - Stewie Griffina='false'
,也会得到 a = false
,没有必要这样写得过于冗余。 - Bernhard'abc'
或[1 2 3]
也是可能的选项。由于OP没有回答您在评论中提出的问题,因此可能存在其他选项而不仅仅是“true”和“false”。PS!我并不是说OP应该同时拥有“true”和“false”。但是,“false”部分是“保证”的可以回答OP问题的部分。“true”版本可能是错误的(但很可能不是)。 - Stewie Griffintrue
或false
。但是Matlab不是类型安全的,所以你确实可以返回任何东西。然而,这将会对未来使用你的函数的用户产生意外的行为。 - Bernhardif x == 0; y = [1, 2, 3]; else y = 'false'; end
。同时,我同意,它应该转换为 true
或 false
,但可能所有不是 false
的东西都是 true
,而不是相反。 - Stewie Griffinfunction [output]=string2boolean(string)
if strcmp(string,'false')
output = false;
else
output = true;
end
end
a = strcmp(a,'true');
string2boolean = @(s) ~strcmpi(s, 'false');
- Stewie Griffinstr2num
可用(已在Matlab R2018a中进行测试)
str2num( '1' ) %yields double(1)
str2num( '0' ) %yields double(0)
str2num( 'true' ) %yields logical(1)
str2num( 'false' ) %yields logical(0)
function boolValue = string2boolean(stringValue)
boolValue = ''
if strcmpi(string,'false')
boolValue = false
end
if strcmpi(string,'true')
boolValue = true
end
if
语句中进行赋值。 - Bernhardstrcmpi
而不是添加strcmp
,这样可以忽略字母大小写的差异。我最初回答这个问题是为了在逻辑上实现问题的要求,而不是通过运行代码来实现。 - krishna Prasad
strcmpi(a,'true')
? - Bernhard~strcmp(a, 'false')
。 - erfan