어떤 행렬(matrix)에 특정한 열 벡터(column vector) 또는 행 벡터(row vector)가 있는지 확인하는 방법이다. 관련해서 MATLAB 함수가 있는 줄 알았는데, 딱히 없는 것 같아서 정리해봤다. for 문을 써서 행렬의 행이나 열을 직접 인덱싱(indexing)해서 확인할 수도 있지만, 행렬의 크기가 매우 크거나 이런 작업을 반복적으로 수행해야 할 경우, 비효율적이므로 해당 방법을 추천한다.
사용 예시: 어떤 dataset을 m x n 행렬로 표현할 때, data 개수(sample 수) x data의 차원(dimension) 형태로 저장하는 경우가 있다. 이 때 해당 dataset을 나타내는 행렬 내에 어떤 data(1 x n vector)가 있는지를 확인할 필요가 있을 수 있다.
1. 특정 열 벡터 존재 여부 확인
min(sum(abs(A-b))): 행렬 A가 열 벡터 b를 포함하면 0, 아니면 양수
ex:
2. 특정 행 벡터 존재 여부 확인
min(sum(abs(A-b), 2)): 행렬 A가 행 벡터 b를 포함하면 0, 아니면 양수
ex:
3. 설명
행렬 A가 행/열 벡터 b를 포함하는 경우 abs(A-b)를 했을 때에 모든 행 또는 열이 0인 구간이 존재한다. 그러므로 행/열끼리 더한 경우 0이 존재할 것이고, 'A-b'의 절댓값을 취했기 때문에 0이 아니면 모두 양수가 됐을 것이다. 그러므로 더한 값에 min을 취하면 0이 존재하게 된다. 만약 min을 취한 값이 0이 아니라면 모든 행 또는 열이 0인 구간이 존재하지 않는다는 뜻이고, 이는 행렬 A가 행/열 벡터 b를 포함하지 않는다는 의미가 된다.
'MATLAB' 카테고리의 다른 글
MATLAB lognstat을 이용한 로그정규분포의 평균과 분산 변환 (0) | 2022.03.01 |
---|---|
.mat 파일 저장 및 불러오기 (0) | 2021.05.04 |
MATLAB 셀(cell) 배열 정의 및 호출하기, 관련 함수 정리 (0) | 2021.03.09 |
polyfit, polyval 함수로 다항곡선 회귀분석하기(Polynomial Curve Fitting) (0) | 2021.02.07 |
MATLAB의 particleswarm 함수로 최적화 문제 풀기(Particle Swarm Optimization) (0) | 2021.01.23 |