Как получить эту матрицу - PullRequest
       14

Как получить эту матрицу

0 голосов
/ 24 января 2012

У меня есть эта матрица:

 S.No.  A         B  
 1     5268020   1756  
 2     15106230  5241  
 3     24298744  9591  
 4     23197375  9129  

Я хочу получить матрицу, которая будет иметь два столбца [X, Y].X примет значения от S.No.и Y может быть либо 1, либо 0. Например, для 1 5268020 1756 должно быть всего 5268020 (1,0), то есть (X, Y) пар и 1756 (1,1) пар.

Как я могу получить эту матрицу в октаве ??

1 Ответ

1 голос
/ 24 января 2012

Если я правильно понимаю ваш вопрос, вы хотите заполнить матрицу повторяющимися записями (x, 0) и (x, 1), где x = 1 ... 4, где повторяемость определяется значениями, найденными в столбце A и B. Учитывая введенные вами значения, это будет огромная матрица (67 896 086 строк). Итак, вы можете попробовать что-то вроде этого (замените m ниже, у которого меньше элементов для иллюстративных целей):

m = [1, 2, 1; 
     2, 3, 2; 
     3, 2, 1; 
     4, 2, 2];
res = [];
for k = 1:4
  res = [res ; [k*ones(m(k, 2), 1), zeros(m(k, 2), 1); 
                k*ones(m(k, 3), 1), ones(m(k, 3), 1)]];
endfor

, что дает

res =

   1   0
   1   0
   1   1
   2   0
   2   0
   2   0
   2   1
   2   1
   3   0
   3   0
   3   1
   4   0
   4   0
   4   1
   4   1

Из любопытства, есть ли причина не рассматривать такую ​​матрицу, как

1  0  n
1  1  m
2  0  p
2  1  q
...

, где n, m, p, q, это значения, найденные в столбцах A и B. Это, вероятно, будет легче обрабатывать, нет?

...