我有一个2900 x 7大小的矩阵
re2 = [x y z se index xc yc];
每列(x,y,z,se,index,xc,yc)包含数字,所有2900 x 1相同的大小。
我试图通过在第6和第6中找到特定元素来制作一些子矩阵。第7列。像这样:
rexy_1_1 = re2(xc==1 & yc==1,:);
rexy_1_2 = re2(xc==1 & yc==2,:);
rexy_1_3 = re2(xc==1 & yc==3,:);
rexy_1_4 = re2(xc==1 & yc==4,:);
rexy_1_5 = re2(xc==1 & yc==5,:);
....
rexy_20_17 = re2(xc==20 & yc==17,:);
但这意味着我需要编写340行来生成340个子矩阵。有没有聪明的方法来做到这一点?我试着使用两个for循环:
for i=1:20
for j=1:17
rexy_i_j = re2(xc==i & yc==j,:);
end
end
但它没有用。
我如何获得这些子矩阵?
答案 0 :(得分:4)
我同意@EitanT你应该使用单元格数组,而不是制作大量不同命名的数组。然后,您就可以rexy{i,j}
访问这些子矩阵。
要构建此单元格数组,可以使用accumarray
,如下所示:
rexy = accumarray(re2(:,6:7),(1:size(re2,1))',[],@(x){re2(x,:)})