Efficient way/best practice to slice array under a logical condition as well as other conditions
12 ビュー (過去 30 日間)
古いコメントを表示
I did not know how to properly title this question, so please bear with me.
Simply put, with the following two arrays:
A = [0 1 0 1 0 0 0 1]'
B = [800 1 1 60;
900 3 0 30;
900 4 0 30;
900 6 0 30;
900 7 0 30;
900 11 0 30;
900 1 2 60;
1000 1 2 60;
]
Note that A and B have the same number of columns.
I would like, for example, to slice B under the following constraints:
- A == 1
- B(:,3) ~= 0
- Keep only columns [2 3 4] of B
This is the way I am doing it at the moment:
B_sliced = B(A==1 & B(:,3)~=0,[2 3 4]);
Alternatively, one could do:
B_sliced = B(logical(A) & B(:,3)~=0,[2 3 4]);
With tic toc and large matrices, I am not noticing much of a difference in performance.
Is there a best practice regarding combining logical with non-logical conditions? Should I keep something in mind, or it doesn't really matter which way I go? Is there a way to make any of these more efficient by using "find"?
I hope you can enlighten me a bit! Thanks.
1 件のコメント
Bruno Luong
2020 年 10 月 4 日
編集済み: Bruno Luong
2020 年 10 月 4 日
Don't split the hair, it doesn't really matter.
Just do the way te code looks most readable to you.
回答 (1 件)
参考
カテゴリ
Help Center および File Exchange で Logical についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!