24小时热门版块排行榜    

查看: 1593  |  回复: 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

至尊木虫 (著名写手)

骠骑将军

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
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的回帖
查看全部 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的回帖

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的回帖
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 调剂 +5 13853210211 2026-03-02 6/300 2026-03-02 22:10 by 无际的草原
[考研] 321求调剂一志愿东北林业大学材料与化工英二数二 +5 虫虫虫虫虫7 2026-03-01 9/450 2026-03-02 21:33 by sunny81
[考研] 求调剂 +3 Guo_yuxuan 2026-03-02 4/200 2026-03-02 21:18 by 无际的草原
[考研] 理学,工学,农学调剂,少走弯路,这里欢迎您! +5 likeihood 2026-03-02 8/400 2026-03-02 20:39 by ji493940045
[考研] 276求调剂 +5 路lyh123 2026-02-28 6/300 2026-03-02 20:35 by hypershenger
[考研] 材料工程专硕283求调剂 5+5 ,!? 2026-03-02 7/350 2026-03-02 20:27 by hypershenger
[考研] 272求调剂 +9 材紫有化 2026-02-28 9/450 2026-03-02 20:22 by hypershenger
[考研] 材料学硕318求调剂 +10 February_Feb 2026-03-01 10/500 2026-03-02 20:18 by hypershenger
[考研] 材料284求调剂,一志愿郑州大学英一数二专硕 +15 想上岸的土拨鼠 2026-02-28 15/750 2026-03-02 20:13 by hypershenger
[考研] 0854总分272 +3 打小就是老实人 2026-03-02 4/200 2026-03-02 19:49 by 求调剂zz
[考研] 一志愿华南理工大学材料与化工326分,求调剂 +3 wujinrui1 2026-02-28 3/150 2026-03-02 16:36 by chuocheng
[考研] 303求调剂 +5 今夏不夏 2026-03-01 5/250 2026-03-02 15:01 by 向上的胖东
[考研] 哈工大计算机刘劼团队招生 +4 hit_aiot 2026-03-01 6/300 2026-03-02 11:53 by 一声问好
[考研] 295求调剂 +8 19171856320 2026-02-28 8/400 2026-03-02 11:19 by yuchj
[考研] 284求调剂 +10 天下熯 2026-02-28 11/550 2026-03-02 11:03 by 无际的草原
[考研] 材料类求调剂 +11 wana_kiko 2026-02-28 14/700 2026-03-02 08:46 by 聪明的大松鼠
[基金申请] 成果系统访问量大,请一小时后再尝试。---NSFC啥时候好哦,已经两天这样了 +4 NSFC2026我来了 2026-02-28 4/200 2026-03-01 22:37 by 铁门栓
[基金申请] 刚录用,没有期刊号,但是在线可看的论文可以放为代表作吗 10+3 arang1 2026-03-01 3/150 2026-03-01 16:43 by babero
[考研] 313求调剂 +3 水流年lc 2026-02-28 3/150 2026-03-01 16:01 by 新能源达人
[论文投稿] Optics letters投稿被拒求助 30+3 luckyry 2026-02-26 4/200 2026-03-01 09:06 by babero
信息提示
请填处理意见