【问题标题】:Matlab class dynamic filling of a propertyMatlab类动态填充一个属性
【发布时间】:2018-08-09 15:09:30
【问题描述】:

我正在尝试动态填充 Matlab 类中的属性。 我将向量传递给方法函数,然后计算各种参数。我想在 for 循环中填充属性,请参见代码示例。 OwnClassFunction 只是类中另一个函数的示例,但在代码示例中没有实现。我怎样才能正确地做到这一点?

classdef Sicherung < handle      

    properties
        x = ([],1)
    end

    methods
        function examplefunction(object,...
                single_parameter_vector) % (n,1) n can be any size 

            for i=1:length(param_vector)

                [object.x(i,1)] = object.OwnClassFunction(single_parameter_vector(i,1));
            end
        end
    end
end

如果我尝试这样的事情

...
properties
   x = []
end
...
function ...(object,parameter)
   for i=1:length(parameter)
     [object.x(i)] = function(parameter(i));
   end

我收到错误消息下标分配维度不匹配

【问题讨论】:

  • x = ([],1) 看起来不像正确的 MATLAB 语法。除此之外,我看不出有什么问题。为什么你认为你的代码不正确?
  • 是的,这是一个伪语法,我现在不知道如何正确实现它。在我得到错误的那一刻。主要问题是,我必须如何定义属性,才能将其填充到 for 循环中。

标签: matlab matlab-class


【解决方案1】:

我手头没有要测试的 MATLAB,但以下应该可以工作。

您的代码非常接近正确运行的方法。修改如下:

classdef Sicherung < handle      

    properties
        x = [] % initialize to empty array
    end

    methods
        function examplefunction(object,param_vector)
            if ~isvector(param_vector)
                 error('vector expected') % check input
            end
            n = numel(param_vector)
            object.x = zeros(n,1); % preallocate
            for i=1:n
                object.x(i) = object.OwnClassFunction(param_vector(i));
            end
        end
    end
end

【讨论】:

  • 非常感谢,我现在解决了这个问题。这是子函数和属性声明中的错误,现在一切正常。
猜你喜欢
  • 2015-06-21
  • 1970-01-01
  • 2020-04-19
  • 1970-01-01
  • 2018-11-20
  • 2015-06-27
  • 1970-01-01
  • 2015-09-18
  • 1970-01-01
相关资源
最近更新 更多