【问题标题】:matlab coder covert m-file to c++?matlab编码器将m文件隐藏到c ++?
【发布时间】:2013-04-23 08:58:54
【问题描述】:

我使用 MATLAB 编码器将 M 文件转换为 cpp 文件。

构建时出现问题。

预期为逻辑、char、int、fi、single 或 double。找到一个 数组。 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中运行正确,但是在构建时却出错了

【问题讨论】:

    标签: matlab


    【解决方案1】:

    当您尝试在表达式中使用外部函数的结果时会发生此错误。在您提供的代码中,“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;”行将导致错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多