如何在MatLab中找到具有特定属性的对象(另一个具有特定属性的对象)?

1tu0hz3e  于 2022-11-15  发布在  Matlab
关注(0)|答案(1)|浏览(149)

例如,对象‘Student’具有属性‘test’,而‘test’也是具有属性‘Score’的对象。

classdef student < handle

    properties
        name
        test
    end

    methods

        function obj = student(name)
            obj.name = name;
            obj.test = test();
        end
    end
end
classdef test < handle

    properties
        content
        score
    end
end
student_arr=[student('A') student('B')]
student_arr(1).test.score=100
student_arr(2).test.score=80

我想找考试分数是100分的学生。我使用函数findobj

findobj([student_arr.test],'score',100)

ans = 

  test with properties:

    content: []
      score: 100

它返回测试数组,而不是学生数组。
但是如果我试着在Student_arr中找到它

findobj(student_arr,'score',100)

ans = 

  0×0 student array with properties:

    name
    test

它返回一个0*0学生数组,因为‘Score’不是学生属性。
问题是,如果一个对象的属性是另一个对象,如何根据后者的属性找到前者?

irtuqstp

irtuqstp1#

它有点没有文档记录,但您可以使用findobj和附加的function来指定搜索:

H = findobj (student_arr, '-function', @(x) x.test.score == 100 );

相关问题