Индексирование матрицы в matlab в соответствии с условиями, установленными для других матриц - PullRequest
1 голос
/ 21 июня 2020

Я пытаюсь проиндексировать свою матрицу на основе двух условий, объясню.

Допустим, у меня есть две матрицы:

a = [7 3 4; 5 6 7; 4 8 0];
b = [1 9 8; 2 4 6; 6 1 6];

И третья матрица для индексации:

c = [1 2 3; 4 5 6; 7 8 9];

Моя цель - проиндексировать c таким образом, чтобы я получил матрицу 3x3, в которой копируются только значения c, для индексов которых выполняются следующие условия, а остальные - нули .

a <= 5, b >= 6

Итоговая матрица:

result = [0 2 3; 0 0 0; 7 0 9]

Надеюсь, я смог объяснить свою проблему.

Ответы [ 2 ]

1 голос
/ 21 июня 2020

Учитывая

a = [7 3 4; 5 6 7; 4 8 0];
b = [1 9 8; 2 4 6; 6 1 6];
c = [1 2 3; 4 5 6; 7 8 9];
result = zeros(size(c);

Используя логическую индексацию,

>> d = (a <= 5) & (b >= 6)
d =
  0  1  1
  0  0  0
  1  0  1

>> result(d) = c(d)
result =
   0   2   3
   0   0   0
   7   0   9
0 голосов
/ 21 июня 2020

L oop бросать строки и столбцы и устанавливать результат.

for row=1:size(a,1)
    for col=1:size(a,2)
          if(a(row,col)> b(row,col))
              result(row,col) = 0
          else
               result(row,col) = c(row,col)
          end  
    end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...