【问题标题】:Output of class function in MatlabMatlab中类函数的输出
【发布时间】:2023-03-24 16:40:02
【问题描述】:

我很久以前就在使用类,但我无法从类似函数的函数/构造函数中输出一件事。我看过多个例子,但无法明确这一点。在这里,我有一个简单的例子,myFunc 输出一个数组,以及类中的相同函数,如何像函数一样从类中输出。 如何像函数一样从类的任何函数中获取输出?

myFunc:

function M=myFunc(n)
[M]=[];
i=0;
for ii=1:n
    M(ii)=i;
    %% Counter
    i=i+4;
end
end

我的班级:

    classdef myClass
        properties (Access=private)
            n
            M
            i
        end
        methods
            function obj = myClass(n)
                obj.n = n;
            end
            function myFunc(obj)

                for ii=1:obj.n
                    obj.M(ii)=obj.i;
                    %% Counter
                    obj.i=obj.i+4;
                end
            end
        end
    end

**EDIT 1:**
classdef myClass
    properties (Access=private)
        n
        M
        i
    end
    methods
        function obj = myClass(n)
            obj.n = n;
        end


    function M = myFunc(obj)

            for ii=1:obj.n
                obj.M(ii)=obj.i;
                %% Counter
                obj.i=obj.i+4;
            end
            M = obj.M;
    end
    end
end

【问题讨论】:

  • 你能添加一个关于输入、调用和预期输出的小例子吗?
  • 我已经输入和输出了,在Class里面,n是输入,M是输出
  • 你想让你的类的MyFunc方法像顶部的Myfunc一样输出吗?如果是这样它在 classdef 中没有输出,请尝试更改为 function obj = myFunc(obj)
  • 以及如何访问它? @RTL 请清除我。
  • 不是上面的输出 obj.M 看起来更像你想要的,但我认为这不能直接完成,需要将 obj.M 复制到一个变量来输出(因为你不能将结构的字段输出为变量

标签: matlab class object-oriented-analysis


【解决方案1】:

方法和普通函数一样工作,除了非静态方法的第一个输入总是期望是类实例

你调用的方法定义为

methods
   function [out1, out2] = fcnName(object, in1, in2)
      % do stuff here (assign outputs!)
   end
end

像这样:

[out1, out2] = object.fcnName(in1,in2)

[out1, out2] = fcnName(object,in1,in2)

应用于您的示例:

methods
    function M = myFunc(obj)

            for ii=1:obj.n
                obj.M(ii)=obj.i;
                %% Counter
                obj.i=obj.i+4;
            end
            M = obj.M;
     end
 end

你把 myFunc 称为

 obj = myClass(3);
 M = myFunc(obj);

【讨论】:

  • 这个我不是很懂,可以重用我的代码作为例子吗?
  • @AhsanAli:我已将您的功能添加到答案中。请注意,您也可以返回修改后的对象(其中包含 M 作为属性),或者将类变为值类,以便对象在工作区中自动修改,因为它在方法中被修改。
  • 请根据您的代码检查我编辑的帖子,锄头我打电话给myFunc ?
  • Undefined function or variable 'obj'. 给出错误,我已经试过了。
  • @AhsanAli:你需要先定义一个类实例。查看我的编辑。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-22
  • 1970-01-01
  • 2012-03-07
  • 1970-01-01
  • 1970-01-01
  • 2014-06-03
  • 1970-01-01
相关资源
最近更新 更多