matlab编译器将m文件转换为c ++?

时间:2013-04-29 15:53:50

标签: matlab

我使用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中运行正确,但在构建

时出错

1 个答案:

答案 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;”将导致错误。