Matlab函数作为Simulink块

时间:2013-04-24 18:18:49

标签: matlab simulink matlab-cvst matlab-coder

我试着在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]矩阵。 请帮助。

1 个答案:

答案 0 :(得分:4)

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

这样的东西
boxPoints = struct('selectStrongest',zeros(100,1));

在调用detectSUTFFeatures之前。如果mxArray与函数中的mxArray不匹配,则会出现运行时错误。您的错误2和3是由于第一个问题。

相关问题