1

我有一个 mex 文件的函数文件。但是在运行 mex 文件时会出错。以下是代码。

在代码中,我初始化了 3 个名为 group、horgroup、gesgroup 的向量,并将 gesgroup 声明为 varsize。

group = zeros(1,2);    
horgroup = zeros(1,2); 
gesgroup = zeros(1,2); 
coder.varsize('gesgroup');

在几行中,group 和 horgroup 被计算为大小为 (1 * 2) 的数组,例如 group = [1 2] 和 horgroup = [3 4] 稍后我需要使用将 group 和 horgroup 合并到 gesgroup

gesgroup = [group, horgroup];
gesgroup(gesgroup==0) = NaN;

此代码在生成 mex 文件时没有给出任何错误,但是当我运行 mex 文件时,它在上面两行中给出错误,说“索引超出矩阵维度。索引值 3 超出数组 gesgroup 的有效范围 [1-2]”

如果我需要更改代码中的任何内容并再次生成 mex 文件,请告诉我。

4

1 回答 1

1

问题在于初始化gesgroup是用大小 1x2 初始化的,但是该行

gesgroup = [group, horgroup];

将使其成为 1x4(因为 group 和 horgroup 都是 1x2),您需要将其初始化为这样可变大小,
例如

gesgroup = zeros(1,4); 

或者

coder.varsize('gesgroup')

我认为问题已经发生,因为在coder.varsize('gesgroup')达到之前确定了大小,所以数组已经是固定大小

于 2014-05-07T19:20:16.140 回答