在simulink模型中,我有一个matlab功能块。在函数内部,我想以一种与代码生成兼容的方式创建一个对象数组。
我的问题类似于此处回答的问题:Construct an array of objects in MATLAB
问题是"与代码生成兼容"部分。
当我尝试使用repmat
matlab返回时:
代码生成不支持对象数组。
当我尝试使用对象数组时,我看到:
不允许递归调用。功能' dummyClass.dummyClass' 参加了递归电话会议。
请在下面找到我运行的代码:
嵌入式matlab函数
function y = fcn(u)
%#codegen
x = [1 2 3];
% %% repmat way
% aa = dummyClass(x(1));
% aaArray = repmat(aa,1,3);
%% array of objects
aa = dummyClass(x);
y = u;
类文件
classdef dummyClass
properties
value
end
methods
function obj = dummyClass(value)
%% array of objects
if nargin~=0
m = size(value,1);
n = size(value,2);
obj(m,n) = dummyClass;
for i = 1:m
for j = 1:n
obj(a,b).value = value(a,b);
end
end
end
% %% repmat
% obj.value = value;
end
end
end
取消注释
答案 0 :(得分:0)
从MATLAB R2017a开始,没有办法创建与使用MATLAB Coder或Simulink Coder生成代码兼容的对象数组。
正如第一条错误消息所示," arrays of objects are not supported for code generation
" - 对于您尝试创建它们的任何特定方式,这不是问题,它们根本就不受支持。
MathWorks可能会在将来的版本中引入此功能,但它现在还不存在。