我正在创建一个模拟,我将自己移植到另一种语言。所以我不需要使用Simulink的代码生成功能。如何把它变成关闭代码的尝试?如何关闭Simulink中的代码生成? (功能不支持独立代码生成)
例如,我有内部MATLAB Function
块以下代码:
function OutImage = ResizeCropPad(InImage, Width, Height)
%#codegen
%coder.extrinsic('imresize');
% resizing to defined height
scale = Height/size(InImage,1);
InImage = imresize(InImage, scale);
% cropping to defined width
if Width<size(InImage,2)
padarray(InImage, [0 size(InImage,2)-Width], 0, 'both');
elseif Width>size(InImage,2)
b = floor((Width-size(InImage,2))/2);
InImage = InImage(:,b:b+Width-1,:);
end
OutImage = InImage;
,它给出了一个错误
函数“imresize”不支持独立代码 生成。请参阅coder.extrinsic的文档以了解您如何在模拟中使用此功能 。
如果我取消coder.extrinsic('imresize')
线我得到新的错误
预期的是逻辑,CHAR,INT,网络,单或双。找到一个 mxArray。 MxArrays通过调用返回到MATLAB解释器 并且在表达式中不受支持。它们只能用于作业右侧的 以及作为外部 函数的参数。
寻址线11,与if
。
为什么?是否有可能完全禁用代码生成,例如在模型级别?
在使用MATLAB功能块,你不能把代码生成关闭的情况下。块的工作方式是将m代码转换为c代码(或者将任何代码定义为c代码中的code.extrinsic),然后运行编译后的代码作为模拟的一部分。它与整个模型的代码生成无关(如果您使用Simulink编码器而不是自己做)。 –