mex文件出错... ....索引超出矩阵尺寸。索引值3超出了阵列gesgroup的有效范围[1-2]

时间:2014-05-07 16:09:31

标签: matlab mex matlab-coder

我有一个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文件,请告诉我。

1 个答案:

答案 0 :(得分:1)

初始化问题gesgroup的初始化大小为1x2,但行

gesgroup = [group, horgroup];

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

gesgroup = zeros(1,4); 

coder.varsize('gesgroup')

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