我使用MATLAB编码器将M文件转换为cpp文件。
构建时会产生问题。
预期是逻辑,char,int,fi,single或double。找到了 mxArray。 MxArrays从调用MATLAB返回 解释器并且在表达式中不受支持。他们可能只是 在作业的右侧使用,作为参数 外在功能。
MATLAB代码:
nms = sum(transpose(X).^2);
nms0=-1 * nms;
nms2=transpose(nms0);
nms3=transpose(X);
nms4=nms2*ones(1,n);
nms5=ones(n,1)*nms;
nms6=2*X*nms3;
nms7=zeros(150,150);
nms7=nms4-nms5; //This line is wrong
nms8=nms7 + nms6;
K = exp(nms8);
我想知道为什么代码在MATLAB中运行正确,但在构建
时出错答案 0 :(得分:0)
当您尝试在表达式中使用外部函数的结果时,会发生此错误。在你提供的代码中,“n”或“X”是外在函数的结果吗?即使它们不是外在函数的直接结果,它们也可能是根据其他外在函数的数据计算出来的。
解决问题的一种方法是帮助MATLAB编码器将这些外部数据转换为已知类型。您可以通过使用已知数据预先定义它们来实现。例如,
coder.extrinsic('some_extrinsic_fcn');
y = zeros(10,1);
y = some_extrinsic_fcn();
y = y * 2;
在这种情况下,some_extrinsic_fcn应该返回一个包含10个元素的双精度向量。生成的mxArray将自动转换并存储在y中。没有“y = zeros(10,1);
”行,y将是mxArray类型,而行“y = y * 2;
”将导致错误。