You are on page 1of 38

2023

AI프로그래밍

Ch.2 ) MATLAB 기초 -2-

박지훈
부산대학교 항공우주공학과
vazihoon@pusan.ac.kr

부산대학교 항공우주공학과 -1- DEPARTMENT OF AEROSPACE ENGINEERING.


2023
AI프로그래밍

 오늘의 학습 목표

 코딩의 최소 준비 :

m-file 생성법 및 기본 표현법 깨우치기

 '배열'의 이해

 배열의 '생성' 및 '인덱싱'

부산대학교 항공우주공학과 -2- DEPARTMENT OF AEROSPACE ENGINEERING.


2023
REVIEW AI프로그래밍

 MATLAB 활용 : command window 사용해보기


 변수 선언

 변수명에는 영문자, 숫자, 밑줄 사용 가능함

 영문자의 대,소문자는 별개의 변수로 취급

 주의 사항

 단 맨 앞은 무조건 영문자가 와야 함

 일부 표현은 내장변수로 사용 중임 → 선언 시 덮어쓸 수는 있음…

그래서 보통 MATLAB에서는
m,n,…을 사용함

부산대학교 항공우주공학과 -3- DEPARTMENT OF AEROSPACE ENGINEERING.


2023
REVIEW AI프로그래밍

 MATLAB 활용 : command window 사용해보기


 내장 변수 관련 이슈

 예) sqrt

부산대학교 항공우주공학과 -4- DEPARTMENT OF AEROSPACE ENGINEERING.


2023
REVIEW AI프로그래밍

 MATLAB 활용 : command window 사용해보기


 MATLAB 기본 연산자

부산대학교 항공우주공학과 -5- DEPARTMENT OF AEROSPACE ENGINEERING.


2023
REVIEW AI프로그래밍

 MATLAB 활용 : command window 사용해보기


 여태껏 살면서 배워온 수학문제를 MATLAB으로 해결

① 사칙연산
a1 = 12345, b1 = 98765, c1 = 77 ← 변수 선언한 거 workspace에 떠있는지 보면서
→ a1 + b1 x c1 =?

② 지수, 근호
a = 3, b = -2, c = -4

𝑏+ 𝑏2 −4𝑎𝑐
→ −
2𝑎

부산대학교 항공우주공학과 -6- DEPARTMENT OF AEROSPACE ENGINEERING.


2023
REVIEW AI프로그래밍

 MATLAB 활용 : command window 사용해보기


 여태껏 살면서 배워온 수학문제를 MATLAB으로 해결

③ 로그함수
**주의**
a3 = 1000
MATLAB에서는 log가 상용로그가 아니라 자연로그임…
→ log a = ? 상용로그를 쓰고 싶으면 log10(a)를 입력하자.

𝑒 (자연상수)
a4 = 100
→ a4 * 𝑒=?

부산대학교 항공우주공학과 -7- DEPARTMENT OF AEROSPACE ENGINEERING.


2023
REVIEW AI프로그래밍

 MATLAB 활용 : command window 사용해보기


 여태껏 살면서 배워온 수학문제를 MATLAB으로 해결

④ 삼각함수
**주의**
a5 = 90
MATLAB에서는 삼각함수에 기본적으로 Radian을 사용함.
→ sin a5 = ?

radian과 degree의 변환법


- deg2rad(a) : degree to radian
- rad2deg(a) : radian to degree

부산대학교 항공우주공학과 -8- DEPARTMENT OF AEROSPACE ENGINEERING.


2023
REVIEW AI프로그래밍

 MATLAB 활용 : command window 사용해보기


 여태껏 살면서 배워온 수학문제를 MATLAB으로 해결

④ 삼각함수
a = 90
→ sin a = ?

사실 삼각함수 뒤에 d 붙이면 됨

부산대학교 항공우주공학과 -9- DEPARTMENT OF AEROSPACE ENGINEERING.


2023
REVIEW AI프로그래밍

 MATLAB 활용 : command window 사용해보기


 여태껏 살면서 배워온 수학문제를 MATLAB으로 해결

⑤ 다차방정식
a = 3, b = -2, c = -4

𝑎𝑥 2 + 𝑏𝑥 + 𝑐 = 0

부산대학교 항공우주공학과 - 10 - DEPARTMENT OF AEROSPACE ENGINEERING.


2023
MATLAB 실습 AI프로그래밍

 MATLAB 활용 : 본격적 코딩(?)


 m-file 생성

 명령창에 한 줄씩 입력하는 원리는 동일

 이를 일괄적으로 처리하기 위한 스크립트를 작성하여 저장하는 것


→ 다음에 배울 함수와 스크립트는 차이가 있음

 홈 탭의 [새 스크립트] 클릭
함수

스크립트

부산대학교 항공우주공학과 - 11 - DEPARTMENT OF AEROSPACE ENGINEERING.


2023
MATLAB interface AI프로그래밍

 MATLAB interface : 편집기 탭


 새 파일을 생성하거나 저장한 파일을 불러올 때 사용

 어떤 형식이든 m-file(스크립트, 함수 등) 창을 열면 생성됨

단축키 : F5

부산대학교 항공우주공학과 - 12 - DEPARTMENT OF AEROSPACE ENGINEERING.


2023
MATLAB interface AI프로그래밍

 MATLAB interface : 보기 탭
 기능에 관계된 메뉴는 아니나, 코딩 시 편의성을 제공

메인 스크립트와 내부의 서브 스크립트를


한번에 보며 편집 가능

부산대학교 항공우주공학과 - 13 - DEPARTMENT OF AEROSPACE ENGINEERING.


2023
MATLAB interface AI프로그래밍

 MATLAB interface : 보기 탭
 기능에 관계된 메뉴는 아니나, 코딩 시 편의성을 제공

같은 구문을 병렬로 표시

코드가 길어지면 마우스 휠을


일일히 돌리는 것도 번거로움….

부산대학교 항공우주공학과 - 14 - DEPARTMENT OF AEROSPACE ENGINEERING.


2023
MATLAB 실습 AI프로그래밍

 MATLAB 활용 : 본격적 코딩(?)


 m-file 생성

 홈 탭의 [새 스크립트] 클릭

 현재 앉은 자리 PC의 원하는 곳에 실습결과물 저장할 폴더 생성

 매트랩 [현재 폴더 창]을 조작하여 저장 경로를 상기 폴더로 설정

여기!

부산대학교 항공우주공학과 - 15 - DEPARTMENT OF AEROSPACE ENGINEERING.


2023
MATLAB 실습 AI프로그래밍

 MATLAB 활용 : 본격적 코딩(?)


 m-file 작성 - 주석 처리

 개발한 코드의 타 이용자, 또는 미래의 자신(!!!)이 각 함수 및 변수의 기능을 이해할 수 있도록


기록해 두는 것

 주석처리는 코드 실행에 영향을 끼치지 않는다!!


그러나 매우 중요하면서도 필수적인 절차
특히 미래의 자신에게….

 %와 %%를 사용
- %는 단순 주석 처리
- %%는 스크립트의 구역을 분할

부산대학교 항공우주공학과 - 16 - DEPARTMENT OF AEROSPACE ENGINEERING.


2023
MATLAB 실습 AI프로그래밍

 MATLAB 활용 : 본격적 코딩(?)


 m-file 작성 - 세미콜론( ; ) 중요성

 C언어와 달리 문장 끝에 ;를 찍지 않아도 코드는 실행됨


;를 찍지 않으면 커맨드 창에 해당 변수가 모두 출력됨

 사이즈가 큰 (엑셀같은) 데이터를 변수로 지정 시 ;를 쓰지 않으면…..

부산대학교 항공우주공학과 - 17 - DEPARTMENT OF AEROSPACE ENGINEERING.


2023
MATLAB 실습 AI프로그래밍

 MATLAB 활용 : 본격적 코딩(?)


 앞에 했던 수학문제들 스크립트로 작성

 사칙연산 / 지수,근호 / 로그함수 / 자연상수 / 삼각함수 / 다차방정식 총 6개의 앞선 예제

 실행을 눌렀을 시 커맨드 창에 각 문제의 답 6개만 출력되어야 함


→ 출력되는 변수명 : Ans_1, Ans_2, Ans_3, … , Ans_6

 나머지 내부 변수명은 편하신 대로 작성(식 바로 입력하지 말것)

 각 문제는 주석 기능을 이용하여 구역을 나눌 것

 스크립트 내 "해"에 해당하는 변수 우측에 주석으로 표시할 것

 파일명
AI_ch1_학번_이름.m

부산대학교 항공우주공학과 - 18 - DEPARTMENT OF AEROSPACE ENGINEERING.


2023
배열 AI프로그래밍

 배열이란?
 배열(array)은 특정 패턴을 따르는 숫자 또는 객체의 집합

 행렬(matrix) : 직사각형 모양의 숫자의 배열, M*N 크기

 벡터(vector) : N * 1차원의 행렬을 의미

 순열 등도 배열의 종류

부산대학교 항공우주공학과 - 19 - DEPARTMENT OF AEROSPACE ENGINEERING.


2023
배열 AI프로그래밍

 왜 우리가 배열을 배우는가?


 우선 행렬과 표의 차이는?

 행렬(matrix)은 다량의 데이터에 대한 계산을 편리하게 하기 위함.

 표(table) 는 여러가지 데이터를 효과적으로 시각화하기 위함.

 그러나 용도의 차이일 뿐, MATLAB에서 같은 원리로 다룬다.

▲ 연립방정식을 풀기 위한 행렬 표현 ▲ 데이터를 보기 좋게 하기 위한 표의 활용

부산대학교 항공우주공학과 - 20 - DEPARTMENT OF AEROSPACE ENGINEERING.


2023
배열 AI프로그래밍

 왜 우리가 배열을 배우는가?


 간단한 실습

 𝑥1 = 0°, 𝑥2 = 30°, 𝑥3 = 60°, 𝑥4 = 90°, 𝑥5 = 120°, 𝑥6 = 150°, 𝑥7 = 180° 일 때

 각 경우에 대하여
y = 2𝑥 𝑐𝑜𝑠(𝑥)

 m-file로 작성해볼 것
파일명
AI_ch2_학번_이름.m

부산대학교 항공우주공학과 - 21 - DEPARTMENT OF AEROSPACE ENGINEERING.


2023
배열 AI프로그래밍

 왜 우리가 배열을 배우는가?


 배열을 쓰면 좀더 간단히 표현이 가능함

부산대학교 항공우주공학과 - 22 - DEPARTMENT OF AEROSPACE ENGINEERING.


2023
배열 생성 및 조작 AI프로그래밍

 MATLAB에서 배열의 생성 : 1차원(벡터)


 대괄호를 사용해 선언 → [ ]

 기본적으로 가로방향 1차원 배열(벡터)의 생성은

부산대학교 항공우주공학과 - 23 - DEPARTMENT OF AEROSPACE ENGINEERING.


2023
배열 생성 및 조작 AI프로그래밍

 MATLAB에서 배열의 생성 : 1차원(벡터)


 대괄호를 사용해 선언 → [ ]

 세로방향 1차원 배열(벡터)의 생성은 세미콜론( ; )을 사용함


→ 괄호 안과 밖의 세미콜론 용도 차이에 주의하자

부산대학교 항공우주공학과 - 24 - DEPARTMENT OF AEROSPACE ENGINEERING.


2023
배열 생성 및 조작 AI프로그래밍

 MATLAB에서 배열의 생성 : 1차원(벡터)


 벡터,행렬의 전치(transepose)

 세로방향 1차원 배열을 만들 때 ; 를 일일히 적기엔 번거로음

 전치 기능을 쓰면 좀 편하게 작업 가능

 전치란 행과 열을 뒤집는 것 (뒤에 다시 설명)

 MATLAB에서는 작은따옴표 ' 를 사용

▲ m*1의 벡터를 1*m으로 뒤집음(전치)

부산대학교 항공우주공학과 - 25 - DEPARTMENT OF AEROSPACE ENGINEERING.


2023
배열 생성 및 조작 AI프로그래밍

 MATLAB에서 배열의 생성 : 2차원(행렬)


 마찬가지로 대괄호를 사용

 행렬은 행과 열로 이루어져 있다는 의미

 행 구분을 ; 로 함 [행렬]이니까 행이 앞이라고 생각하면 됨


즉, 행렬의 크기표현은 행*렬…
그러므로 이건 3 x 4 크기의 행렬임

제 제 제 제
1 2 3 4
열 열 열 열

제1행

제2행

제3행

▲ 행과 열의 구분(진짜몹시매우무척엄청 중요)

부산대학교 항공우주공학과 - 26 - DEPARTMENT OF AEROSPACE ENGINEERING.


2023
배열 생성 및 조작 AI프로그래밍

 MATLAB에서 배열의 생성 : 2차원(행렬)


 마찬가지로 대괄호를 사용

 행렬은 행과 열로 이루어져 있다는 의미

 행 구분을 ; 로 함

부산대학교 항공우주공학과 - 27 - DEPARTMENT OF AEROSPACE ENGINEERING.


2023
배열 생성 및 조작 AI프로그래밍

 MATLAB에서 배열의 생성 : 2차원(행렬)


 전치는 역시 ' 로 실행

 행렬의 전치는 행과 열을 뒤집는다는 의미

부산대학교 항공우주공학과 - 28 - DEPARTMENT OF AEROSPACE ENGINEERING.


2023
배열 생성 및 조작 AI프로그래밍

 배열의 인덱싱(index + ing)


 인덱싱이란, 배열에서 원하는 요소(원소, element)에 접근하는 것

 배열에서 필요한 데이터 일부만 가져올 때 사용

1차원 배열에서는
"몇번째" 요소인지
접근하는게 직관적임

그렇다면 2차원은…?

부산대학교 항공우주공학과 - 29 - DEPARTMENT OF AEROSPACE ENGINEERING.


2023
배열 생성 및 조작 AI프로그래밍

 배열의 인덱싱(index + ing)


 2차원 배열에 있어서도 마찬가지로 몇 번째인지 호출하면 됨

부산대학교 항공우주공학과 - 30 - DEPARTMENT OF AEROSPACE ENGINEERING.


2023
배열 생성 및 조작 AI프로그래밍

 배열의 인덱싱(index + ing)


 2차원 배열에 있어서도 마찬가지로 몇 번째인지 호출하면 됨

[행렬]이니까 행이 앞이라고 생각하면 됨


즉, 행이 쌓이는 방향으로 진행됨

부산대학교 항공우주공학과 - 31 - DEPARTMENT OF AEROSPACE ENGINEERING.


2023
배열 생성 및 조작 AI프로그래밍

 배열의 인덱싱(index + ing)


 2차원 배열에 있어서도 마찬가지로 몇 번째인지 호출하면 됨

 그러나 2차원이면 2차원답게 좌표로 인덱싱하는게 더 직관적

제 제 제
1 2 3
열 열 열

제1행
제2행

[행렬]이니까 행이 앞이라고 생각하면 됨


즉, 행이 앞임

부산대학교 항공우주공학과 - 32 - DEPARTMENT OF AEROSPACE ENGINEERING.


2023
배열 생성 및 조작 AI프로그래밍

 배열의 인덱싱(index + ing)


 범위를 인덱싱 할 수 있음, 콜론 ( : ) 을 사용함

부산대학교 항공우주공학과 - 33 - DEPARTMENT OF AEROSPACE ENGINEERING.


2023
배열 생성 및 조작 AI프로그래밍

 배열의 인덱싱(index + ing)


 범위를 인덱싱 할 수 있음, 콜론 ( : ) 을 사용함

 이차원의 경우는…??

부산대학교 항공우주공학과 - 34 - DEPARTMENT OF AEROSPACE ENGINEERING.


2023
배열 생성 및 조작 AI프로그래밍

 배열의 인덱싱(index + ing)


 범위를 인덱싱 할 수 있음, 콜론 ( : ) 을 사용함

 이차원의 경우는…??

부산대학교 항공우주공학과 - 35 - DEPARTMENT OF AEROSPACE ENGINEERING.


2023
배열 생성 및 조작 AI프로그래밍

 배열의 인덱싱(index + ing)


 행렬의 한 줄을 통째로 인덱싱하려면??

 마찬가지로 콜론 ( : ) 을 사용함
그러나 앞의 범위지정과 사용법이 다르다…헷갈림 주의

부산대학교 항공우주공학과 - 36 - DEPARTMENT OF AEROSPACE ENGINEERING.


2023
배열 생성 및 조작 AI프로그래밍

 배열의 인덱싱(index + ing)


 행렬의 한 줄을 통째로 인덱싱하려면??

 마찬가지로 콜론 ( : ) 을 사용함
그러나 앞의 범위지정과 사용법이 다르다…헷갈림 주의

만약 배열의 크기가 커서
끝번호가 뭔지 알 수 없다면? 내장변수 end를 써라!!!

옛날에 end 있는지 모르고.,..length 썼었음…

부산대학교 항공우주공학과 - 37 - DEPARTMENT OF AEROSPACE ENGINEERING.


2023
마무리 AI프로그래밍

부산대학교 항공우주공학과 - 38 - DEPARTMENT OF AEROSPACE ENGINEERING.

You might also like