根据行中的某些值拆分矩阵

时间:2019-02-14 14:25:24

标签: loops for-loop matrix octave

我有一个像这样的矩阵A

A = [911 911; 
       0   2; 
       8   5; 
       7   3; 
     911 911; 
       5   3; 
       1   6; 
       6   7; 
     911 911; 
       3   5; 
       8   4];

我想基于行值A将矩阵A1分成三个矩阵(A2A3911),如下所示:< / p>

A1 = [0 2; 8 5; 7 3]; 
A2 = [5 3; 1 6; 6 7];
A3 = [3 5; 8 4];

我需要在for循环中执行此操作,该循环将逐个给出分散的矩阵。

这是我的小代码,它将找出行位置以找出911值:

key = 911;
headeridx = and(any(s1Table == key, 2), any(s1Table == key, 2));
row_position= find(headeridx);

然后,我对如何进行for循环(我需要此循环)以生成三个矩阵感到困惑。

1 个答案:

答案 0 :(得分:0)

这是一种实现方式。

    clear
    A = [911 911;
           0   2; 
           8   5; 
           7   3; 
         911 911; 
           5   3; 
           1   6; 
           6   7; 
         911 911; 
           3   5; 
           8   4];

     ar=0;
     n=1;
     for k=1:rows(A)
       if A(k,1)==911
         ar=ar+1;
         n=1;
       else
         q{ar,n}=A(k,1:2);
         n=n+1;
       endif
     endfor

     A1=cell2mat(q(1,:)')
     A2=cell2mat(q(2,:)')
     A3=cell2mat(q(3,:)')