일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 확률
- 프로그래밍 언어
- Inkscape
- 글이_점점_짧아지고_있습니다.
- Nemeth Braille
- matlab
- 자바스크립트
- 점자
- Java
- IT
- html5
- 리브레위키
- 프로그래밍
- python
- C
- LaTeX
- 물리학
- 나무위키
- html
- css3
- C언어
- 수학
- HTML5.
- 선형대수학
- 위키
- javascript
- C++
- ┌─┐
- CSS
- 오늘의 문제
- Today
- Total
SturdyCobble's Study Note
[MATLAB] 10. 기초 연산 & 특수문자 본문
NOTICE : 독학인 만큼, 잘못된 내용이 있을 수 있습니다. 내용 지적은 언제나 환영합니다.
더 이상 이 블로그에는 글을 올리지는 않을 예정입니다. 그렇지만 댓글을 달아주시면 최대한 답변드리고자 노력하겠습니다.
※ 이 글은 최소한 Python과 같은 프로그래밍 언어를 한 번 이상 접한 사람을 독자로 가정하여 작성되었습니다. 사용버전은 R2019a기준입니다. 또한 기본적인 프로그램 조작보다는 프로그래밍에 초점을 맞추어 작성하였습니다.
이번 글은 다음 글들을 바탕으로 작성되었습니다. 이번 글에선 이미 다룬 연산을 제외하고 기초적인 연산을 진행하는 연산자, 함수에 대해 다루고 그 외 유용한 특수 문자들을 다룹니다.
https://kr.mathworks.com/help/matlab/matlab_prog/matlab-operators-and-special-characters.html
https://kr.mathworks.com/help/matlab/operators-and-elementary-operations.html
1. 산술 연산
https://kr.mathworks.com/help/matlab/arithmetic-operators.html
사실 산술 연산에 속한 많은 함수들이 연산자와 대응됩니다. 예를 들면, mpower는 ^에, times는 .*에 대응되는 것처럼 말이죠. 그렇지 않은 함수 중에 자주 쓰이는 함수만을 골라보면 다음과 같습니다.
함수 | 설명 | 예시 ( A = [1 2 3 ; 4 5 6 ; 7 8 9]; ) |
prod |
각 열마다의 수를 모두 곱함. 두번째 인자로 곱할 차원(dimension)이나 방향(direction) 지정 가능 |
>> prod(A) |
sum |
각 열마다의 수를 모두 더함. 두번째 인자로 더할 차원(dimension)이나 방향(direction) 지정 가능 |
>> sum(A) |
cumprod |
각 열마다의 수를 누적하여 곱함. 두번째 인자로 곱할 차원(dimension)이나 방향(direction) 지정 가능 |
>> cumprod(A) |
cumsum |
각 열마다의 수를 누적하여 더함. 두번째 인자로 더할 차원(dimension)이나 방향(direction) 지정 가능 |
>> cumsum(A) ans = 1 2 3 5 7 9 12 15 18 |
movsum |
Frame을 옮겨가며 내부의 수를 모두 더함. 프레임의 사이즈는 인자 여러개로 전달하거나 행벡터로 전달. 프레임의 중앙은 홀수 개일때 중심에, 짝수 개일때 중앙 2개 중 인덱스가 낮은쪽을 기준으로. |
>> movsum(A,2,2) ans = 1 3 5 4 9 11 7 15 17 |
ceil |
올림. 두번째 인자로 소수점 자리수 지정 가능. |
B = [ 0.12 0.35 0.75 0.678 -0.4 -0.67 ]; >> round(B,1) ans = 0.1000 0.4000 0.8000 0.7000 -0.4000 -0.7000 >> round(B) ans = 0 0 1 1 0 -1 >> fix(B) ans = 0 0 0 0 0 0 |
floor |
내림. 두번째 인자로 소수점 자리수 지정 가능. |
|
round |
반올림. 두번째 인자로 소수점 자리수 지정 가능. |
|
fix |
0의 방향으로 반올림. |
2. 논리 연산
https://kr.mathworks.com/help/matlab/logical-operations.html
제어문 글에서 다루었으므로 제외합니다.
3. 집합 연산
https://kr.mathworks.com/help/matlab/set-operations.html
기본적으로 다음과 같은 함수들이 있습니다.
함수 | 설명 |
union(A, B) | |
setxor(A, B) | |
setdiff(A, B) | |
intersect(A, B) |
그외 다음과 같은 함수들이 대표적입니다.
함수 | 설명 | 예시 ( A = [1 2 3 ; 4 5 6 ; 7 8 9]; ) |
ismember(A, B) | A에 B가 있는지 논리 행렬로 반환. | >> ismember(A,[2 4]) ans = 3×3 logical 배열 0 1 0 1 0 0 0 0 0 |
ismembertol(A, B, tol) | 오차 범위(tol*max(abs([A(:);B(:)])) 내에서 ismember 함수 실행 | >> ismembertol(A,[2 3],0.5) ans = 3×3 logical 배열 1 1 1 1 1 1 1 0 0 |
C = unique(A) | 중복 멤버 제거 | >> uniquetol(A,0.2) ans = 1 3 5 7 9 |
C = uniquetol(A,tol) | 중복 멤버를 허용 오차(tol*max(abs(A)) 내에서 제거 | |
sort(A) | 정렬 | |
issorted(A) | 정렬 여부 |
한편, 가끔씩 테이블 형을 사용할 때가 있습니다. 이 테이블은 다음과 같이 생성합니다. ('VariableName'다음에 오는 행렬의 내용이 변수 명이 되므로 변수명 작명 규칙을 따라야 함에 유의하세요!)
>> table([0.1;0.2;0.3;0.4;0.5],[1.6;2.4;3.6;4.2;5.4],...
'VariableNames',{'time' 'var1'})
ans =
5×2 table
time var1
____ ____
0.1 1.6
0.2 2.4
0.3 3.6
0.4 4.2
0.5 5.4
>> A = table([156;184;165;174;178],[56;65;66;72;75],...
'VariableNames',{'height' 'weight'}, ...
'RowNames', {'James', 'Peter', 'Mike', 'Lewis', 'Lang'})
A =
5×2 table
height weight
______ ______
James 156 56
Peter 184 65
Mike 165 66
Lewis 174 72
Lang 178 75
>> A.height
ans =
156
184
165
174
178
이러한 테이블을 결합하는 함수들도 존재합니다.
함수 | 설명 |
join(A,B) | 테이블을 공통된 key를 기준으로 병합. (열이 서로 뒤바뀌어 있어도 상관없음) |
innerjoin(A,B) | 테이블을 공통된 key를 기준으로 내부 결합(키 값이 일치하는 것만). (열이 서로 뒤바뀌어 있어도 상관없음) |
outerjoin(A,B) | 테이블을 공통된 key를 기준으로 외부 결합(키 값이 달라도 포함). (열이 서로 뒤바뀌어 있어도 상관없음) |
예시를 들어보겠습니다.
>> A = [1 13 32;2 13 23;3 12 42]
A =
1 13 32
2 13 23
3 12 42
>> B = table(A(:,1),A(:,2),A(:,3),'VariableNames',{'Time','Var1','Var2'})
B =
3×3 table
Time Var1 Var2
____ ____ ____
1 13 32
2 13 23
3 12 42
>> C = table([43;23;43],[1;2;3],'VariableNames',{'Var3','Time'})
C =
3×2 table
Var3 Time
____ ____
43 1
23 2
43 3
>> join(B,C)
ans =
3×4 table
Time Var1 Var2 Var3
____ ____ ____ ____
1 13 32 43
2 13 23 23
3 12 42 43
>> C = table([43;23;43;67],[1;2;3;4],'VariableNames',{'Var3','Time'})
C =
4×2 table
Var3 Time
____ ____
43 1
23 2
43 3
67 4
>> innerjoin(B,C)
ans =
3×4 table
Time Var1 Var2 Var3
____ ____ ____ ____
1 13 32 43
2 13 23 23
3 12 42 43
>> outerjoin(B,C)
ans =
4×5 table
Time_B Var1 Var2 Var3 Time_C
______ ____ ____ ____ ______
1 13 32 43 1
2 13 23 23 2
3 12 42 43 3
NaN NaN NaN 67 4
3. 비트 연산
https://kr.mathworks.com/help/matlab/bit-wise-operations.html
C언어 등과는 다르게 비트 연산에 대한 연산자가 따로 있는 것 같진 않습니다.
함수 | 설명 |
bitand(A,B) | 비트별 AND |
bitor(A,B) | 비트별 OR |
bitcmp(A) | 비트별 보수(1의 보수) |
bitxor | 비트별 XOR |
bitshift(A,k) | 비트 이동(k만큼 왼쪽으로) |
bitget(A,k) | 비트 가져오기(k번째) |
bitset(A,k) | 비트 설정 |
그 외 자주 사용되는 특수 문자들은 다음과 같습니다.
https://kr.mathworks.com/help/matlab/matlab_prog/matlab-operators-and-special-characters.html
연산자 우선순위는 아래를 참고하시면 됩니다.
https://kr.mathworks.com/help/matlab/matlab_prog/operator-precedence.html
'프로그래밍 > MATLAB' 카테고리의 다른 글
LDU Decomposition By MATLAB (0) | 2019.10.06 |
---|---|
MATLAB으로 (Reduced) Row Echelon Form 구하기 (0) | 2019.09.04 |
[MATLAB] 09. 데이터 처리와 파일 입출력 (0) | 2019.09.02 |
[MATLAB] 08. 함수 (0) | 2019.09.01 |
MATLAB으로 벡터장 표시하기 (0) | 2019.08.30 |