2015-05-17 3 views
1

У меня есть бинарная матрица, это выглядит следующим образом:Как определить одно и то же число в матрице?

A = [ 0 0 0 1 1 1 0 0 0 0 1 1 0 0 0 0 0; 
     1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0; 
     0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1; ] 

Но когда я пытаюсь поставить A в расчет, я могу только использовать вектор B, который является строка сумма матрицы A в расчет. B выглядит следующим образом:

B=[ 1 1 0 1 1 1 0 1 1 0 1 1 0 0 1 1 1]; 

Но я все еще хочу, чтобы нести информацию, о которой «1» происходит из какой строки матрицы A. Я хочу знать, есть ли способ добавить дополнительные условия к вектору B, так что вектор B все еще может переносить информацию из матрицы A, то есть из которой «1» получается из «строки» матрицы A.

+1

Можете ли вы предоставить пример вывода данных о Вашем выше входы? Трудно понять, чего вы желаете. – rayryeng

ответ

0

Его идея @ luis .. Я просто добавляю небольшие изменения. Кроме того, я до сих пор не знаю, хочет ли это того, чего хочет OP.

Создан 3D-матрицу из раствора LuiS, так что оба двоичные значения и грести данные хранятся в B. Если вы хотите двоичные значения, ломтик доступа 1. если вы хотите грести информацию, ломтик доступа 2

[B(:,:,1), B(:,:,2)] = max(A); 
B(1,~all(B,3),:) = 0; 

>> B 

B(:,:,1) = 

1 1 0 1 1 1 0 1 1 0 1 1 0 0 1 1 1 


B(:,:,2) = 

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

Если вы хотите конкретного двоичного значения и его индекс строки, скажем, например, 8-го двоичного значения и соответствующего индекса строки,

>> B(:,8,:) 

ans(:,:,1) = 

1 


ans(:,:,2) = 

2 
2

Предполагая, что A содержит только 0 и 1 значения,

[v, B] = max(A,[],1); 
B(v==0) = 0; 

дает

B = 
2 2 0 1 1 1 0 2 2 0 1 1 0 0 2 3 3 

Если есть более чем один 1 значение в столбце, это дает индекс строки первой один.

+0

Да, это хороший способ, но вы не понимаете, что я сказал. Я сказал, что я могу взять вектор B, который также является двоичным, в расчет. Я просто хочу добавить дополнительное условие к вектору B, но сам вектор B по-прежнему является двоичным. – Angelababy

+1

Вы хотите получить информацию о строке _ только от вашего 'B'_? Но это невозможно! –

+0

Возможно, если вы просто переименовали свой «B» в нечто другое или указали индексы в качестве дополнительной строки? Или можно легко преобразовать 'B' здесь в тот, который задан в вопросе OP. – horchler

Смежные вопросы