# Efficient way/best practice to slice array under a logical condition as well as other conditions

2 ビュー (過去 30 日間)
Taro 2020 年 10 月 4 日

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 日
Don't split the hair, it doesn't really matter.
Just do the way te code looks most readable to you.

サインインしてコメントする。

### 回答 (1 件)

madhan ravi 2020 年 10 月 4 日
What you have is more efficient.

サインインしてコメントする。

R2018b

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by