2016-06-21 49 views
0

我有一個字符串的單元數組,我需要爲它們賦值。將值賦給一個字符串向量

interval = {'Active', 'Active', 'Active', 'Active', 'Active', 'Active', 'Rest', ... 
'Rest', 'Rest', 'Rest','Active', 'Active', 'Active', 'Active'} 

如何將1賦值爲活動,0賦予休息? 我試圖使用這樣的:

intervalNum = zeros(length(interval), 1); 

for n = 1:length(interval) 
    if interval(n) == 'Active' 
     i = 1; 
    else 
     i = 0; 
    end 
    intervalNum(n) = i; 
end 

但它示出了一個錯誤:對於類型「細胞」的輸入參數 未定義操作符「==」。

我想這個錯誤是由於if語句「if interval(n)==」Active「」,但無法弄清楚什麼是錯的。

請幫忙。謝謝!

+1

'intervalNum = cellfun(@(x)strcmp(x,'Active' ),區間)'?通過你的appropach,把'if'條件改爲'strcmp(interval {n},'Active')' –

+0

來比較你需要'strcmp'函數的字符串 – GameOfThrows

+0

或'intervalnum(strcmp('Active',interval))= 1;'用'零'初始化後# – BillBokeey

回答

3

比較字符串,您需要使用的strcmp功能指定的位置:https://uk.mathworks.com/help/matlab/ref/strcmp.html

for n = 1:length(interval) 
    if strcmp(interval{n},'Active') 
     i = 1; 
    else 
     i = 0; 
    end 
    intervalNum(n) = i; 
end 

甚至更​​好,消除環路和使用方法路易斯Mendo建議:

intervalNum = cellfun(@(x) strcmp(x, 'Active'), interval) 

intervalNum = ismember(interval, 'Active'); %Alternative provided by Luis Mendo 

或者BillBokeey建議的方法:

intervalnum(strcmp('Active',interval))=1 
+1

或'intervalNum = ismember(interval,'Active');' –

+0

謝謝你們!這幫了我很多。 – TYL

相關問題