我创建了一个矩阵,其中第1行包含字符串,另外4行包含数字。它们是在句柄类中创建的,对象为“Projekter”。
因此,在对象“Projekter”第1行中,第一个值为空,但第二个值为“Ole”。所以我知道'Ole'在(1,2)中。 x是我想要搜索的名称/字符串,在这种情况下是'Ole'。
如下所示,它应该从第2列搜索第1行,直到最后一个名字/字符串,如果i ='Ole',它应该为我带来值2,因为“i”应该等于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 :(得分:0)
也许您必须索引单元格内容:
your_cell = {'a_string'};
your_string = your_cell{1};
答案 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)==x
到obj.Projekter{1,i}==x
的更改(使用花括号而不是parens)。然后我指定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
设置为这有额外的好处