2016-10-24 3 views
0

У меня есть массив в Matlab, который называется myVec, и мне нужно выполнить операцию, если массив содержит хотя бы один 1 и один 0. Я не знаю, как я мог это сделать, я пробовал с find но это не сработало. Это то, что мне нужно.Проверьте два значения в массиве

if %myVec contains 0 && myVec contains 1 
    %Code A 
else 
    %Code B 
end 

Я проверил, что если вы попробуете, например find(myVec==0) и вернули позиции, которые выполняют заявление, оно может быть использовано как логическое if find(myVec==0), но потом я попытался if (find(myVec==0) && find(myVec==1)) и следующее сообщение об ошибке показано Operands to the || and && operators must be convertible to logical scalar values.

Всем спасибо.

+0

SO не является кодовым письмом. Что вы попробовали и почему это не сработало? – excaza

+0

@excaza Я попытался объяснить еще кое-что. – Lopan

+0

'find' возвращает пустой вектор, если там ничего нет, вам нужна функция' isempty' и, возможно, функция 'not' – Trogdor

ответ

2
if sum(myVec==1) && sum(myVec==0) 
    %Code A 
else 
    %Code B 
end 

% sum(myVec==1) counts the number of ones in myVec 
% sum(myVec==0) counts the number of zeros in myVec 
% if myVec is a matrix with more than one rows and columns, use myVec(:) instead 
+2

'any (myVec == 1) && any (myVec == 0)' может работать быстрее, плюс он ясно показывает намерение кода –

+0

@SomeGuy Да, это так. +1. – rayryeng

+0

@SomeGuy согласился! –

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