24小时热门版块排行榜    

查看: 1613  |  回复: 7

sweet711

金虫 (小有名气)

[求助] 请教 matelab 矩阵按需求删除某些行

我有3个矩阵,行数可能不一样,列数相同。我希望从每个矩阵里面删除某些行,把这三个矩阵弄成行数相同的矩阵。 删除的标准是,如果某行的第一列数字和第二列数字同时存在于所有矩阵的某一行的第一列与第二列中,则保留该行。例如下面三个矩阵:只有3 11,5 10, 4 13存在于所有矩阵中,所以3 11,5 10, 4 13 所在的行都保留下来

删除前:
matix 1
3   10   0.4473     0.4998     0.5284     
3   11   0.1380     3.3635     2.7002   
5   10   4.0288     4.9449     1.4095     
4   13   1.8280     5.0043     2.4272      

matrix 2
3   11   0.1462     3.4001     2.7230     
5   10   4.0535     4.8938     1.4548     
4   13   1.8416     5.0022     2.4001   
6   11   4.2333     1.4657     2.4669   
9   14   0.0801     5.1012     4.2993     

matrix 3
3   10   0.2510     0.3264     0.7812      
2  16   1.7152     1.9370     1.7490     
3   11   0.2548     3.5641     2.6389   
5   10   4.0846     4.7689     1.4941   
8   10   5.3900     2.9729     0.6334     
4   13   1.9304     5.0974     2.2305     
6   11   4.3721     1.5243     2.4893   
9   11   5.5361     5.3065     4.1403     
15  13   2.2028     3.0847     4.0501     

删除后得到:
new matrix1
3  11   0.1380     3.3635     2.7002   
5  10   4.0288     4.9449     1.4095     
4  13   1.8280     5.0043     2.4272

new matrix2
3  11   0.1462     3.4001     2.7230     
5  10   4.0535     4.8938     1.4548     
4  13   1.8416     5.0022     2.4001   

new matrix 3
3  11   0.2548     3.5641     2.6389   
5  10   4.0846     4.7689     1.4941   
4  13   1.9304     5.0974     2.2305

不知道我说清除没有,实际情况比这个例子复杂,不止3个矩阵。请高手赐教!谢谢!
回复此楼

» 收录本帖的淘帖专辑推荐

经典帖子淘~

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

libralibra

至尊木虫 (著名写手)

骠骑将军

【答案】应助回帖

感谢参与,应助指数 +1
我没有找到简便方便方法
CODE:
%测试矩阵,3个
m1 = [3   10   0.4473     0.4998     0.5284     
3   11   0.1380     3.3635     2.7002   
5   10   4.0288     4.9449     1.4095     
4   13   1.8280     5.0043     2.4272];
m2 = [3   11   0.1462     3.4001     2.7230     
5   10   4.0535     4.8938     1.4548     
4   13   1.8416     5.0022     2.4001   
6   11   4.2333     1.4657     2.4669   
9   14   0.0801     5.1012     4.2993];
m3 = [3   10   0.2510     0.3264     0.7812      
2  16   1.7152     1.9370     1.7490     
3   11   0.2548     3.5641     2.6389   
5   10   4.0846     4.7689     1.4941   
8   10   5.3900     2.9729     0.6334     
4   13   1.9304     5.0974     2.2305     
6   11   4.3721     1.5243     2.4893   
9   11   5.5361     5.3065     4.1403     
15  13   2.2028     3.0847     4.0501];

%按照规则规律,得到满足要求的前两列
m123 = intersect(intersect(m1(:,1:2),m2(:,1:2),'rows'),m3(:,1:2),'rows');

%选取原矩阵中满足条件的
m1 = m1(ismember(m1(:,1:2),m123,'rows'),:);
m2 = m2(ismember(m2(:,1:2),m123,'rows'),:);
m3 = m3(ismember(m3(:,1:2),m123,'rows'),:);

matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
2楼2012-06-21 01:13:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

libralibra

至尊木虫 (著名写手)

骠骑将军

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
sweet711: 金币+25, ★★★很有帮助, 谢谢高手点拨。虽然答案只针对了3个矩阵,但提供了很好的思路。谢谢。 2012-06-21 15:26:38
sweet711: 金币+15, ★★★★★最佳答案, 追加金币 2012-06-22 00:10:52
结果如下:
CODE:
m1 =
    3.0000   11.0000    0.1380    3.3635    2.7002
    5.0000   10.0000    4.0288    4.9449    1.4095
    4.0000   13.0000    1.8280    5.0043    2.4272
m2 =
    3.0000   11.0000    0.1462    3.4001    2.7230
    5.0000   10.0000    4.0535    4.8938    1.4548
    4.0000   13.0000    1.8416    5.0022    2.4001
m3 =
    3.0000   11.0000    0.2548    3.5641    2.6389
    5.0000   10.0000    4.0846    4.7689    1.4941
    4.0000   13.0000    1.9304    5.0974    2.2305

matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
3楼2012-06-21 01:15:02
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lijie169

铜虫 (著名写手)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
sweet711: 金币+5, ★★★很有帮助, 谢谢参与讨论,我试着写个函数来实现。 2012-06-21 15:27:26
sweet711: 金币+5, ★★★很有帮助, 追加金币 2012-06-22 00:11:13
引用回帖:
3楼: Originally posted by libralibra at 2012-06-21 01:15:02
结果如下:
m1 =
    3.0000   11.0000    0.1380    3.3635    2.7002
    5.0000   10.0000    4.0288    4.9449    1.4095
    4.0000   13.0000    1.8280    5.0043    2.4272
m2 =
    3.0000   11.000 ...

写个函数会好点吧,楼主说明的是不止3个矩阵....
比较笨的办法,就是一个一个的排除,效率比较低。比较好的办法就是给矩阵排个序,然后再查找删除,也许效率高点,估计实现起来稍微有点复杂...
4楼2012-06-21 06:35:25
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sweet711

金虫 (小有名气)

追加20个金币,求更简便的方法。实际情况有上千个矩阵。
5楼2012-06-21 15:30:44
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sweet711

金虫 (小有名气)

引用回帖:
4楼: Originally posted by lijie169 at 2012-06-20 23:35:25
写个函数会好点吧,楼主说明的是不止3个矩阵....
比较笨的办法,就是一个一个的排除,效率比较低。比较好的办法就是给矩阵排个序,然后再查找删除,也许效率高点,估计实现起来稍微有点复杂......

请问排序的目的是什么呢?
6楼2012-06-21 15:43:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lijie169

铜虫 (著名写手)

【答案】应助回帖

引用回帖:
6楼: Originally posted by sweet711 at 2012-06-21 15:43:10
请问排序的目的是什么呢?...

效率的因素的...排序之后的删除效率会提高的,太别是针对单个矩阵行太多的情况下
7楼2012-06-21 20:17:26
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sweet711

金虫 (小有名气)

我弄明白了,写个小循环就可以了

m123=intersect(matrix(:,1:2,1),matrix(:,1:2,2),'rows');
for t=3:n
     m123=intersect(m123,matrix(:,1:2,t),'rows');
end;
8楼2012-06-22 00:07:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 sweet711 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 086000生物与医药292求调剂 +4 小小陈小小 2026-03-22 7/350 2026-03-25 19:07 by 星空星月
[考研] 生物技术与工程 +3 1294608413 2026-03-25 4/200 2026-03-25 18:02 by 1294608413
[考研] 302求调剂 +4 锦衣卫藤椒 2026-03-25 4/200 2026-03-25 16:29 by 功夫疯狂
[考研] 一志愿 西北大学 ,070300化学学硕,总分287,双非一本,求调剂。 +4 晨昏线与星海 2026-03-20 4/200 2026-03-25 10:16 by allen-yin
[考研] 食品专硕 一志愿双一流 328 +3 xiaom99 2026-03-21 4/200 2026-03-24 21:20 by lailaisimei
[考研] 0856材料专硕353求调剂 +6 NIFFFfff 2026-03-20 6/300 2026-03-24 21:02 by hello七七
[考研] 291求调剂 +3 HanBeiNingZC 2026-03-24 3/150 2026-03-24 16:34 by barlinike
[考研] 279分求调剂 一志愿211 +18 chaojifeixia 2026-03-19 20/1000 2026-03-24 10:34 by dolphin_ycj
[考研] 276求调剂。有半年电池和半年高分子实习经历 +9 材料学257求调剂 2026-03-23 10/500 2026-03-24 07:36 by wangy0907
[考研] 环境学硕288求调剂 +8 皮皮皮123456 2026-03-22 8/400 2026-03-23 23:47 by 热情沙漠
[考研] 一志愿陕师大生物学071000,298分,求调剂 +3 SYA! 2026-03-23 3/150 2026-03-23 19:09 by macy2011
[考研] 求老师收我 +3 zzh16938784 2026-03-23 3/150 2026-03-23 12:56 by ztnimte
[考研] 306求调剂 +5 来好运来来来 2026-03-22 5/250 2026-03-22 16:17 by BruceLiu320
[考研] 260求调剂 +3 朱芷琳 2026-03-20 4/200 2026-03-22 15:12 by 朱芷琳
[考研] 一志愿重庆大学085700资源与环境总分308求调剂 +7 墨墨漠 2026-03-20 7/350 2026-03-21 16:36 by barlinike
[考研] 材料与化工(0856)304求 B区 调剂 +3 邱gl 2026-03-21 3/150 2026-03-21 13:47 by lature00
[考研] 求调剂 +3 白QF 2026-03-21 3/150 2026-03-21 13:12 by zhukairuo
[考研] 330求调剂0854 +3 assdll 2026-03-21 3/150 2026-03-21 13:01 by 搏击518
[考研] 一志愿 西北大学 ,070300化学学硕,总分287,双非一本,求调剂。 +4 晨昏线与星海 2026-03-19 4/200 2026-03-20 22:15 by JourneyLucky
[考研] 295复试调剂 +8 简木ChuFront 2026-03-19 8/400 2026-03-20 20:44 by zhukairuo
信息提示
请填处理意见