Разбиение матрицы на основе определенных значений в строках - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть матрица 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, A2, A3) на основезначения строк 911 примерно так:

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 голосов
/ 20 февраля 2019

Это один из способов сделать это.

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