3
我有一个矩阵A删除特定的行,我想删除有相似的价值观(1,1)
,(2,2)
行,(3,3)
如何在矩阵
A =
1 1
2 1
3 1
1 2
2 2
1 3
3 3
所以矩阵会是这样
2 1
3 1
1 2
1 3
我有一个矩阵A删除特定的行,我想删除有相似的价值观(1,1)
,(2,2)
行,(3,3)
如何在矩阵
A =
1 1
2 1
3 1
1 2
2 2
1 3
3 3
所以矩阵会是这样
2 1
3 1
1 2
1 3
另一种不调用任何函数的方法:
基于 DIFF这种方法VS溶液的效率():
n = 10;
y = [round(rand(n,1)) round(rand(n,1))];
tic;
for i = 1:1e4
A = y;
A(diff(A,[],2)~=0,:);
end
toc
Elapsed time is 0.091990 seconds.
tic;
for i = 1:1e4
A = y;
A = A(A(:,1) == A(:,2),:);
end
toc
Elapsed time is 0.037842 seconds.
% Suggestion of @Dan in the comments
tic;
for i = 1:1e4
A = y;
A(A(:,1) == A(:,2),:) = [];
end
toc
Elapsed time is 0.147636 seconds.
使用一种方法diff
-
A(diff(A,[],2)~=0,:)
对于一般NXM
情况下,当M
是A
列数,可以为扩大这一点 - 因此
A(any(diff(A,[],2)~=0,2),:)
,如果你有
A= [1 1 1;
2 2 3;
3 1 4;
8 1 2;
2 2 2;
1 3 1;
3 3 3]
你会得到 -
2 2 3
3 1 4
8 1 2
1 3 1
或'A = A(A(:,1)〜= A(:,2),:)'如'= []'方法可能效率低下:http://stackoverflow.com/questions/12421345/deleting-matrix-elements-by-vs-reassigning-matrix – Dan
你是对的!谢谢! –
你应该在你的时间比较为了利益和未来的访客 – Dan