반응형
#매트랩
v = [-1 2 3 -4 5 -6 -7 -8 9 10 -11 12 -13 14 -15 16 -17 18 19 20]
이라는 배열에서 양수 요소만 추출하는 방법은 일반적인 프로그래밍 언어에서 반복문과 조건문으로 수행된다
v = [-1 2 3 -4 5 -6 -7 -8 9 10 -11 12 -13 14 -15 16 -17 18 19 20];
w = [];
j = 0;
for i = 1:length(v)
if v(i) > 0
j = j+1;
w(j) = v(i);
i = i+1;
end
end
매트랩에서는 논리 인덱싱이라는 기능을 사용해 더욱 간단하게 코드를 작성할 수 있다.
v = [-1 2 3 -4 5 -6 -7 -8 9 10 -11 12 -13 14 -15 16 -17 18 19 20];
w = [];
w = v(v>0);
논리 인덱싱이란 논리값으로 이루어진 배열을 사용한 인덱싱을 말한다
문자나 배열에 조건을 입력하면 논리값으로 이루어진 배열이 반환된다
앞서 살펴본 예제에서 사용된 v>0은 다음과 같은 결과를 출력한다.
이것을 인덱스에 넣게 되면 1인 자리의 인덱스만 입력된다. 즉
2 3 5 9 10 12 14 16 18 19 20 의 인덱스만 추출된다는 것
논리 인덱싱은 다시말해 인덱스 자리에 조건을 입력해 참이 되도록 하는 인덱스를 불러오는 기능이다
이때 logical 배열에서 0인 요소는 포함이 되지 않고 참인 것들만 포함된다
응용1
만약 행렬에 대해 논리 인덱싱을 사용하는 경우
logical 행렬이 출력된다
하지만 이를 인덱스로 활용하게 되면 열벡터가 출력된다
매트랩에서는 인덱스를 1열1행 = 1, 1열 2행 = 2, 1열 3행 = 3, 2열 1행 = 4 와 같은 방식으로도 구성하기 때문이다
예를들어 위 행렬에 대해 a(4)를 입력하면 2열 1행의 요소가 출력된다
응용2
다른 변수를 선언하지 않고 바로 조건에 해당하는 값을 업데이트 할 수 있다
두 행렬의 크기를 비교해 큰 값만 가지도록 행렬 A 업데이트하기
반응형
'개발 > 매트랩' 카테고리의 다른 글
[매트랩] anovan, fitlm, response surface (1) | 2023.12.10 |
---|---|
[매트랩] diag 함수로 주대각 원소 추출하기, 대각행렬 생성하기 (0) | 2022.12.30 |
[매트랩] meshgrid 로 모든 원소의 곱셈 수행하기 (0) | 2022.12.28 |
[매트랩] 콜론 연산자(:)와 end 이용해서 행렬에서 특정 행, 열 뽑아내기 (0) | 2022.12.27 |
[매트랩] 행렬을 열벡터로 변환, 난수 생성 (0) | 2022.12.26 |