How to take logical or of all the elements in the vector without a loop?
3 ビュー (過去 30 日間)
古いコメントを表示
I am trying to use
or(a(1,1):a(1,size(a,2)))
but it doesn't run for more than 2 elements.
also when I run
or(1,1,0,0.1,0,1)
it doesn't run. It only runs for 2 inputs i.e.
or(1,0)
Is there no direct way that I can take the logical OR of elements a(1,1) to a(1,size(a,2))?
採用された回答
Ameer Hamza
2020 年 11 月 16 日
編集済み: Ameer Hamza
2020 年 11 月 16 日
or() is an operator just defined for two inputs. In case of multiple inputs, you can use any() which is equivalent to or of all elements
>> y = any([1,1,0,0,1,0,1])
y =
logical
1
Similarly, all() is equivalent to and of all elements
>> y = all([1,1,0,0,1,0,1])
y =
logical
0
0 件のコメント
その他の回答 (1 件)
KSSV
2020 年 11 月 16 日
Note that you have two types of indexings in MATLAB.
- Indexing
This is a number and should be posittive integers greater than 0. If number is negative or fracation, it will throw error.
A = rand(1,10) ;
A(1) % first element
A(end) % last element
A(1:5) % elements from 1 to 5
A(-) % error
A(0) % error
2. Logical indexing
Here indices are 0 and 1's. This would be class of logical.
A = rand(1,10) ;
idx = A>0.5 ; % get elements greater than 0.5. 0 where conditon fails and 1 where condition mets.
A(idx) % this will pick the elements at the above condition satisfies
4 件のコメント
KSSV
2020 年 11 月 16 日
a = [1 0 1 1 0 1 0 0 0 1 1 0 0 1 1 1 1 1 0 0 1] ;
b = a(1)|a(2) ;
for i = 3:length(a)
b = b|a(i) ;
end
参考
カテゴリ
Help Center および File Exchange で Loops and Conditional Statements についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!