2013-09-16 1 views
0

Итак, у меня есть, скажем, 5 разных векторов или матриц. Я в основном хочу сделать оператор If для того, содержит ли какой-либо из этих матриц определенный элемент (например, 2), а затем отображает некоторое значение (например, 8), если какая-либо из этих матриц содержит этот элемент. Это не имеет значения, если четыре из этих матриц не содержит элемент, если кто-то тогда я буду показывать 8.Как проверить, имеют ли некоторые матрицы определенный элемент?

Спасибо за помощь

+0

Возможный дубликат функции [MATLAB для матрицы] содержит значение X? (ala php's in \ _array())] (http://stackoverflow.com/questions/1913670/matlab-function-for-does-matrix-contain-value-x-ala-phps-in-array) –

+0

Не обязательно дубликат, так как он запрашивает одновременно несколько матриц. –

ответ

0

рассмотреть наличие 5 различных матриц с именами a1, a2, .. ., а5

if(numel(find(a1==2))|(numel(find(a2==2)))|(numel(find(a3==2)))|(numel(find(a4==2)))| (numel(find(a5==2)))) 
display(8) 
end 

вы можете использовать любой, если число повторений не важно:

if(any(a1(:)==2)|any(a2(:)==2)|any(a3(:)==2)|any(a4(:)==2)|any(a5(:)==2)) 
display(8) 
end 
+2

Должен выполнить эту работу, но особенно если последние несколько матриц велики, вы захотите избежать их оценки, если это не требуется. –

2

Предполагая, что ваши матрицы A, B, C, D и E. Her е является способ проверить, если любой из них содержит 2.

any(A(:) == 2) || any(B(:)== 2) || any(C(:)== 2) || any(D(:)== 2) || any(E(:) == 2) 

Обратите внимание на использование || вместо |, это означает, что, если обнаруживается одна матрица содержит 2, он больше не будет иметь, чтобы проверить других матриц.

Альтернативный, более компактный способ сделать это (вероятно, менее эффективен, хотя):

any([A(:); B(:); C(:);D(:);E(:)] == 2) 

Отсюда следует тривиальная для отображения 8, если утверждение верно.

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