矩阵提取拆分

来源:matlab  › 交流  › 倒序浏览
  • 回答数

    2

  • 浏览数

    2206

  • 收藏数

    0

作者:离别伊人憔 发表于 2018-11-20 16:38:01
跳转到指定楼层
假设有一个行(列)矩阵A=[1 3 4 64 2 1 5 7 9 4 2 1],现在想将其拆开。规则是:按照从第一个元素到最后一个元素的顺序,如果元素小于等于3,将其放到一个矩阵;大于等于4小于7,放到一个矩阵;大于等于7,放到一个矩阵。
上述的描述可能不太清楚,就是最终想将A拆成下列几个矩阵:[1 3] [4 6 4] [2 1] [5] [7 9] [4] [2 1]
另举一个例子,矩阵B=[1 3 5 7 9 8 6 4 2 6 9] 按照上述规则将拆为[1 3] [5] [7 9 8] [6 4] [2] [6] [9]
矩阵C=[1 2 3 4 5 6 7 8 9 8 7 6 5 4 3 2 1]按上述规则将拆为[1 2 3] [ 4 5 6] [ 7 8 9 8 7] [ 6 5 4] [ 3 2 1]
请大神指点。

分享:
回复

使用道具

该用户从未签到

中级会员

Rank: 3Rank: 3

积分
500
极客币
103
主题
14
帖子
44
注册时间
2018-10-19
在线时间
3 小时
性别
保密
发表于 2018-11-20 16:38:19 | 显示全部楼层
  1. B=[1 3 5 7 9 8 6 4 2 6 9]
  2. C={B<=3,B>3&B<7,B>=7};
  3. for m=1:numel(C)
  4.     k=diff([0 C{m} 0]) ;
  5.     ind=find(k==1)  ;
  6.     ind1=find(k==-1)  ;
  7.     BA{m}=arrayfun(@(k)B(ind(k):ind1(k)-1),1:numel(ind),'un',0);
  8. end
复制代码
回复

使用道具 举报

该用户从未签到

新手上路

Rank: 1

积分
40
极客币
100
主题
12
帖子
46
注册时间
2018-10-19
在线时间
2 小时
性别
保密
 楼主| 发表于 2018-11-20 16:38:30 | 显示全部楼层
谢谢大神!我的矩阵原本就是在cell里面的,等我看看好好研究一下怎么编写
回复

使用道具 举报

高级模式 评论
您需要登录后才可以回帖 登录 | 立即注册 微信登录