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))};