查看: 987|回复: 4|关注: 0

[已解决] MATLAB怎么将一个矩阵按照条件划分成n个矩阵

[复制链接]

新手

12 麦片

财富积分


050


3

主题

6

帖子

0

最佳答案
将一个两行N列矩阵根据条件划分成n个矩阵,例如;
a=[ 4 15 41 52 60 72 80 90 98 110 118 126 135 141;
6 8 5 4 4 7 5 4 7 8 7 6 7 5]
以第一行为判断基准;每相邻两列之间的差值如果大于11就是截取点;得到答案因该是;
[4 15;  [41 52 60;   [72 80 90 98;    [110 118 126 135 141;
6 8]     5 4 4]          7 5 4 7]             8 7 6 7 5]
最好还能在这些矩阵中在筛选出;第二行第一列的数是第二行中唯一最大的;得到应该是;
[41 52 60;      [110 118 126 135 141;
5 4 4]              8 7 6 7 5]
求各位大佬的程序,在线等:$
回复主题 已获打赏: 0 积分

举报

论坛优秀回答者

权威

4641 麦片

财富积分



5

主题

4627

帖子

995

最佳答案
  • 关注者: 226
发表于 2020-9-4 10:26:33 | 显示全部楼层 |此回复为最佳答案
  1. a=[ 4 15 41 52 60 72 80 90 98 110 118 126 135 141;
  2. 6 8 5 4 4 7 5 4 7 8 7 6 7 5];
  3. a_temp1=[0 find(diff(a(1,:))>11) size(a,2)];
  4. a_temp2=mat2cell(a,size(a,1),diff(a_temp1));
  5. index_1=cellfun(@(x)find(x(2,:)==max(x(2,:))),a_temp2,'UniformOutput',false);
  6. index=cellfun(@(x)length(x)==1&x(1)==1,index_1);
  7. a_temp2(index)
复制代码

回复此楼 已获打赏: 0 积分

举报

新手

12 麦片

财富积分


050


3

主题

6

帖子

0

最佳答案
 楼主| 发表于 2020-9-4 11:17:12 | 显示全部楼层
本帖最后由 papapap 于 2020-9-4 13:25 编辑

[41 52 60;    [110 118 126 135 141;
5 4 4]            8 7 6 7 5]
在得到这两个矩阵中;每一列的数据分别为[41;[52; [60;   和[110;   [118;   [126;   [135;   [141;
                                                              5]      4]      4]          8]       7]        6]       7]       5]
这些数据实在如下矩阵中筛选出来的;
[41; 是  [38 39 40 41 42 43 44;
5]          0  1   2   5  3    4   2]    通过以第二行为基准筛选出最大值得到的(下面都是这样的)

[52; 是  [49 50 51 52 53 54 ;
4]          1  1   2   4   3   3]

[60; 是  [57 58 59 60 61 62 63 64 65 66 ;
4]          1  1   2   4  3   3    2   1   1   0]
且这些矩阵是源于原始矩阵    [1 2...38 39 40 41 42 43 44...49 50 51 52 53 54...57 58 59 60 61 62 63 64 65 66 67 68 69 70;
                                           3 4... 0   1   2  5   3   4   2.....1  1   2   4   3   3.....1  1   2   4  3   3   2   1   1  0   1  -2  -1  0 ]
如何将输出的两个矩阵(以第一个为例)每列数据对应的矩阵输出,且在原始矩阵中以画图以红色表示,应该得到
[1 2...38 39 40 41 42 43 44...49 50 51 52 53 54...57 58 59 60 61 62 63 64 65 66 67 68 69 70;
3 4... 0   1   2  5   3   4  2.....1  1   2   4   3   3.....1   1   2  4  3   3   2   1   1   0  1  -2  -1  0 ]
回复此楼 已获打赏: 0 积分

举报

新手

12 麦片

财富积分


050


3

主题

6

帖子

0

最佳答案
 楼主| 发表于 2020-9-4 13:19:12 | 显示全部楼层
本帖最后由 papapap 于 2020-9-4 13:23 编辑
papapap 发表于 2020-9-4 11:17
[41 52 60;    [110 118 126 135 141;
5 4 4]            8 7 6 7 5]
在得到这两个矩阵中;每一列的数据 ...

在线等
回复此楼 已获打赏: 0 积分

举报

新手

12 麦片

财富积分


050


3

主题

6

帖子

0

最佳答案
 楼主| 发表于 2020-9-4 13:26:09 | 显示全部楼层
回复此楼 已获打赏: 0 积分

举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /5 下一条

快速回复 返回顶部 返回列表