2016-10-06 44 views
0

我有一個MATLAB腳本和變量之一是:如何將字符串變量轉換爲布爾值在Matlab中?

a = 'false' % my string 

我的目標是把這樣的變量轉換成一個布爾變量:

a = false % my goal 

是有一個MATLAB函數,可以讓我轉換將字符串轉換爲布爾值?

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

如果沒有功能,允許做什麼可能是另一種可能的解決方案?

+2

在Matlab中,它被稱爲「邏輯」。它總是'真'還是'假'?爲什麼不只是'strcmpi(a,'true')'? – Bernhard

+1

使用'〜strcmp(a,'false')'。 – erfan

回答

2

你可以自己寫一個,這是相當簡單的

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

另外,你完全可以跳過的功能和簡單的

a = strcmp(a,'true'); 
+1

或者,如果OP想要它更簡單:'string2boolean = @(s)〜strcmpi(s,'false');' –

1

可以濫用strcmpi這一點,即

a = strcmpi(a, 'true'); 

這是不區分大小寫字符串比較,所以trueTrueTRUE都轉換爲邏輯真。所有其他字符串將自動轉換爲false。

+0

@Federico:和'a =〜strcmpi(a,'false')'。如果'a ='false',則給出'a = false'。 –

+0

@StewieGriffin如果'a ='false'',我寫的這行也給出了'a = false',沒有理由寫它是多餘的。 – Bernhard

+0

「abc」或「[1 2 3]」也是如此。由於OP沒有回答你在評論中提出的問題,所以可能有其他的選項比「true」和「false」。 PS!我不是說OP應該有_both_「true」和「false」。但這是「有保證」回答OP問題的「虛假」部分。 「真實」版本可能是錯誤的(但可能不是)。 –

0

如下您可以定義一個方法/函數:

function boolValue = string2boolean(stringValue) 

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

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

你甚至測試過你的函數嗎?這是行不通的,你在'if'語句中做了一個賦值。 – Bernhard

+0

@Bernhard謝謝大家指出,實際上我只是通過邏輯思考提供了這一點,而且我沒有在MATLAB中運行,所以在賦值運算符修正後,代碼將正確運行。 –

+1

比較運算符在Matlab中不起作用。考慮刪除你的答案,這是沒有意義的。 – Bernhard

相關問題