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 的类(具有依赖行为的非依赖属性)
Spring Boot AnnotationConfigEmbeddedWebApplicationContext无法填充动态类中的自动声明的声明字段