Matlab Return";我";if语句为true时的值
我创建了一个矩阵,其中第1行充满字符串,其他4行包含数字。它们是在具有对象“Projekter”的句柄类中创建的 因此,在对象“Projekter”第1行中,第一个值为空,但第二个值为“Ole”。所以我知道‘Ole’在(1,2)中。x是我要搜索的名称/字符串,在本例中是“Ole” 正如您在下面看到的,它应该从第2列搜索第1行,直到最后一个名称/字符串,如果i='Ole',它应该给我带来值2,因为“i”应该等于2 如果函数工作,A只是一个控制器,但在这一点上它不工作。 它给出的错误是“未定义‘cell’类型输入参数的函数‘eq’。” 如何修复此问题,使其在语句正确时返回“I”值 提前谢谢你Matlab Return";我";if语句为true时的值,matlab,if-statement,Matlab,If Statement,我创建了一个矩阵,其中第1行充满字符串,其他4行包含数字。它们是在具有对象“Projekter”的句柄类中创建的 因此,在对象“Projekter”第1行中,第一个值为空,但第二个值为“Ole”。所以我知道‘Ole’在(1,2)中。x是我要搜索的名称/字符串,在本例中是“Ole” 正如您在下面看到的,它应该从第2列搜索第1行,直到最后一个名称/字符串,如果i='Ole',它应该给我带来值2,因为“i”应该等于2 如果函数工作,A只是一个控制器,但在这一点上它不工作。 它给出的错误是“未定义‘ce
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
也许您必须为单元格内容编制索引:
your_cell = {'a_string'};
your_string = your_cell{1};
注意从obj.Projekter(1,i)==x
到obj.Projekter{1,i}==x
(使用大括号代替括号)的变化。然后我指定returnValue
将保存通过执行函数[returnValue]=number(obj,x)
应该返回的值。然后,我们将returnValue
设置为等于i
,并在if语句的条件为true时从函数返回
正如评论中所建议的,最好是:
function [returnValue] = number(obj, x)
returnValue = find(strcmp(x, obj.Projekter) == 1);
strcmp(x,obj.Projektor)
将为您提供一个数组,数组长度为obj.Projekter
,字符串匹配的地方为1,不匹配的地方为0,然后您可以查找设置为1的索引。这样做的另一个好处是
不使用循环,因此速度更快
给你比赛的每一次机会,而不仅仅是第一次
您还可以提供代码来准备传递到函数中的数据吗?find
函数在这方面非常出色。可能find(strcmp(obj.Projeckter(1,:),x))
更好的方法是使用strcmp
,如果字符数组的长度不同,这不会导致错误。
function [returnValue] = number(obj, x)
returnValue = find(strcmp(x, obj.Projekter) == 1);