24小时热门版块排行榜    

查看: 1609  |  回复: 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的回帖

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的回帖
查看全部 8 个回答

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的回帖
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 一志愿山东大学药学学硕求调剂 +3 开开心心没烦恼 2026-03-23 4/200 2026-03-24 00:06 by 开开心心没烦恼
[考研] 0854 考研调剂 招生了!AI 方向 +4 pk3725069 2026-03-19 16/800 2026-03-23 23:09 by 汪!?!
[考研] 一志愿211 初试270分 求调剂 +4 谷雨上岸 2026-03-23 5/250 2026-03-23 21:18 by 不惑可乐
[考研] 303求调剂 +4 元夕元 2026-03-20 4/200 2026-03-23 19:00 by macy2011
[考研] 070300,一志愿北航320求调剂 +3 Jerry0216 2026-03-22 5/250 2026-03-23 09:16 by 。。堂堂
[考研] 0854电子信息求调剂 +3 α____ 2026-03-22 3/150 2026-03-22 21:28 by zhq0425
[考研] 石河子大学(211、双一流)硕博研究生长期招生公告 +3 李子目 2026-03-22 3/150 2026-03-22 21:01 by 怎么释怀
[考研] 一志愿中南化学(0703)总分337求调剂 +9 niko- 2026-03-19 10/500 2026-03-22 16:08 by ColorlessPI
[考研] 一志愿 西北大学 ,070300化学学硕,总分287,双非一本,求调剂。 +3 晨昏线与星海 2026-03-20 3/150 2026-03-22 16:00 by ColorlessPI
[考研] 269专硕求调剂 +6 金恩贝 2026-03-21 6/300 2026-03-22 14:31 by ColorlessPI
[考研] 354求调剂 +7 Tyoumou 2026-03-18 10/500 2026-03-22 11:11 by 人来盛
[考研] 求调剂 +4 要好好无聊 2026-03-21 4/200 2026-03-21 18:57 by 学员8dgXkO
[考研] 一志愿南大,0703化学,分数336,求调剂 +3 收到VS 2026-03-21 3/150 2026-03-21 18:42 by 学员8dgXkO
[考研] 266求调剂 +3 哇呼哼呼哼 2026-03-20 3/150 2026-03-21 16:46 by barlinike
[考研] 求调剂 +6 Mqqqqqq 2026-03-19 6/300 2026-03-21 08:04 by JourneyLucky
[考研] 一志愿 西北大学 ,070300化学学硕,总分287,双非一本,求调剂。 +3 晨昏线与星海 2026-03-18 3/150 2026-03-21 00:46 by JourneyLucky
[考研] 一志愿武汉理工材料工程专硕调剂 +9 Doleres 2026-03-19 9/450 2026-03-20 22:36 by JourneyLucky
[考研] 材料学求调剂 +4 Stella_Yao 2026-03-20 4/200 2026-03-20 20:28 by ms629
[考研] 一志愿中国海洋大学,生物学,301分,求调剂 +5 1孙悟空 2026-03-17 6/300 2026-03-19 23:46 by zcl123
[考研] 生物学调剂招人!!! +3 山海天岚 2026-03-17 4/200 2026-03-19 21:34 by 怎么释怀
信息提示
请填处理意见