24小时热门版块排行榜    

查看: 1590  |  回复: 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的回帖
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 理学,工学,农学调剂,少走弯路,这里欢迎您! +3 likeihood 2026-03-02 5/250 2026-03-02 16:37 by ZRH_878
[考研] 接收调剂 +4 津萌津萌 2026-03-02 7/350 2026-03-02 16:37 by 津萌津萌
[考研] 清华大学 材料与化工 353分求调剂 +3 awaystay 2026-03-02 4/200 2026-03-02 16:35 by chuocheng
[考研] 求调剂 +9 yunziaaaaa 2026-03-01 10/500 2026-03-02 15:18 by 半截的诗0927
[考研] 0856化工专硕求调剂 +15 董boxing 2026-03-01 15/750 2026-03-02 15:06 by 晃晃不许晃
[考研] 江苏省农科院招调剂1名 +4 Qwertyuop 2026-03-01 4/200 2026-03-02 14:27 by 升格阿达
[考博] 诚招农业博士 +3 心欣向荣 2026-02-28 3/150 2026-03-02 13:33 by 时间不狗
[考研] 272求调剂 +7 材紫有化 2026-02-28 7/350 2026-03-02 12:48 by 无际的草原
[考研] 265分求调剂不调专业和学校有行学上就 +6 礼堂丁真258 2026-02-28 9/450 2026-03-02 12:04 by 52hz~~
[考研] 276求调剂 +4 路lyh123 2026-02-28 5/250 2026-03-02 11:20 by yuchj
[考研] 295求调剂 +8 19171856320 2026-02-28 8/400 2026-03-02 11:19 by yuchj
[考研] 材料工程专硕283求调剂 5+4 ,!? 2026-03-02 6/300 2026-03-02 11:07 by 黑!在干嘛
[考研] 0854复试调剂 276 +4 wmm9 2026-03-01 6/300 2026-03-02 09:28 by 热情沙漠
[基金申请] 成果系统访问量大,请一小时后再尝试。---NSFC啥时候好哦,已经两天这样了 +4 NSFC2026我来了 2026-02-28 4/200 2026-03-01 22:37 by 铁门栓
[考研] 0856求调剂285 +10 吕仔龙 2026-02-28 10/500 2026-03-01 21:37 by 公瑾逍遥
[考研] 299求调剂 +3 Y墨明棋妙Y 2026-02-28 5/250 2026-03-01 21:01 by tangxiaotian
[考研] 285求调剂 +8 满头大汗的学生 2026-02-28 8/400 2026-03-01 16:47 by caszguilin
[考研] 313求调剂 +3 水流年lc 2026-02-28 3/150 2026-03-01 16:01 by 新能源达人
[考研] 调剂 +3 简木ChuFront 2026-02-28 3/150 2026-03-01 11:46 by 王伟要上岸啊
[论文投稿] 求助coordination chemistry reviews 的写作模板 10+3 ljplijiapeng 2026-02-27 4/200 2026-03-01 09:07 by babero
信息提示
请填处理意见