我正在创建一个模拟,我将自己移植到另一种语言 . 所以我不需要使用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,fi,single或double . 找到了一个mxArray . MxArrays从对MATLAB解释器的调用返回,并且在表达式中不受支持 . 它们可能只用于赋值的右侧,也可用作外在函数的参数 .
用 if
寻址第11行 .
为什么?是否可以完全禁用代码生成,例如在模型级别?
1 回答
在调用
imresize
函数之前,需要取消注释coder.extrinsic('imresize');
行并声明/初始化InImage
变量 . 有关详细信息,请参阅Converting mxArrays to Known Types .EDIT following discussion in the comments :
以下应该有效: