Matlab 使用随机生成的数组填充数组时出现索引错误

Matlab 使用随机生成的数组填充数组时出现索引错误,matlab,Matlab,我在运行这段关于索引的代码时出错。我已经将逻辑运行了好几次,还没有发现我的错误,我认为这是我编写本节的方式。任何帮助都将不胜感激。请让我知道,如果我错过了这段代码的任何重要信息 index_pairs = [1,12661;12662,46147;46148,52362] group_class_count = [10137,2524;127448,20738;1570,4645] group_count = 3 cross_sections = 10 for j=1:group_co

我在运行这段关于索引的代码时出错。我已经将逻辑运行了好几次,还没有发现我的错误,我认为这是我编写本节的方式。任何帮助都将不胜感激。请让我知道,如果我错过了这段代码的任何重要信息

index_pairs = [1,12661;12662,46147;46148,52362]    
group_class_count = [10137,2524;127448,20738;1570,4645]
group_count = 3
cross_sections = 10

for j=1:group_count
    rand_index=randsample(index_pairs(j,1):index_pairs(j,2),(group_class_count(j,1)+group_class_count(j,2)),true);  % Creates an index of random rows for the current group.
    cross_size(j)=floor(size(rand_index,2)/cross_sections);
    for k=1:cross_sections
        cross_rand_indices(j,k)={rand_index(cross_size*(k-1)+1:cross_size*(k))};
    end
 end

error: Index exceeds matrix dimensions. Error in cross_rand_indices(j,k)={rand_index(cross_size*(k-1)+1:cross_size*(k))}; 
如果你改变

cross_rand_indices(j,k)={rand_index(cross_size*(k-1)+1:cross_size*(k))};

错误将消失。

我假设这符合您在外循环中将某些内容保存到
交叉大小(j)
时的意图。

为了复制原始错误,我将replacement设置为true。这是否与您使用
交叉大小
而不是
交叉大小(j)有关
k
-循环中?此错误确实会引发错误。对于j=3和k=5,它试图访问索引k-1(等于4)处的交叉大小。但在这一点上,cross_size仅为1x3。@Nras我不确定是否正在访问
cross_size
中的任何索引-似乎
cross_size
乘以
(k-1)
(k)
,@Schorsch这似乎是真的,我的错了。
cross_rand_indices(j,k)={rand_index(cross_size(j)*(k-1)+1:cross_size(j)*(k))};