Matlab类动态填充一个属性

Posted

技术标签:

【中文标题】Matlab类动态填充一个属性【英文标题】:Matlab class dynamic filling of a property 【发布时间】: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 循环中。 【参考方案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

【讨论】:

非常感谢,我现在解决了这个问题。这是子函数和属性声明中的错误,现在一切正常。

以上是关于Matlab类动态填充一个属性的主要内容,如果未能解决你的问题,请参考以下文章

MATLAB 中 A = K * B 的类(具有依赖行为的非依赖属性)

在 Matlab 中将结构属性的字段作为类的属性

怎样在matlab中画矩形并填充颜色?

Spring Boot AnnotationConfigEmbeddedWebApplicationContext无法填充动态类中的自动声明的声明字段

在matlab的B类属性中使用A类的对象?

更改 Matlab 方法属性