how to get a new array with some values ​​from an old array

조회 수: 31 (최근 30일)
Santo Lino
Santo Lino 2022년 11월 26일
댓글: Voss 2022년 11월 27일
Hi, I'm a matlab beginner, I have a little problem with creating a new matrix. I have a matrix "A" of dimensions (1840x44), I am attaching a photo of a part of it.
I need to get a matrix "B" that has the values ​​of matrix "A" that are greater than 20. I tried doing B = (A>=20), but it only returns the positions (I need the value). Many thanks to whoever can help me with this little problem.

채택된 답변

Voss
Voss 2022년 11월 26일
B = (A >= 20) % same as B = A >= 20, i.e., without parentheses
makes B a matrix of logicals, the same size as A; the elements of B where A is greater than or equal to 20 are true; other elements of B are false.
To get the values of A that are >= 20, you can say:
B = A(A >= 20)
but it won't be a matrix, it will be a column vector. The elements of B will be in the same (column-major) order as they are in A.
Example:
A = [1 3.2 5.4]+[0;1;2;3]
A = 4×3
1.0000 3.2000 5.4000 2.0000 4.2000 6.4000 3.0000 5.2000 7.4000 4.0000 6.2000 8.4000
B = A(A >= 4)
B = 8×1
4.0000 4.2000 5.2000 6.2000 5.4000 6.4000 7.4000 8.4000
Alternatively, if you want B to be a matrix the same size as A, containing the elements of A that are >= 20 located at the same locations where they are in A and say zeros or NaNs everywhere else, you can do something like this:
B = NaN(size(A)); % or B = zeros(size(A)); % for instance
idx = A >= 4;
B(idx) = A(idx)
B = 4×3
NaN NaN 5.4000 NaN 4.2000 6.4000 NaN 5.2000 7.4000 4.0000 6.2000 8.4000
  댓글 수: 2
Santo Lino
Santo Lino 2022년 11월 27일
thank you very much for helping :)
Voss
Voss 2022년 11월 27일
You're welcome!

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by