可生成的matlab函数中的对象数组

Posted

技术标签:

【中文标题】可生成的matlab函数中的对象数组【英文标题】:Array of objects in generable matlab function 【发布时间】:2017-05-02 10:30:00 【问题描述】:

在 simulink 模型中,我有一个 matlab 功能块。在函数内部,我想以与代码生成兼容的方式创建一个对象数组。

我的问题与此处回答的问题类似:Construct an array of objects in MATLAB

问题是“与代码生成兼容”部分。

当我尝试使用repmatmatlab 执行此操作时,返回:

代码生成不支持对象数组。

当我尝试使用我看到的对象数组时:

不允许递归调用。函数'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

取消注释

【问题讨论】:

【参考方案1】:

从 MATLAB R2017a 开始,无法创建与使用 MATLAB Coder 或 Simulink Coder 的代码生成兼容的对象数组。

正如第一条错误消息所说,“arrays of objects are not supported for code generation” - 您尝试创建它们的任何特定方式都不是问题,它们根本不受支持。

MathWorks 可能会在未来版本中引入此功能,但目前不存在。

【讨论】:

以上是关于可生成的matlab函数中的对象数组的主要内容,如果未能解决你的问题,请参考以下文章

matlab中的set命令怎么用啊

matlab中如何看函数结构体中的数据

MATLAB中cell函数用法

将数组从matlab导入R

MATLAB中的struct操作

matlab中怎么定义结构体