MATLAB에서 행렬은 배열을 의미하며 넓은 의미로 벡터도 행렬로 간주한다.
2.1 행렬의 생성
# 행 구분자: 세미콜론 (;)
# 열 구분자: 빈 칸, 컴마(,)
# 콜론(:)을 이용한 벡터의 생성
# 다양한 함수를 이용한 행렬 생성
① 파스칼 행렬
② rand() = 균일하게 분포된 난수 생성 함수
rand(a) |
0~1 사이의 난수로 구성된 행렬 | |
![]() |
||
rand(a,b) |
지정된 구간 내의 난수로 구성된 행렬 | |
일반적으로 구간 (a,b)에 N개의 난수를 생성할 때 식 r = a + (b-a)*rand(N,1)을 사용 ex1. (-5,5) 구간에 균일하게 분포된 난수로 구성된 10x1 열 벡터를 생성해보자 ![]() ex2. (-5,10) 구간에 균일하게 분포된 난수로 구성된 2x4 벡터를 생성해보자 ![]() |
||
randi() |
정수형 난수 | |
ex. 10 ~ 50 사이에 균일하게 분포된 5개의 정수형 난수를 생성해보자![]() rand(10,2,3)에서 10은 범위 0~10를 의미 |
||
rand(size(A)) |
A 배열과 동일한 크기의 배열 X 만들기 | |
![]() |
||
rand(__, typename) |
난수의 데이터 타입 지정 | |
![]() |
③ randn() -- ???
④ linspace()
# 원소값 대입에 의한 행렬의 생성
2.2 행렬의 원소 참조
# 행렬의 원소
: MATLAB은 열 우선임
# 행렬의 부분 참조
2.3 행렬의 정보
# 행렬의 정보? -- 행렬의 크기, 길이, 원소 개수, 차원
size, length, numel, ndims
# 행렬의 자료 구조
- isscalar(A) : A가 스칼라?
- isvector(A): A가 벡터?
- ismatrix(A): A가 행렬?
- isrow(A): A가 행벡터?
- iscolumn(A): A가 열벡터?
2.4 행렬의 변형
# 행렬의 벡터화
열 벡터 A(:), 행 벡터 A(:)'
# 벡터, 행렬의 행렬화
- reshape()
# 행렬의 회전과 대칭화
- rot90(A), fliplr(A), flipud(A)
# 행렬의 치환
- find()
# 벡터의 정렬
1. sort()
① sort( ___, ascend/descend )
② sort(A, 'ComparisonMethod', ____)
[ ComparisonMethod - 요소 비교 방법 ]
i) auto: A가 실수이면 real(A)를 기준으로 정렬함. A가 복소수이면 abs(A)를 기준으로 정렬함
ii) real: A가 실수이거나 복소수인 경우 real(A)를 기준으로 A를 정렬함. A에 실수부가 동일한 요소가 있으면 imag(A)를 사용해 우선순위 결정
% real(A)는 A의 실수부를 반환함
% imag()는 복소수의 허수부를 반환
iii) abs: A가 실수이거나 복소수인 경우 abs(A)를 기준으로 A를 정렬함. A에 크기가 동일한 요소가 있으면 angle(A)를 사용하여 우선순위 결정
% abs(A)는 A가 실수일 때 절대값을 반환, 복소수일 때 복소수 크기를 반환
% angle(A)은 A의 위상각을 반환
③ [A,I] = sort(x)
x를 정렬한 결과: A
I는 x에 대응하는 인덱스
2. sortrows()
① sortrows(A)
: 1열 기준으로 행 전체를 오름차순 정렬. 한 열에 동일한 요소 있으면 다음 열 보고 정렬
② sortrows(A,2)
: 2열 기준으로 행 전체를 오름차순 정렬. 2열에 동일한 요소 있으면 원래 순서대로 ..
③ sortrows(A,[1 7])
: 1열 기준으로 행 전체를 오름차순 정렬. 1열에 동일한 요소 있으면 7열을 기준으로 우선순위를 정한다.
2.5 행렬의 행과 열 삭제
# 행과 열의 삭제
2.6 행렬의 함수
1. 역행렬 - inv()
: 어떤 행렬 A와 곱했을 때 단위행렬이 나오게 하는 행렬
2. 행렬값(determinant) - det()
3. 고유값과 고유 벡터 - eig() ??
4. 유용한 행렬 함수
size(), length(), sum(), prod(), mean(), max()
2.7 행렬의 연산
1. 덧셈과 뺄셈
① 행렬 + 행렬
- 행렬의 크기가 같아야 한다
② 행렬 + 스칼라
- 행렬의 각 원소에 스칼라만큼 덧셈/뺄셈
2. 행렬의 곱셈
① 행렬 x 행렬
② 행렬의 각 원소 x 행렬의 각 원소
- 행렬의 크기가 같아야 한다
③ 행렬 x 스칼라
3. 행렬의 나눗셈
① 행렬 / 행렬
- 행렬 B의 역 행렬이 존재하고 크기가 같아야 한다
② 행렬의 각 원소 / 행렬의 각 원소
- 행렬의 크기가 같아야 한다
4. 행렬의 좌나눗셈
① 행렬의 좌나눗셈
②***** 좌나눗셈을 이용한 선형 연립방정식 풀기
5. 행렬의 n승
① 행렬의 제곱
- 정방행렬이어야 한다
② 행렬의 각 원소를 제곱
6. 전치행렬
① 실수 행렬의 전치행렬
② 복소 행렬의 전치행렬
2.8 문자열
1. 문자열의 생성 '___'
- 문자열은 원소가 문자인 벡터/행렬이다. 즉, 문자열의 각 문자는 행렬의 원소에 해당한다.
2. 문자열 연결
- 문자열의 연결은 행렬의 연결과 같다.
- 문자열을 이용하여 행렬을 만들 때 각 행은 크기가 같아야 한다.
3. 서로 다른 크기의 문자열로 행렬을 만드는 방법
-> 문자열 연결 함수를 이용
① strvcat() : 문자열을 세로로 결합하는 함수

4. 문자열 비교 함수
① strcmp() / strncmp() : 문자열 비교
② findstr()
③ strrep()
5. 문자열 비교 함수
① num2str() : 숫자를 문자형 배열로 변환하기
② str2num() : 문자형 배열 또는 string형을 숫자형 배열로 변환하기
③ disp() 변수 이름 출력하지 않고 변수 값을 표시
④ mat2str(): 벡터/행렬을 문자열로 변환
2.9 셀형(cell) 배열
# 셀형 배열
- 각 셀은 서로 다른 데이터형을 포함할 수 있다.
- 셀형 배열은 주로 텍스트 목록, 텍스트+숫자, 각기 크기가 다른 숫자형 배열 중 하나를 포함
- {} 을 사용하여 빈 0x0 셀형 배열 생성 가능
# 셀형 배열의 데이터에 접근하는 방법
# cell2mat() : 셀형 배열을 일반 행렬로 변환
# 셀형 배열의 데이터 접근
{ } : 중괄호로 접근
# 셀형 배열에 데이터 넣기
2.10 구조체형(struct) 배열
- 필드라는 데이터 컨테이너를 사용하여 관련 데이터를 그룹화하는 데이터형.
- 각 필드에는 모든 데이터형이 포함될 수 있다
- 필드의 데이터에 접근하려면 structName.fieldName 형식의 점을 사용
% C와 비슷
# 구조체형 배열의 생성
- struct 함수
① s = struct % 필드가 없는 스칼라(1x1) 구조체를 생성
② s = struct( [ ] ) % 필드가 없는 빈(0x0) 구조체를 생성
③ s = struct('필드1', '값1', '필드2', '값2', ... '필드n', '값n') % 주어진 필드와 값을 갖는 구조체를 생성
# 구조체 배열의 데이터에 접근하기
ex. s4의 num 출력해보자
2.11 관계 연산자
# 스칼라 - 스칼라 비교
# 복소수 - 복소수 비교
: 복소수의 대소비교는 실수부만 비교한다
# 스칼라와 벡터(행렬)의 비교
# 벡터(행렬)와 벡터(행렬)의 비교
2.12 논리 연산자
# 변수의 논리 연산
# 벡터(행렬) 변수의 논리 연산
- any(a): 행렬 a에 0이 아닌 요소가 하나라도 있으면 참(1)
- all(a) : 행렬 a의 요소가 모두 0이면 참(1)
2.13 다항식
# 다항식 표기법
: 다항식을 내림차순으로 정리한 후 계수를 벡터로 나타낸다.
# 다항식의 값
① y = polyval(p,x)
: x의 각 점에서 다항식 p를 계산한다
# 다항식의 곱셈과 나눗셈
② conv(u,v) : 곱셈
: u와 v가 다항식 계수의 벡터인 경우 컨벌루션은 두 다항식의 곱과 같음
③ deconv(u,v) : 나눗셈
: u와 v가 다항식 계수의 벡터인 경우 컨벌루션은 두 다항식의 나눗셈과 같음
# 다항식의 근
④ roots(p)
: p로 표시되는 다항식의 근을 열벡터로 반환
⑤ poly(A)
: 특성다항식의 근을 반환(?)
# 다항식의 미분
① polyder(f): f(x)를 미분
② polyder(f,g): f(x)*g(x)를 미분
③ [q,d] = polyder(f,g) : f(x)/g(x)를 미분. q는 분자 다항식, d는 분모 다항식
# 다항식의 적분
'ICIS 학부 연구생 > MATLAB 기초' 카테고리의 다른 글
[ MATLAB ] 2장 연습문제 (0) | 2023.07.04 |
---|---|
가우시안 백색 잡음 (0) | 2023.07.04 |
1장. MATLAB (0) | 2023.07.03 |