如何删除矩阵中某几列相同的行
例如:a=; 只比较a矩阵的1、2列是否相同,如果1、2列的数值相同,则删除对应的行,不比较第三列的数值。a中第4行的一、二列,第5行的一、二列重复,删除相应行,最终的到矩阵 b=;求高手指导!!感谢!!! [~, ind, ~]=unique(a(:,1:2), 'rows', 'stable')b = a(ind, :);
chybeyond 发表于 2014-5-28 16:35
是运行错误,还是结果错误。。 chybeyond 发表于 2014-5-28 17:04
是运行错误,还是结果错误。。
运行结果如图:
本帖最后由 chybeyond 于 2014-5-28 17:20 编辑
牛小贱 发表于 2014-5-28 17:08
运行结果如图:
可能版本不一样,我用2012a,可以正常运行
[~, ind, ~]=unique(a(:,1:2), 'rows', 'stable');
b = a(ind, :)
b =
1 2 1
2 3 1
4 5 2
4 2 3 本帖最后由 牛小贱 于 2014-5-28 17:27 编辑
或者:a=; [~,ind,~]=unique(a(:, 1:2), 'rows', 'first');
b=a(sort(ind), :)
chybeyond 发表于 2014-5-28 17:24
或者: [~,ind,~]=unique(a(:, 1:2), 'rows', 'first');
b=a(sort(ind), :)
这条代码可以运行,上一条代码,我在其他电脑上运行也出错误~谢谢解答!! 牛小贱 发表于 2014-5-28 17:26
这条代码可以运行,上一条代码,我在其他电脑上运行也出错误~谢谢解答!!
如果是2012a及以上版本应该不会出错,2010help unique还没有stable这个选项。
2012unique代码:flagvals = {'rows' 'first' 'last' 'sorted' 'stable' 'legacy' 'R2012a'};
2010unique代码:flagvals = {'rows' 'first' 'last'};
页:
[1]