【发布时间】:2012-11-05 16:09:52
【问题描述】:
我有一个 2900 x 7 大小的矩阵
re2 = [x y z se index xc yc];
每一列 (x, y, z, se, index, xc, yc) 都包含数字,所有数字均为 2900 x 1 大小。
我正在尝试通过在第 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
但它不起作用。
我怎样才能得到这些子矩阵?
【问题讨论】:
-
哎哟!您不能每次都生成一个新变量
rexy_i_j(即rexy_1_1,rexy_1_2`` 只需通过赋值即可。这只会超出字面上名为rexy_i_j的变量的旧值。我建议使用单元格数组而不是:rexy{i, j}。另外,您是否有名为xc和yc的实际变量?我认为您没有正确提取子矩阵... -
谢谢,xc 和 yc 是 2700 x 1 列,包含数字。 xc 包含从 1 到 20 的数字,yc 包含 1 到 17。
标签: matlab for-loop matrix submatrix