필터 지우기
필터 지우기

Limiting range of a matrix

조회 수: 35 (최근 30일)
Kamil Kacer
Kamil Kacer 2022년 12월 26일
댓글: DGM 2022년 12월 26일
I have matrix A = [1 2 3 4 5 6 7 8];
I try to limit the matrix to numbers greater than 3 and less than 6 how do I do it ?
I use this line but it assigns numbers less then 3 to 3 and numbers greater then six to six. Instead i want to eliminate those numbers in matrix which dont belong in this range.
max(min(A,3),6)

채택된 답변

Karim
Karim 2022년 12월 26일
편집: Karim 2022년 12월 26일
You can use logical indexing to obtain such a result, see below for a demonstration
A = [1 2 3 4 5 6 7 8];
% define the limits
maxValue = 6;
minValue = 3;
% use logic to find the indexes
idx = A >= maxValue | A <= minValue;
% set the values we don't want to zero
A(idx) = 0
A = 1×8
0 0 0 4 5 0 0 0
it is off course also possible to do this in a single line:
A = [1 2 3 4 5 6 7 8];
A(A>=6 | A<=3) = 0
A = 1×8
0 0 0 4 5 0 0 0
  댓글 수: 7
Voss
Voss 2022년 12월 26일
편집: Voss 2022년 12월 26일
cl{m} = c{m}(c{m}>=0.5 | c{m} <= 0.05) ==0;
That's not assigning elements of c{m} to 0; it's comparing certain elements of c{m} to 0, then storing the result (of class logical, i.e., true/false) in cl{m}.
That's a very different operation than what you asked about and got answers for.
DGM
DGM 2022년 12월 26일
Note that zero is also an out-of-range value, so filling the elements with zero doesn't solve the problem of limiting the range of the array.
When someone asks "I want to arbitrarily remove elements from an array" one has to ask what "remove" means, because it's not obvious. You can't just remove any element from an array and retain the shape of the array. If you want to fill the missing elements with some value, the value that you use depends entirely on your needs and the class of the array. So what exactly are your expectations?

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

추가 답변 (1개)

Torsten
Torsten 2022년 12월 26일
A = [1 2 3 4 5 6 7 8];
A(A<3) = 3;
A(A>6) = 6;
A
A = 1×8
3 3 3 4 5 6 6 6

카테고리

Help CenterFile Exchange에서 Matrix Indexing에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by