我有一个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文件,请告诉我。
答案 0 :(得分:1)
初始化问题gesgroup
的初始化大小为1x2,但行
gesgroup = [group, horgroup];
将使其为1x4(因为组和horgroup都是1x2),您需要将其初始化为 或 作为可变大小
例如
gesgroup = zeros(1,4);
或
coder.varsize('gesgroup')
我认为问题已经发生,因为在达到coder.varsize('gesgroup')
之前确定了大小,因此数组已经是固定大小