MATLAB:从 parfor 调用超类的方法
Posted
技术标签:
【中文标题】MATLAB:从 parfor 调用超类的方法【英文标题】:MATLAB: Calling a superclass' method from parfor 【发布时间】:2013-01-10 09:01:58 【问题描述】:让我们直接进入代码。有两个班。超类是
classdef Parent
methods
function this = Parent()
end
function say(this, message)
fprintf('%s\n', message);
end
end
end
子类是
classdef Child < Parent
methods
function this = Child()
this = this@Parent();
end
function say(this, message)
for i = 1
% This one works...
say@Parent(this, message);
end
parfor i = 1
% ... but this one does not.
say@Parent(this, message);
end
end
end
end
问题是:如何在不引入任何额外方法的情况下使 second 循环工作?至于现在,它会引发一个错误,说“只能从同名的子类方法中显式调用基类方法”。谢谢。
问候, 伊万
【问题讨论】:
【参考方案1】:我认为您可能需要在调用parfor
循环之前将this
显式转换为Parent
,然后显式调用Parent
方法say
:
this2 = Parent(this);
parfor i = 1:1
say(this2, message);
end
为此,您需要修改Parent
的构造函数以接受输入参数:
function this = Parent(varargin)
if nargin == 1
this = Parent();
end
end
如果Parent
和Child
具有属性,就像您的真实类可能那样,您将在if
语句之后包含一些代码,将Child
s 属性分配给新构造的Parent
对象。
【讨论】:
以上是关于MATLAB:从 parfor 调用超类的方法的主要内容,如果未能解决你的问题,请参考以下文章
Matlab在使用codegen和parfor时啥时候选择线程
MATLAB教程案例92基于parfor的matlab并行运行机制