首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >当if-statement为true时,返回“i”值

当if-statement为true时,返回“i”值
EN

Stack Overflow用户
提问于 2015-06-11 03:24:57
回答 2查看 54关注 0票数 0

我已经创建了一个矩阵,其中第1行充满了字符串,另外4行充满了数字。它们是在handle类中使用对象"Projekter“创建的。

因此,在对象"Projekter“行1中,第一个值为空,但第二个值为”Ole“。所以我知道'Ole‘在(1,2)中。X是我要搜索的名称/字符串,在本例中是'Ole‘。

正如你在下面看到的,它应该从第二列搜索第一行,直到姓氏/字符串,如果i= 'Ole',它应该带给我值2,因为“i”应该等于2。

如果函数可以工作,A只是一个控制器,但在这一点上它不能工作。它给出的错误是“对于类型为‘cell’的输入参数,没有定义函数'eq‘”。

我如何解决这个问题,使其在语句正确时返回“i”值?

提前谢谢你!

代码语言:javascript
代码运行次数:0
运行
复制
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
EN

回答 2

Stack Overflow用户

发布于 2015-06-11 03:37:22

也许您必须为单元格内容建立索引:

代码语言:javascript
代码运行次数:0
运行
复制
your_cell = {'a_string'};
your_string = your_cell{1};
票数 0
EN

Stack Overflow用户

发布于 2015-06-11 03:41:21

代码语言:javascript
代码运行次数: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语句的条件为真时从函数返回。

正如评论中所建议的,这样做可能更好:

代码语言:javascript
代码运行次数:0
运行
复制
function [returnValue] = number(obj, x)
  returnValue = find(strcmp(x, obj.Projekter) == 1);

strcmp(x, obj.Projektor)将为您提供一个长度为obj.Projekter的数组,在字符串匹配的地方使用1,在不匹配的地方使用0,然后您可以对设置为1的索引执行find操作。

  1. 没有使用循环,所以它会在每次出现匹配时都对你进行faster
  2. Giving,而不仅仅是第一次。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30765507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档