Используйте команду, если она есть в 3D-массиве в Matlab

У меня есть многомерный массив n на m на 3, например:

знач(:,:,1) =

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

знач(:,:,2) =

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

знач(:,:,1) =

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

И я хочу сказать Matlab: для каждой строки проверьте, равен ли какой-либо элемент 0, а затем создайте матрицу n на 1 на 3 (или, альтернативно, 3 матрицы n на 1) типа:

знач(:,:,1) =

 1
 0
 0
 1
 1

где 0 соответствует «да, хотя бы один из элементов этой строки равен 0», а 1 соответствует «нет, каждый элемент этой строки равен 1».

я пробовал с

for a = 1:n
   for b = 1: 3
       if any (A,2) ==0
       B (n,1,3)= 0;
       else 
       B (n,1,3)= 1;
       end
   end
end

или просто:

B= any(A,2) ==0

но это не работает, я всегда получаю массив (n,1,3) всех нулей.

Большое спасибо!


person Giovanni Rinaldi    schedule 28.05.2015    source источник
comment
И вы пробовали использовать функцию any...?   -  person Dan    schedule 28.05.2015


Ответы (1)


То, что вы ищете, это

~all(val, 2)

Вы можете использовать

any(~val, 2)

если вы настаиваете на использовании any.

Некоторые функции MATLAB принимают аргумент, указывающий, к какому измерению вы хотите их применить.

person Mohsen Nosratinia    schedule 28.05.2015