我已经创建了一个矩阵,其中第1行充满了字符串,另外4行充满了数字。它们是在handle类中使用对象"Projekter“创建的。
因此,在对象"Projekter“行1中,第一个值为空,但第二个值为”Ole“。所以我知道'Ole‘在(1,2)中。X是我要搜索的名称/字符串,在本例中是'Ole‘。
正如你在下面看到的,它应该从第二列搜索第一行,直到姓氏/字符串,如果i= 'Ole',它应该带给我值2,因为“i”应该等于2。
如果函数可以工作,A只是一个控制器,但在这一点上它不能工作。它给出的错误是“对于类型为‘cell’的输入参数,没有定义函数'eq‘”。
我如何解决这个问题,使其在语句正确时返回“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
发布于 2015-06-10 19:37:22
也许您必须为单元格内容建立索引:
your_cell = {'a_string'};
your_string = your_cell{1};
发布于 2015-06-10 19:41:21
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
的变化(使用大括号而不是括号)。然后,我指定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,然后您可以对设置为1的索引执行find
操作。
https://stackoverflow.com/questions/30765507
复制相似问题