Matlab 提取序列矩阵元素?
我有一个矩阵,如下所示:Matlab 提取序列矩阵元素?,matlab,loops,matrix,Matlab,Loops,Matrix,我有一个矩阵,如下所示: A=[2 4;1 3;8 6;5 1;4 9] 现在我需要将矩阵A提取为两部分: newpoint=[2 4]; rest=[1 3;8 6;5 1;4 9]; 然后再次应用循环以提取第二列作为新点: newpoint=[1 3]; rest=[2 4;8 6;5 1;4 9]; newpoint=[8 6]; rest=[2 4;1 3;5 1;4 9]; 再次应用循环以将第三列编号作为新点: newpoint=[1 3]; rest=[2 4;8 6;5 1
A=[2 4;1 3;8 6;5 1;4 9]
现在我需要将矩阵A提取为两部分:
newpoint=[2 4];
rest=[1 3;8 6;5 1;4 9];
然后再次应用循环以提取第二列作为新点:
newpoint=[1 3];
rest=[2 4;8 6;5 1;4 9];
newpoint=[8 6];
rest=[2 4;1 3;5 1;4 9];
再次应用循环以将第三列编号作为新点:
newpoint=[1 3];
rest=[2 4;8 6;5 1;4 9];
newpoint=[8 6];
rest=[2 4;1 3;5 1;4 9];
按行顺序取数字,直到最后一行。有人能帮忙吗?谢谢~你说过要提取列,但给出了行的示例。我继续说下去,假设你是指争吵 你可以用for循环来完成
A = [2 4; 1 3; 8 6; 5 1; 4 9];
for idx = 1:size(A, 1)
newpoint = A(idx, :);
rest = A; % Copy A to rest
rest(idx, :) = []; % Remove newpoint line
% do stuff
end
前两次迭代的结果:
newpoint =
2 4
rest =
1 3
8 6
5 1
4 9
newpoint =
1 3
rest =
2 4
8 6
5 1
4 9
如果a
矩阵很大,这不是一个好方法
编辑:事实上,不要使用此方法。George Aprilis对其进行计时,发现100000 x2矩阵的时间为123秒。我想我的电脑慢多了。花了216秒。我重复一遍,不要使用此选项。您说过要提取列,但给出了行示例。我继续说下去,假设你是指争吵 你可以用for循环来完成
A = [2 4; 1 3; 8 6; 5 1; 4 9];
for idx = 1:size(A, 1)
newpoint = A(idx, :);
rest = A; % Copy A to rest
rest(idx, :) = []; % Remove newpoint line
% do stuff
end
前两次迭代的结果:
newpoint =
2 4
rest =
1 3
8 6
5 1
4 9
newpoint =
1 3
rest =
2 4
8 6
5 1
4 9
如果a
矩阵很大,这不是一个好方法
编辑:事实上,不要使用此方法。George Aprilis对其进行计时,发现100000 x2矩阵的时间为123秒。我想我的电脑慢多了。花了216秒。我重复一遍,不要用这个。除了HebeleHododo的答案,如果你有大矩阵,也许你可以试试这个:
A=[24;13;86;51;49];
B=零(大小(A,1)-1,大小(A,2));
对于idx=1:尺寸(A,1)
newpoint=A(idx,:);
B(1:idx-1,:)=A(1:idx-1,:);
B(idx:end,:)=A(idx+1:end,:);
%做事
结束
它没有摆脱for循环的,但是临时B矩阵是预先分配的,并且A和B之间的副本是清晰的,这使得它更快
对于A=rand(100000,2)
HebeleHododo的方法在我的计算机中大约需要123秒
上面的一个需要85秒
编辑:仅供参考,计时是使用英特尔Core i5-3450 CPU@3.10GHz
和Matlab R2011b
完成的。除了HebeleHododo的答案之外,如果你有大矩阵,也许你可以尝试以下方法:
A=[24;13;86;51;49];
B=零(大小(A,1)-1,大小(A,2));
对于idx=1:尺寸(A,1)
newpoint=A(idx,:);
B(1:idx-1,:)=A(1:idx-1,:);
B(idx:end,:)=A(idx+1:end,:);
%做事
结束
它没有摆脱
for循环的,但是临时B矩阵是预先分配的,并且A和B之间的副本是清晰的,这使得它更快
对于A=rand(100000,2)
HebeleHododo的方法在我的计算机中大约需要123秒
上面的一个需要85秒
编辑:仅供参考,使用英特尔Core i5-3450 CPU@3.10GHz
和Matlab R2011b