【问题标题】:Splitting a matrix based on certain values in the rows根据行中的某些值拆分矩阵
【发布时间】:2019-02-14 14:25:24
【问题描述】:

我有一个这样的矩阵A

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

我想根据行值911 将矩阵 A 拆分为三个矩阵(A1,A2,A3),如下所示:

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循环(我需要这个循环)来生成三个矩阵。

【问题讨论】:

    标签: loops for-loop matrix octave


    【解决方案1】:

    这是一种方法。

        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,:)')
    

    【讨论】:

      猜你喜欢
      • 2016-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-04
      • 2019-09-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多