2015-06-10 76 views
0

我已經創建了一個矩陣,其中第1行充滿了字符串,還有4個其他行與數字一起創建了矩陣。它們使用對象「Projekter」在句柄類中創建。當if語句爲真時返回「i」值

因此,在對象「Projekter」行1中,第一個值爲空白,但第二個值爲'Ole'。所以我知道'奧萊'在(1,2)。 x是我想要搜索的名稱/字符串,在這種情況下是'Ole'。

正如你看到它下面應該從第2列搜索行1,直到最後一個名字/字符串,如果我=「好極了」,就應該給我帶來的價值2,因爲「我」應該等於2

如果函數有效,A只是一個控制器,但在這一點上它不是。 它給出的錯誤是「未定義的函數'eq',用於'cell'類型的輸入參數。」

如何解決此問題,以便在語句正確時返回「i」值?

預先感謝您!

function number(obj,x) 

A = []; 
for i = 2:size(obj.Projekter,2) 
    if obj.Projekter(1,i)==x 
     A = A + 1; 
    end 
end 
disp(A) 

end 
+0

您是否還可以提供準備傳遞給函數的數據的代碼? – ipa

+0

'find'功能在這方面非常好。可能是'find(strcmp(obj.Projeckter(1,:),x))' –

回答

0

也許你有索引的單元格內容:

your_cell = {'a_string'}; 
your_string = your_cell{1}; 
0
function [returnValue] = number(obj,x) 

for i = 2:size(obj.Projekter,2) 
    if obj.Projekter{1,i}==x 
     returnValue = i; 
     return; 
    end 
end 
end 

注意從obj.Projekter(1,i)==xobj.Projekter{1,i}==x的變化(使用大括號,而不是括號)。然後,我指定returnValue將保留通過執行function [returnValue] = number(obj,x)應返回的值。然後我們設置returnValue等於i,並在if語句的條件爲真時從函數返回。

正如評論所說,它可能是更好的事:

function [returnValue] = number(obj, x) 
    returnValue = find(strcmp(x, obj.Projekter) == 1); 

strcmp(x, obj.Projektor)會給你一個數組的obj.Projekter 1的地方字符串匹配,和0,他們不長,你然後可以find被設置爲1的指數這個也沒有使用循環所以它的速度更快

  • 給你的每一次出現的

    1. 額外的好處一場比賽,不只是第一場比賽。
  • +1

    更好的辦法是使用'strcmp',如果字符數組長度不同,不會導致錯誤。 –