1

我尝试在 Simulink 中编写一个 Matlab 函数。我的第一个函数是这样的:

function y = fcn(u, v)
coder.extrinsic('detectSURFFeatures');
boxPoints = detectSURFFeatures(u);
%scenePoints = detectSURFFeatures(v);
vBoxPoints = boxPoints.selectStrongest(100);
y = 0;
y = vBoxPoints;

但我看到错误: 1. 尝试从“mxArray”中提取字段“selectStrongest”。2.未定义的函数或变量'vBoxPoints'。对局部变量的第一次赋值决定了它的类。3. 端口宽度或尺寸错误。“detecting_cross/MATLAB Function/v”的输出端口 1 是一个 [400x239] 矩阵。请帮忙。

4

1 回答 1

4

从外部函数返回的数据是 mxArray 类型。如果您想从这些 mxArrays 中获取值,您需要预先声明它们,以便外部函数的结果可以自动转换为该类型。你可以使用类似的东西

boxPoints = struct('selectStrongest',zeros(100,1));

在调用detectSUTFFeatures 之前。如果 mxArray 与函数中的不匹配,您将收到运行时错误。您的错误 2 和 3 是因为第一个问题。

于 2013-04-25T02:42:08.950 回答