SlideShare a Scribd company logo
- 1 -
์ œ 1 ์žฅ Matlab ์†Œ๊ฐœ
1. ๊ฐœ์š”
Matlab์ด๋ž€ โ€˜Matrix Laboratoryโ€™๋ฅผ ๋œปํ•˜๋Š” ๋ง๋กœ์จ, ์ˆ˜์น˜ ํ•ด์„, ํ–‰๋ ฌ ์—ฐ์‚ฐ, ์‹ ํ˜ธ ์ฒ˜๋ฆฌ ๋ฐ
๊ฐ„ํŽธํ•œ ๊ทธ๋ž˜ํ”ฝ ๊ธฐ๋Šฅ ๋“ฑ์„ ํ†ตํ•ฉํ•˜์—ฌ ๊ณ ์„ฑ๋Šฅ์˜ ์ˆ˜์น˜๊ณ„์‚ฐ ๋ฐ ๊ฒฐ๊ณผ์˜ ๊ฐ€์‹œํ™” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š”
ํ”„๋กœ๊ทธ๋žจ์ด๋‹ค. Matlab์€ ๊ทธ ์ด๋ฆ„์ด ๋งํ•˜๋“ฏ์ด ํ–‰๋ ฌ ๋˜๋Š” ๋ฒกํ„ฐ๋ฅผ ๊ธฐ๋ณธ ์ž๋ฃŒ๋กœ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ๋Šฅ
์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ณ„์‚ฐ ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•œ๋‹ค.
Matlab์€ ๋ณธ๋ž˜ Cleve Moler๊ฐ€ Fortran์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์„ฑํ•œ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ์„œ Linpack๊ณผ
Eispack ํ”„๋กœ์ ํŠธ์— ์ฐธ์—ฌํ•œ ์‚ฌ๋žŒ๋“ค์— ์˜ํ•˜์—ฌ ๊ธฐ๋ณธ์ ์ธ ํ–‰๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๋งŒ๋“ค์–ด์กŒ๋‹ค. ํ˜„์žฌ์˜
Matlab์€ Mathworks์‚ฌ์—์„œ C๋กœ ์ž‘์„ฑํ•˜์˜€์œผ๋ฉฐ, ์ดˆํŒ์€ Steve Bangert, Steve Kleiman,
John Little๊ณผ Cleve Moler์— ์˜ํ•ด์„œ ์ž‘์„ฑ๋˜์—ˆ๋‹ค. ๊ทธ ์ดํ›„์—๋Š” Matlab ๊ฐœ๋ฐœํŒ€ ๋ฐ ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ
๋“ค์— ์˜ํ•˜์—ฌ ์‹ค์งˆ์ ์ธ ๊ฐœ๋ฐœ์ด ์ด๋ฃจ์–ด์กŒ๋‹ค.
Matlab์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ–‰๋ ฌ ์ž๋ฃŒ๋ฅผ ๋‹ค๋ฃจ๊ธฐ ๋•Œ๋ฌธ์— ์ฐจ์›ํ™”(dimensioning)๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์œผ
๋ฉฐ ํ†ต์ƒ์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋“ค(Fortran, C, Pascal ๋ฐ Basic ๋“ฑ)์„ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘
์„ฑํ•˜์ง€ ์•Š๊ณ ๋„ ์‰ฝ๊ฒŒ ์ˆ˜์น˜ ๊ณ„์‚ฐ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
Matlab์˜ ๊ฐ€์žฅ ํฐ ํŠน์ง•์€ M-file์„ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ํŠน์ •ํ•œ ํ•ด๋ฅผ ๊ตฌํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ์‘์šฉ ํ”„
๋กœ๊ทธ๋žจ๋“ค์„ ์†์‰ฝ๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด๋‹ค. M-ํŒŒ์ผ์ด๋ž€ ๋งคํฌ๋กœ ํŒŒ์ผ๋กœ์„œ ํ•ด์„๊ธฐ
(interpreter) ๋ฐฉ์‹์œผ๋กœ ์ˆ˜ํ–‰๋˜๋ฉฐ ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ์ด๋‹ค. ๊ธฐ๋ณธ์ ์ธ ๋‚ด
๋ถ€ ๋ช…๋ น๋“ค ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋‹ค๋ฅธ M-ํŒŒ์ผ๋“ค๋„ ๋ถˆ๋Ÿฌ์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํŠน์ •ํ•œ ๋ฌธ์ œ๋ฅผ ํ’€๊ธฐ ์œ„
ํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์†์‰ฝ๊ฒŒ M-ํŒŒ์ผ์„ ์ž‘์„ฑํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด ์ปค๋‹ค๋ž€ ํŠน์ง•์ด๋‹ค.
2. Matlab์˜ ์‹คํ–‰
2.1 Matlab์˜ ๋ช…๋ น์ฐฝ๊ณผ ๊ทธ๋ฆผ์ฐฝ
Matlabํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” Windows๊ฐ€ ๋จผ์ € ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค. ๋‹ค์Œ์œผ๋กœ,
Matlab์„ ํ‘œ์‹œํ•˜๊ณ  ์žˆ๋Š” ์•„์ด์ฝ˜(icon)์„ ๋”๋ธ” ํด๋ฆญ(double click)ํ•จ์œผ๋กœ์จ(๊ทธ๋ฆผ 1.1) Matlab
ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ทธ๋ฆผ 1.2์™€ ๊ฐ™์€ ๋ช…๋ น์ฐฝ(command window)์ด ์—ด๋ฆฌ๊ฒŒ ๋œ๋‹ค. ์ด
๋•Œ
โ‰ซ
๋ชจ์–‘์˜ ํ”„๋กฌํ”„ํŠธ(ํ•œ๊ธ€ Window์ผ ๊ฒฝ์šฐ๋Š” โ–ก๋กœ ํ‘œ์‹œ)๋ฅผ ํ™”๋ฉด์— ํ‘œ์‹œํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ํ”„๋กฌํ”„ํŠธ๊ฐ€
ํ™”๋ฉด์— ๋‚˜ํƒ€๋‚˜๋ฉด ์‚ฌ์šฉ์ž๋Š” Matlab ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.
Matlab์„ ๋๋‚ด๊ธฐ ์œ„ํ•ด์„œ๋Š”
โ‰ซ quit
ํ˜น์€
โ‰ซ exit
- 2 -
๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
๊ทธ๋ฆผ 1.1 Matlab ํด๋”์˜ ์•„์ด์ฝ˜(Icon) ๊ทธ๋ฆผ 1.2 Matlab ๋ช…๋ น์ฐฝ(Command Window)
2.2 ๊ฒฝ๋กœ(Path)
Matlab ํ”„๋กœ๊ทธ๋žจ์—์„œ๋„ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ๋“ค๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ฒฝ๋กœ๊ฐ€ ์ •ํ™•ํ•˜๊ฒŒ ์„ค์ •๋˜์–ด์•ผ๋งŒ ํ”„
๋กœ๊ทธ๋žจ์„ ์ฐฉ์˜ค ์—†์ด ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
Matlab ํ”„๋กฌํ”„ํŠธ์—์„œ 'path' ๋ผ๊ณ  ์ž…๋ ฅํ•˜๋ฉด Matlab์—์„œ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ชจ๋“  ๊ฒฝ๋กœ๋ฅผ ๋ณด์—ฌ์ค€๋‹ค.
โ‰ซpath
MATLABPATH
D:TOOLMATLABtoolboxmatlabgeneral
D:TOOLMATLABtoolboxmatlabops
D:TOOLMATLABtoolboxmatlablang
D:TOOLMATLABtoolboxsymbolic
๏ผš
๏ผš
D:TOOLMATLABtoolboxmapmap
D:TOOLMATLABtoolboxmapmapdisp
D:TOOLMATLABtoolboxmapmapproj
D:TOOLMATLABtoolboxpde
D:TOOLMATLABtoolboxfixpoint
Matlab 4.2 ๋ฒ„์ ผ์˜ ๊ฒฝ์šฐ ์ž์‹ ์ด ์‚ฌ์šฉํ•˜๋Š” work๋ผ๋Š” ์ด๋ฆ„์˜ subdirectory๋ฅผ ๋“ฑ๋กํ•˜๊ณ  ์‹ถ์„
๋•Œ๋Š” path ๋ช…๋ น์„ ์ด์šฉํ•ด์„œ ์•„๋ž˜๊ณผ ๊ฐ™์ด ์‹คํ–‰ํ•˜๋ฉด ๋œ๋‹ค.
ใ€‹path(path, 'd:toolmatlabwork')
๋˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” Matlab์˜ root directory ๋‚ด์— ์žˆ๋Š” 'matlabrc.m' ์ด๋ฆ„์˜ m-file์„ ํŽธ์ง‘
- 3 -
๊ธฐ๋ฅผ ์ด์šฉํ•˜์—ฌ work๋ผ๋Š” subdirectory๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ๋œ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•จ์œผ๋กœ์จ ํ•ญ์ƒ work๋ผ๋Š”
์ž์‹ ์˜ directory๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
Matlab 5.x ๋ฒ„์ ผ์—์„œ๋Š” ๊ทธ๋ฆผ 1.3๊ณผ ๊ฐ™์ด Matlab ๋ช…๋ น์ฐฝ(command window)์˜ ํ’€-๋‹ค์šด ๋ฉ”๋‰ด
(Fileโ†’Set Path)๋ฅผ ์ด์šฉํ•œ Path Browser์—์„œ ์‰ฝ๊ฒŒ path๋ฅผ ์ถ”๊ฐ€์‹œํ‚ค๊ฑฐ๋‚˜ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋‹ค.
๊ทธ๋ฆผ 1.3 Matlab์˜ Path Brower
2.3 ๋„์›€๋ง ๊ธฐ๋Šฅ
Matlab๊ณผ ๊ด€๋ จ๋œ ๋‚ด์šฉ์— ๋Œ€ํ•˜์—ฌ ๋„์›€๋ง์„ ์ œ๊ณต๋ฐ›๊ณ  ์‹ถ์œผ๋ฉด
ใ€‹help
๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์ด ๊ฒฝ์šฐ Matlab๊ณผ ๊ด€๋ จ๋œ ํŒŒ์ผ๋“ค์ด ๋“ค์–ด ์žˆ๋Š” ๋””๋ ‰ํ† ๋ฆฌ์˜ ๋ชฉ๋ก๊ณผ ๋””๋ ‰ํ† ๋ฆฌ์˜
๋‚ด์šฉ์„ ๋ณด์—ฌ์ค€๋‹ค. ํŠน์ •ํ•œ ๋””๋ ‰ํ† ๋ฆฌ์˜ ํ•จ์ˆ˜๋“ค์˜ ๋ชฉ๋ก์— ๊ด€ํ•˜์—ฌ ์•Œ์•„๋ณด๊ณ ์ž ํ•  ๋•Œ์—๋Š” help
๋‹ค์Œ์— ์›ํ•˜๋Š” ๋””๋ ‰ํ† ๋ฆฌ์˜ ์ด๋ฆ„์„ ์ž…๋ ฅํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด
ใ€‹help elfun
ใ€‹help eig
๋“ฑ ์ด๋‹ค. help ๋‹ค์Œ ํ•ญ๋ชฉ์ด Matlab ๋‚ด๋ถ€ ๋ช…๋ น์–ด๊ฐ€ ์•„๋‹ˆ๊ฑฐ๋‚˜ Matlab ๊ฒฝ๋กœ์ƒ์˜ M-ํŒŒ์ผ์ด ์•„
๋‹ ๊ฒฝ์šฐ, ๊ทธ ํ•ญ๋ชฉ์„ ์ฐพ์„ ์ˆ˜ ์—†๋‹ค.
help๋ณด๋‹ค ์ผ๋ฐ˜์ ์ธ ๊ฒ€์ƒ‰ ๋ช…๋ น์–ด๋กœ์„œ lookfor๊ฐ€ ์‚ฌ์šฉ๋œ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž…๋ ฅํ•˜๋ฉด M-ํŒŒ์ผ ๋„
์›€๋ง ์ฃผ์„์˜ ์ฒซ๋ฒˆ์งธ ์ค„์— 'random'์ด๋ผ๋Š” ๋‹จ์–ด๋ฅผ ํฌํ•จํ•˜๋Š” ๋ชจ๋“  ํ•จ์ˆ˜๋“ค์„ ๋‚˜์—ดํ•ด ์ค€๋‹ค.
ใ€‹lookfor random
RAND Uniformly distributed random numbers.
RANDN Normally distributed random numbers.
RANDPERM Random permutation.
- 4 -
RJR Random Jacobi rotation.
SPRAND Sparse uniformly distributed random matrix.
SPRANDN Sparse normally distributed random matrix.
SPRANDSYM Sparse random symmetric matrix.
๏ผš
๏ผš
๋˜ํ•œ ํ•จ์ˆ˜๊ฐ€ ์–ด๋Š ๋””๋ ‰ํ† ๋ฆฌ์— ์žˆ๋Š”์ง€ ๊ทธ ์œ„์น˜๋ฅผ ์•Œ๊ณ ์ž ํ•  ๋•Œ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด which ๋‹ค์Œ
์— ์ฐพ๊ณ ์ž ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๋œ๋‹ค.
ใ€‹which bode
D:TOOLMATLABtoolboxcontrolbode.m
์œ„์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ• ์™ธ์—๋„ Matlab ๋ฉ”๋‰ด์—์„œ 'Help'๋ฅผ ์ด์šฉํ•˜์—ฌ Matlab์— ๊ด€๋ จ๋œ ๋‚ด์šฉ์„ ๋„์›€
๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.
2.4 ์ž‘์—…์˜ ์ข…๋ฃŒ์™€ ์ €์žฅ
quit๋‚˜ exit๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Matlab์„ ์ข…๋ฃŒํ•˜๋ฉด ์ž‘์—… ๊ณต๊ฐ„์— ์กด์žฌํ•˜๋Š” ๋ชจ๋“  ๋ณ€์ˆ˜๋“ค์„ ์‚ญ์ œํ•œ
๋‹ค. ๋งŒ์ผ ์ข…๋ฃŒ์ง์ „๊นŒ์ง€ ์‚ฌ์šฉํ•œ ๋ณ€์ˆ˜๋‚˜ ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•˜์˜€๋‹ค๊ฐ€ ๋‹ค์‹œ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์œผ๋ฉด ๋‹ค์Œ ๋‘
๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
์ฒซ ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์œผ๋กœ ์‚ฌ์šฉ์ž๊ฐ€ ์ž‘์—…ํ•œ ๋ชจ๋“  ๊ณผ์ •์„ ํ…์ŠคํŠธ ํŒŒ์ผ๋กœ ์ €์žฅํ•˜๊ณ  ์‹ถ์„ ๋•Œ ๋‹ค์Œ ๋ช…
๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
ใ€‹diary file_name : ๊ทธ๋ž˜ํ”ฝ์„ ์ œ์™ธํ•œ ๋ชจ๋“  ์ž…๋ ฅ, ์ถœ๋ ฅ์„ ํŒŒ์ผ
file_name์— ์ €์žฅ
ใ€‹diary off : ์ €์žฅ์„ ์ค‘์ง€
ใ€‹diary on : ํŒŒ์ผ file_name์— ์ €์žฅ์„ ๋‹ค์‹œ ์‹œ์ž‘
๋‘ ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์œผ๋กœ ์ž‘์—… ์ค‘ ์‚ฌ์šฉํ•œ ๋ณ€์ˆ˜๋ฅผ ์ €์žฅํ•˜์˜€๋‹ค๊ฐ€ ๋‹ค์‹œ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์„ ๋•Œ ๋‹ค์Œ ๋ช…๋ น
์–ด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
ใ€‹save : default ํŒŒ์ผ์ธ matlab.mat์— ๋ชจ๋“  ๋ณ€์ˆ˜ ์ €์žฅ
ใ€‹save file_name : ์‚ฌ์šฉํ•œ ๋ชจ๋“  ๋ณ€์ˆ˜๋ฅผ ํŒŒ์ผ file_name.mat์— ์ €์žฅ
ใ€‹save file_name var_list : ๋ณ€์ˆ˜ var_list๋ฅผ ํŒŒ์ผ file_name.mat์—
์ €์žฅ
ใ€‹load file_name : file_name.mat์— ์ €์žฅ๋œ ๋ชจ๋“  ๋ณ€์ˆ˜๋ฅผ ๋ถˆ๋Ÿฌ ๋“ค์ž„.
diary๋กœ ์ €์žฅ๋œ ํŒŒ์ผ์€ ํ…์ŠคํŠธ ํŒŒ์ผ์ด๋ฏ€๋กœ ํŽธ์ง‘์ด ๊ฐ€๋Šฅํ•˜๋‚˜ load ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ถˆ๋Ÿฌ
๋“ค์ผ ์ˆ˜ ์—†์œผ๋ฉฐ, save ๋ช…๋ น์–ด๋กœ ์ €์žฅ๋œ ํŒŒ์ผ์€ binaryํ˜•ํƒœ์ด๋ฏ€๋กœ ํŽธ์ง‘ํ•  ์ˆ˜ ์—†์œผ๋‚˜ ๋‹ค์Œ๊ณผ
๊ฐ™์ด save ์˜ต์…˜์— -ascii๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ €์žฅํ•˜๋ฉด ์ €์žฅ๋œ ํŒŒ์ผ์˜ ํŽธ์ง‘์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
ใ€‹save file_name.mat -ascii : ์‚ฌ์šฉํ•œ ๋ชจ๋“  ๋ณ€์ˆ˜๋ฅผ ํŒŒ์ผ
file_name.mat์— asciiํ˜•ํƒœ๋กœ ์ €์žฅ
- 5 -
2.5 Matlab ํ’€-๋‹ค์šด ๋ฉ”๋‰ด์˜ ์‚ฌ์šฉ๋ฒ•
2.5.1 ๋ช…๋ น์ฐฝ ๋ฉ”๋‰ด
1) File
โ‘  New
M-file
Figure
Model
โ–ถ M-file : ์ƒˆ๋กœ์šด M-ํŒŒ์ผ ์ž‘์„ฑ
โ–ถ Figure : ์ƒˆ๋กœ์šด ๊ทธ๋ฆผ์ฐฝ์„ ์ƒ์„ฑ
โ–ถ Model : SIMULINK ์„ค์น˜์‹œ ์ƒˆ๋กœ์šด SIMULINK์˜ ๋ชจ๋ธ ์ž‘์„ฑ
โ‘ก Open ... : ์–ด๋–ค M-ํŒŒ์ผ์„ ์„ ํƒํ•  ๊ฒƒ์ธ์ง€๋ฅผ ๋ฌป๋Š” ํŒŒ์ผ ์„ ํƒ์šฉ ๋Œ€ํ™”์ƒ์ž
โ‘ข Open Selection : ๊ธฐ๋ณธ ํŒŒ์ผ ํŽธ์ง‘๊ธฐ๋ฅผ ์ด์šฉํ•˜์—ฌ, ๋ช…๋ น์ฐฝ์—์„œ ๋ฐ๊ฒŒ ๋ฐ˜์ „๋œ ๋ฌธ์ž์—ด๊ณผ ์ผ์น˜
ํ•˜๋Š” ์ด๋ฆ„์˜ M-ํŒŒ์ผ์„ ์—ด์–ด์ค€๋‹ค.
โ‘ฃ Run Script ... : ์‹คํ–‰ํ•˜๊ณ ์ž ํ•˜๋Š” m-file์„ ์„ ํƒ
โ‘ค Load WorkSpace : matํŒŒ์ผ์„ loading
โ‘ฅ Save WorkSpace As ... : ํ˜„์žฌ ์ž‘์—…๊ณต๊ฐ„ ๋‚ด์˜ ๋ณ€์ˆ˜๋“ค์„ ์ €์žฅ
โ‘ฆ Show Graphics Property Editor : Graphics Property Editor ์ฐฝ์„ ํ™œ์„ฑํ™”
โ‘ง Show GUI Layout Tool : Guide Control Panel ์ฐฝ์„ ํ™œ์„ฑํ™”
โ‘จ Set Path... : Path Browser ์ฐฝ์„ ํ™œ์„ฑํ™”
โ‘ฉ Preferences... : ์ˆซ์ž ํ‘œํ˜„ ๋ฐฉ์‹, ์—๋””ํ„ฐ ํ”„๋กœ๊ทธ๋žจ ์„ค์ •, Font ์„ค์ •, Copying Option ์„ค์ •
โ‘ช Printer Setup... : ํ”„๋ฆฐํ„ฐ ์„ค์ •
โ‘ซ Print... : Matlab์—์„œ ์ž‘์—…ํ•œ ๋‚ด์šฉ์„ ์ถœ๋ ฅ
โ‘ฌ Exit MATLAB : Matlab ์ž‘์—… ์ข…๋ฃŒ
- 6 -
2) Edit
Undo
Cut Ctrl + X
Copy Ctrl + C
Paste Ctrl + V
Clear
Select All
Clear Session
โ‘  Undo : ์‹คํ–‰์ทจ์†Œ
โ‘ก Cut : ๋ช…๋ น์ฐฝ์—์„œ ์„ ํƒ๋œ ๋ถ€๋ถ„์„ ์˜ค๋ ค๋‚ด์–ด ๊ทธ ๋‚ด์šฉ์„ ํด๋ฆฝ๋ณด๋“œ์— ์ €์žฅ
โ‘ข Copy : ์„ ํƒ๋œ ๋ถ€๋ถ„์„ ๊ทธ๋Œ€๋กœ ๋ณด์กดํ•˜๋ฉด์„œ ๊ทธ ๋‚ด์šฉ์„ ํด๋ฆฝ๋ณด๋“œ์— ๋ณต์‚ฌ
โ‘ฃ Paste : ํŽธ์žฌ ํด๋ฆฝ๋ณด๋“œ์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๋‚ด์šฉ์„ ๋ช…๋ น์ฐฝ์— ๋ณต์‚ฌ
โ‘ค Clear : Prompt ๋‹ค์Œ์— ์˜ค๋Š” ๋ช…๋ น์–ด๋ฅผ ์‚ญ์ œ
โ‘ฅ Select All : ๋ช…๋ น์ฐฝ์˜ ๋ชจ๋“  ๋‚ด์šฉ์„ ์„ ํƒ
โ‘ฆ Clear Session : ๋ช…๋ น์ฐฝ์˜ ํ™”๋ฉด์„ ์ง€์šด๋‹ค.(๋‹จ, ๋ณ€์ˆ˜๋Š” ๊ทธ๋Œ€๋กœ ์œ ์ง€)
3) View : Toolbar๋ฅผ on-off
4) Window : ์—ด๋ ค์ ธ ์žˆ๋Š” window ์ฐฝ์„ ์„ ํƒ
5) Help : ๊ฐ์ข… ๋„์›€๋ง ์ฐฝ์„ ํ™œ์„ฑํ™”
2.5.2 ๊ทธ๋ฆผ์ฐฝ ๋ฉ”๋‰ด
1) File
โ‘  New Figure : ์ƒˆ๋กœ์šด ๊ทธ๋ฆผ์ฐฝ์„ ์ƒ์„ฑ ( >>figure )
โ‘ก Open... : ๊ทธ๋ฆผํŒŒ์ผ(*.fig)์„ ์—ฐ๋‹ค.
โ‘ข Close : ๊ทธ๋ฆผ์ฐฝ์„ ๋‹ซ๋Š”๋‹ค.
โ‘ฃ Save : ๊ทธ๋ฆผ์ฐฝ์„ ์ €์žฅ
โ‘ค Save As... : ๊ทธ๋ฆผ์ฐฝ์„ ๋‹ค๋ฅธ ์ด๋ฆ„์œผ๋กœ ์ €์žฅ
โ‘ฅ Export... : ๊ทธ๋ฆผ์ฐฝ์„ ๋‹ค๋ฅธ ํ˜•์‹์˜ ํŒŒ์ผ๋กœ ์ €์žฅ
- 7 -
โ‘ฆ Property Editor : Graphics Property Editor ์ฐฝ์„ ํ™œ์„ฑํ™”
โ‘ง Preferences... : ์ˆซ์ž ํ‘œํ˜„ ๋ฐฉ์‹, ์—๋””ํ„ฐ ํ”„๋กœ๊ทธ๋žจ ์„ค์ •, Font ์„ค์ •, Copying Option ์„ค์ •
โ‘จ Page Setup... : ํŽ˜์ด์ง€ ์„ค์ •
โ‘ฉ Print Setup : ํ”„๋ฆฐํ„ฐ ์„ค์ •
โ‘ช Print Preview... : ๋ฏธ๋ฆฌ๋ณด๊ธฐ
โ‘ซ Print : ์ธ์‡„
2) Edit : ์ž๋ฅด๊ธฐ, ๋ณต์‚ฌ, ๋ถ™์ด๊ธฐ
3) Tools
Show Toolbar
Enable Plot Editing
Axes Properties...
Line Properties...
Text Properties...
Unlock Axes Position
Show Legend
Add
Zoom In
Zoom Out
Rotate 3D
โ‘  Show Toolbar : ํˆด๋ฐ” on-off
โ‘ก Enable Plot Editing : ๊ทธ๋ž˜ํ”ฝ ๊ฐ์ฒด์˜ edit ํ™œ์„ฑํ™” ์„ ํƒ
โ‘ข Axes Properties... : Edit Axes Properties ์ฐฝ์„ ํ™œ์„ฑํ™”
โ‘ฃ Line Properties... : Edit Line Properties ์ฐฝ์„ ํ™œ์„ฑํ™”
โ‘ค Text Properties... : Edit Font Properties ์ฐฝ์„ ํ™œ์„ฑํ™”
โ‘ฅ Unlock Axes Position : ๊ทธ๋ฆผ์ฐฝ ๋‚ด ๊ฐ์ฒด์˜ ์œ„์น˜ ๋ณ€๊ฒฝ์„ on-off
โ‘ฆ Show Legend : ๋ฒ”๋ก€๋ฅผ ํ‘œ์‹œ
โ‘ง Add : Axes, Arrow, Line, Text ๊ฐ์ฒด๋ฅผ ์ถ”๊ฐ€
โ‘จ Zoom In : ํ™•๋Œ€
โ‘ฉ Zoom Out : ์ถ•์†Œ
โ‘ช Rotate 3D : ๊ฐ์ฒด์˜ ๋ณด๋Š” ๊ด€์ ์„ ๋ณ€ํ™”(๋ฐฉ์œ„๊ฐ, ๊ณ ๋„ ๋ณ€๊ฒฝ)
4) Window : ์—ด๋ ค์ ธ ์žˆ๋Š” window ์ฐฝ์„ ์„ ํƒ
5) Help : ๊ฐ์ข… ๋„์›€๋ง ์ฐฝ์„ ํ™œ์„ฑํ™”
- 8 -
3. Matlab ๋„๊ตฌ์ƒ์ž(Toolbox)
Matlab์˜ ๊ตฌ์กฐ๋Š” ์ƒ๋‹นํžˆ ์œ ์—ฐ์„ฑ์ด ์žˆ๊ณ , ํŠน์ •ํ•œ ๋ชฉ์ ์„ ์š”๊ตฌํ•˜๋Š” ๋„๊ตฌ์ƒ์ž(toolbox)๋“ค์„
์ถ”๊ฐ€ํ•จ์œผ๋กœ์จ ๋ณด๋‹ค ๋‹ค์–‘ํ•˜๊ณ  ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋Šฅ์„ ์‰ฝ๊ฒŒ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋˜์–ด ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ
toolbox๋“ค์€ ์—ฌ๋Ÿฌ ํ•™๋ฌธ ๋ถ„์•ผ์˜ ๊ฐœ๋…์„ ๋น ๋ฅธ ์ˆ˜ํ•™์  ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ํ•จ์ˆ˜ํ™”ํ•˜์—ฌ ๋ชจ์•„ ๋†“์€
Matlab์˜ ํ•จ์ˆ˜๋“ค๋กœ์„œ ๋‹ค์–‘ํ•œ toolbox๊ฐ€ ์ œ๊ณต๋˜๊ณ  ์žˆ๋Š”๋ฐ ์ด๋“ค์„ ๊ฐ„๋‹จํžˆ ์†Œ๊ฐœํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™
๋‹ค.
์‹ ํ˜ธ ์ฒ˜๋ฆฌ(Signal Processing) Toolbox : ๋””์ง€ํ„ธ ์‹ ํ˜ธ ์ฒ˜๋ฆฌ ๊ธฐ์ˆ ์„ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜์˜
ํ•จ์ˆ˜๋“ค์ด ๋ชจ์ธ ์ง‘๋‹จ์œผ๋กœ์จ ์‹ ํ˜ธ ๋ฐ ์„ ํ˜• ์‹œ์Šคํ…œ์˜ ๋ชจ๋ธ, ๋””์ง€ํ„ธ ๋ฐ ์•„๋‚ ๋กœ๊ทธ ํ•„ํ„ฐ์˜ ์„ค๊ณ„์™€
๋ถ„์„ ๋ฐ Power Spectrum ํ‰๊ฐ€๋ฅผ ์œ„ํ•œ ๊ธฐ๋Šฅ(FFT ๋ถ„์„)์„ ํฌํ•จํ•˜๊ณ  ์žˆ๋‹ค.
์˜์ƒ ์ฒ˜๋ฆฌ(Image Processing) Toolbox : 2์ฐจ์›์ ์ธ ์˜์ƒ ์‹ ํ˜ธ์˜ ์ฒ˜๋ฆฌ ๋ฐ ํ•ด์„์„ ์œ„ํ•œ ๊ฐ
์ข… ํ•จ์ˆ˜๋“ค์„ ์ œ๊ณตํ•œ๋‹ค.
์ œ์–ด ์‹œ์Šคํ…œ(Control System) Toolbox : ์‹œ์Šคํ…œ์˜ ๋ถ„์„ ๋ฐ ์ œ์–ด๊ธฐ ์„ค๊ณ„๋ฅผ ์œ„ํ•œ Matlabํ”„
๋กœ๊ทธ๋žจ๋“ค์˜ ํ•จ์ˆ˜๋“ค์ด ์žˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๋‹ค๋ฃจ์–ด์ง€๋Š” ํ•จ์ˆ˜๋“ค์˜ ์ฃผ์š”ํ•œ ํŠน์ง•์€ ์ „๋‹ฌ ํ•จ์ˆ˜์™€ ์ƒํƒœ
๋ฐฉ์ •์‹์„ ๋Œ€์ƒ์œผ๋กœ ํ•˜์—ฌ ์‹œ์Šคํ…œ์˜ ํ•ด์„ ๋ฐ ์„ค๊ณ„๊ฐ€ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ์ˆ˜์น˜ํ•ด์„์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ƒ๋‹นํ•œ
์ •ํ™•์„ฑ์„ ๊ฐ–๊ณ  ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋Ÿฌํ•œ ๊ฒฐ๊ณผ๋“ค์„ ์‰ฝ๊ฒŒ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋Š” ๊ทธ๋ž˜ํ”„๋ฅผ ํ†ตํ•ด ์ดํ•ด์˜ ํญ
์„ ๋„“๊ฒŒ ํ•œ๋‹ค.
ํผ์ง€(Fuzzy Logic) Toolbox : ๋ณต์žกํ•˜๊ณ  ๋น„์„ ํ˜•์ ์ธ ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ์ •ํ™•ํ•œ ๋ชจ๋ธ๋ง์ด ์—†์–ด
๋„ ์ œ์–ด๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ์ด๋Ÿฌํ•œ ํผ์ง€ ๊ธฐ์ˆ ์„ ์‘์šฉ ์‹œ์Šคํ…œ์— ์ ์šฉํ•˜์—ฌ ์ œ
์–ด๊ธฐ ๋””์ž์ธ๊ณผ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๋ฐ ์‹ค์‹œ๊ฐ„ ์ œ์–ด ๋“ฑ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค.
ํ†ต์‹ (Communication) Toolbox : ํ†ต์‹  ์‹œ์Šคํ…œ์˜ ํ•ด์„๊ณผ ๋””์ž์ธ ๋ฐ ์‹œ๋ฎฌ๋ ˆ์ด์…˜์„ ์œ„ํ•œ ํ•ด์„
ํ•จ์ˆ˜๋“ค์„ ํฌํ•จํ•˜๊ณ  ์žˆ๋‹ค.
์‹ ๊ฒฝ ํšŒ๋กœ๋ง(Neural Network) Toolbox : ํŒจํ„ด ์ธ์‹์ด๋‚˜ ๋น„์„ ํ˜• ์‹œ์Šคํ…œ์˜ ๋ชจ๋ธ๋ง๊ณผ ์ œ์–ด์™€
๊ฐ™์€ ํ•ด์„์ด ๊ทนํžˆ ์–ด๋ ค์šด ๊ฒฝ์šฐ์— ์‹ ๊ฒฝํšŒ๋กœ๋ง์„ ์ ์šฉํ•˜์—ฌ ์ข…์ข… ๋งŒ์กฑ์Šค๋Ÿฐ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ
๋‹ค. ์—ฌ๋Ÿฌ ๊ฐ€์ง€์˜ ์‹ ๊ฒฝ๋ง์„ ์ œ๊ณตํ•˜์—ฌ ์‹œ์Šคํ…œ์˜ ๋””์ž์ธ๊ณผ ์ˆ˜ํ–‰ ๋ฐ ์‹œ๋ฎฌ๋ ˆ์ด์…˜์ด ๊ฐ€๋Šฅํ•˜๋„๋ก
ํ•˜๊ณ  ์žˆ๋‹ค.
์ตœ์ ํ™”(Optimization) Toolbox : ๋น„์„ ํ˜• ํ•จ์ˆ˜์˜ ์ตœ์ ํ™” ๋ฌธ์ œ, ์„ ํ˜• 2์ฐจ ํ˜•์‹์˜ ์ตœ์ ํ™”,
Non-negative least square, ๋น„์„ ํ˜• ๋ฐฉ์ •์‹์˜ ํ•ด ๋“ฑ์„ ์œ„ํ•ด ๋‹ค์–‘ํ•œ ํ•จ์ˆ˜ ํ”„๋กœ๊ทธ๋žจ๋“ค์„ ์ œ๊ณต
ํ•œ๋‹ค.
ํ†ต๊ณ„(Statistics) Toolbox : ํ™•๋ฅ  ๋ฐ ํ†ต๊ณ„์˜ ์ž๋ฃŒ๋“ค์„ ํ•ด์„, ๋ชจ๋ธ๋ง ๋ฐ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•  ์ˆ˜ ์žˆ
๋Š” ๋‹ค์–‘ํ•œ ํ•จ์ˆ˜๋“ค์„ ์ œ๊ณตํ•œ๋‹ค.
์‹œ์Šคํ…œ ์ถ”์ •(System Identification) Toolbox : ์ž…์ถœ๋ ฅ ๋ฐ์ดํ„ฐ๋กœ๋ถ€ํ„ฐ ๋™์  ์‹œ์Šคํ…œ์˜ ์„ ํ˜•๋ชจ
๋ธ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ, ์ œ์–ด ์„ค๊ณ„ ๋ฐ ์‹ ํ˜ธ์ฒ˜๋ฆฌ์— ์‘์šฉ๋˜๊ณ  ์žˆ์œผ๋ฉฐ, ์ตœ๊ทผ์— ๊ธˆ์œต, ๊ฒฝ์ œ
๋ถ„์•ผ์—์„œ์˜ ๋ชจ๋ธ๋ง ๋ฐฉ๋ฒ•์œผ๋กœ๋„ ๊ฐ๊ด‘์„ ๋ฐ›๊ณ  ์žˆ๋‹ค.
๊ธฐ์ดˆ์ˆ˜ํ•™(Symbolic Math) Toolbox : Maple V.๋ฅผ ๊ธฐ๋ณธ์œผ๋กœ ํ•˜์—ฌ ๊ฐ์ข… ์ˆ˜ํ•™ ๊ณ„์‚ฐ์‹ ๋“ฑ์„
์‹คํ–‰ํ•œ๋‹ค.
- 9 -
์ œ 2 ์žฅ ๊ธฐ๋ณธ์ ์ธ Matlab ์‚ฌ์šฉ๋ฒ•
์ด ์žฅ์—์„œ๋Š” Matlab์„ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ์žˆ์–ด์„œ ์•Œ์•„๋‘์–ด์•ผ ํ•  ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ์‚ฌํ•ญ๋“ค๊ณผ ํ•จ์ˆ˜๋“ค
์˜ ์‚ฌ์šฉ๋ฒ•์— ๋Œ€ํ•˜์—ฌ ๊ฐ„๋‹จํžˆ ์‚ดํŽด๋ณด๊ธฐ๋กœ ํ•œ๋‹ค. ํ–‰๋ ฌ ๋˜๋Š” ๋ฒกํ„ฐ์˜ ์ž…๋ ฅ ๋ฐ ์กฐ์ž‘์— ๋Œ€ํ•˜์—ฌ ์•Œ
์•„๋ณด๊ณ , ์ด๋Ÿฌํ•œ ์ž๋ฃŒ๋“ค์„ ๋‹ค๋ฃจ๋Š” ์ž‘์—… ๊ณต๊ฐ„์— ๋Œ€ํ•œ ์ •๋ณด์˜ ํš๋“ ๋ฐ ์ €์žฅ๊ณผ ์ž‘์—…์˜ ์ค‘์ง€, ์ˆ˜
์น˜ ์ž๋ฃŒ์˜ ํ‘œํ˜„, ์ถœ๋ ฅ ํ˜•์‹, ๋„์›€๋ง, ํ•จ์ˆ˜ ๋“ฑ์— ๊ด€ํ•˜์—ฌ ์‚ดํŽด๋ณด๊ธฐ๋กœ ํ•œ๋‹ค.
1. ํ–‰๋ ฌ์˜ ์ž…๋ ฅ ๋ฐฉ๋ฒ•
Matlab์—์„œ ์‚ฌ์šฉ๋˜๋Š” ํ–‰๋ ฌ ์ž…๋ ฅ๋ฐฉ์‹์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ช‡ ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.
โ‘  matlab ๋ช…๋ น ํ–‰(command-line)์—์„œ ์ง์ ‘ ํ–‰๋ ฌ์˜ ์›์†Œ๋“ค์„ ํ•˜๋‚˜์”ฉ ์ž…๋ ฅํ•˜์—ฌ ํ–‰๋ ฌ์„
๊ตฌ์„ฑ
โ‘ก ๋‚ด๋ถ€๋ช…๋ น ๋˜๋Š” ํ•จ์ˆ˜๋“ค์„ ์‚ฌ์šฉํ•˜์—ฌ ํ–‰๋ ฌ์„ ๊ตฌ์„ฑ
โ‘ข M-ํŒŒ์ผ ๋‚ด์—์„œ ํ–‰๋ ฌ์„ ๊ตฌ์„ฑ
โ‘ฃ ์™ธ๋ถ€์˜ ์ž๋ฃŒ ํŒŒ์ผ๋กœ๋ถ€ํ„ฐ ํ–‰๋ ฌ์„ ๋ถˆ๋Ÿฌ๋“ค์ž„
Maltlab ์–ธ์–ด์—์„œ๋Š” ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋“ค๊ณผ๋Š” ๋‹ฌ๋ฆฌ ์ฐจ์› ์„ ์–ธ์ด๋‚˜ ํ˜• ์„ ์–ธ์ด ์—†๋‹ค. ํ˜„
์žฌ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ์ปดํ“จํ„ฐ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํฌ๊ธฐ๊นŒ์ง€ ์ž๋™์ ์œผ๋กœ ์ €์žฅ ๊ณต๊ฐ„์„ ํ• ๋‹นํ•ด ์ค€๋‹ค.
์ž‘์€ ํฌ๊ธฐ์˜ ํ–‰๋ ฌ์„ ์ž…๋ ฅํ•˜๋Š” ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ง์ ‘์ ์„ ์›์†Œ๋“ค์„ ๋‚˜์—ดํ•˜
์—ฌ ์ž…๋ ฅํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
โ‘  ์›์†Œ๋“ค์€ ๋นˆ ์นธ(๊ณต๋ฐฑ) ๋˜๋Š” ์‰ผํ‘œ(,)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ถ„๋ฆฌํ•œ๋‹ค.
โ‘ก ์ „์ฒด ์›์†Œ๋“ค์€ ๋Œ€๊ด„ํ˜ธ([ ])๋กœ ๊ฐ์‹ผ๋‹ค.
โ‘ข ์›์†Œ์˜ ๋์— ์„ธ๋ฏธ์ฝœ๋ก (;, semicolon)์„ ๋ถ™์ด๋ฉด ํ•œ ํ–‰์˜ ์ข…๋ฃŒ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.
2. ํ–‰๋ ฌ์˜ ์›์†Œ๋“ค
- matlab์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ž„์˜์˜ ํ‘œํ˜„๋“ค : ์ˆ˜์น˜, ํ•จ์ˆ˜, ์ˆ˜์‹, ๋ฌธ์ž ๋“ฑ
ใ€‹A=[1 2 3 ; 4, 5, 6 ; 7, 8 9]
A=
1 2 3
4 5 6
7 8 9
ใ€‹ x=[-2.5 exp(2.5) 2*3/4]
x=
-2.5 12.1825 1.5
ใ€‹y=['abc' ; 'x' 'y' 'z']
y=
abc
xyz
- ํ–‰๋ ฌ์˜ ์›์†Œ๋“ค ์ค‘์—์„œ ์–ด๋Š ํ•œ ๊ฐ’๋งŒ์„ ์ƒˆ๋กœ ์ž…๋ ฅํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •
ใ€‹x(5)=abs(x(1))
x=
- 10 -
-2.5 12.128 1.5 0 2.5
โ†“
โ€ป ๊ฐ’์ด ์ง€์ •๋˜์ง€ ์•Š์€ ์ƒ‰์ธ์˜ ์›์†Œ๋“ค์€
์ž๋™์ ์œผ๋กœ 0์œผ๋กœ ์ง€์ •๋œ๋‹ค.
- ํ–‰๋ ฌ ์ž์‹ ์„ ๋ถ€ํ–‰๋ ฌ(sub-matrix)๋กœ์„œ ๋ถˆ๋Ÿฌ์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
ใ€‹z=[1 3 5];
ใ€‹A=[A;z]
A=
1 2 3
4 5 6
7 8 9
1 3 5
- ํฐ ํ–‰๋ ฌ์˜ ์ผ๋ถ€ ์›์†Œ๋“ค์„ ์„ ํƒํ•ด์„œ ์ž‘์€ ํ–‰๋ ฌ๋กœ ๊ตฌ์„ฑ
ใ€‹B=A(1:3, :)
B=
1 2 3
4 5 6
7 8 9
ใ€‹C=A(3:4, 2:3)
3. ๋ณต์†Œ์ˆ˜์™€ ๋ณต์†Œ ํ–‰๋ ฌ
- ์ˆซ์ž ๋’ค์— 'i' ๋˜๋Š” 'j'๋ฅผ ๋ถ™์ž„์œผ๋กœ์จ ๋ณต์†Œ์ˆ˜ ํ‘œํ˜„
ใ€‹z=1+2*i ๋˜๋Š” z=1+2i
๋˜๋Š”
ใ€‹z=1+2*j๋Š” z=1+2j
z=
1.0000 + 2.0000i
- ๋ณต์†Œ ํ–‰๋ ฌ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•
ใ€‹A=[1 2; 3 4]+i*[4 3; 2 1] ๋˜๋Š” A=[1+4i 2+3i; 3+2i 4+i]
์ฃผ์˜:'+' ๋˜๋Š” '-'๋ถ€ํ˜ธ ์ „ํ›„์— ๊ณต๋ฐฑ์„ ๋‘์–ด์„œ๋Š” ์•ˆ๋œ๋‹ค.
ใ€‹x=[1 2; -3 4]
ใ€‹i=abs(-x)
ใ€‹z=1+2*i
z=
3 5
7 9 ====> z๋Š” ๋ณต์†Œ์ˆ˜ '1+2i'๊ฐ€ ์•„๋‹ˆ๋ผ '2|x|+1'์˜ ๊ฐ’์ด ๋œ๋‹ค.
4. ์ „์น˜ ํ–‰๋ ฌ(matrix transpose)
- ์ž‘์€ ๋”ฐ์Œํ‘œ(', prime ๋˜๋Š” apostrophe)์‚ฌ์šฉ
ใ€‹x= [1 2 3]'
- 11 -
x=
1
2
3
- ๋ณต์†Œ ํ–‰๋ ฌ์ผ ๊ฒฝ์šฐ ์ฃผ์˜! (๋‹จ์ˆœํ•œ ์ „์น˜ ํ–‰๋ ฌ์ด ์•„๋‹ˆ๋ผ ๊ณต์•ก๋ณต์†Œ ์ „์น˜ ํ–‰๋ ฌ์ด ๊ตฌํ•ด์ง)
ใ€‹a=[1+2i 2-3i]
ใ€‹b=a' --> ์›ํ•˜๋Š” ๊ฒฐ๊ณผ๊ฐ€ ์•„๋‹ˆ๋‹ค.
b =
1.0000 - 2.0000i
2.0000 + 3.0000i
ใ€‹c=a.' ๋˜๋Š” d=conj(a') ์‚ฌ์šฉ.
c = d =
1.0000 + 2.0000i 1.0000 + 2.0000i
2.0000 - 3.0000i 2.0000 - 3.0000i
5. matlab์— ์‚ฌ์šฉ๋˜๋Š” ์‚ฌ์น™ ์—ฐ์‚ฐ์ž๋“ค
+ addition / ์˜ค๋ฅธ ๋‚˜๋ˆ„๊ธฐ(right division)
- subtraction  ์™ผ ๋‚˜๋ˆ„๊ธฐ(left division)
* multiplication ^ power
* /,  : ์‚ฐ์ˆ  ์—ฐ์‚ฐ(1/2, 21)์ธ ๊ฒฝ์šฐ๋Š” ๊ฐ™์€ ๊ฐ’์„ ๊ฐ–๋Š”๋‹ค.
ํ–‰๋ ฌ ์—ฐ์‚ฐ์˜ ๊ฒฝ์šฐ a/b, ba๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ–๋Š”๋‹ค.
6. ํ–‰๋ ฌ์˜ ์‚ฌ์น™ ์—ฐ์‚ฐ
โ‘  ๋ง์…ˆ ๋ฐ ๋บ„์…ˆ
- ๊ฐ ํ–‰๋ ฌ์˜ ๊ฐ™์€ ์œ„์น˜, ์ฆ‰ ํ–‰๋ ฌ์ƒ์˜ ์ƒ‰์ธ(index)์ด ๊ฐ™์€ ์›์†Œ๋ผ๋ฆฌ ์ด๋ฃจ์–ด์ง.
x=[x11 x12 y=[y11 y12
x21 x22] y21 y22] ์ผ ๋•Œ
x+y=[x11+y11 x12+y12
x21+y21 x22+y22] ๊ฐ€ ๋œ๋‹ค.
ใ€‹a=[1 2 3; 4 5 6];
ใ€‹b=[2 4 6; 1 3 5];
ใ€‹c=a+b
c=
3 6 9
5 8 11
ใ€‹d=c-5; ----> ?
- 12 -
โ‘ก ๊ณฑ์…ˆ
- '*'๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ‘œ์‹œ, ํ–‰๋ ฌ์˜ ๋‚ด๋ถ€ ์ฐจ์›(inner dimension)์ด ์ผ์น˜ํ•  ๊ฒฝ์šฐ์—๋งŒ ์ •์˜.
ใ€‹x=[1 2 3];
ใ€‹y=[3 4 5];
ใ€‹x*y'
ans=
26
ใ€‹z=x'*y
z=
3 4 5
6 8 10
9 12 15
ใ€‹5*z
โ‘ข ๋‚˜๋ˆ—์…ˆ
A*X=B --> X=inv(A)*B ---> X=AB (left division)
X*A=B --> X=B*inv(A) ---> X=A/B (right division)
- x+2y+3z=5
4x+5y+6z=8
7x+8y=7 ์ผ ๋•Œ
๊€Ž
๊€š
๏ธณ๏ธณ๏ธณ
๊€
๊€›
๏ธณ๏ธณ๏ธณ
1 2 3
4 5 6
7 8 0
*
๊€Ž
๊€š
๏ธณ๏ธณ๏ธณ
๊€
๊€›
๏ธณ๏ธณ๏ธณ
x
y
z
=
๊€Ž
๊€š
๏ธณ๏ธณ๏ธณ
๊€
๊€›
๏ธณ๏ธณ๏ธณ
5
8
7
โ‡’ x,y,z = ?
ใ€‹A=[1 2 3; 4 5 6; 7 8 0];
ใ€‹b=[5 8 7]';
ใ€‹X=Ab
X =
-2.5556
3.1111
0.4444
โ‘ฃ ํ–‰๋ ฌ์˜ ๊ฑฐ๋“ญ์ œ๊ณฑ
ใ€‹a=[1 2; 3 4]
a =
1 2
3 4
ใ€‹a^2
ans =
7 10
15 22
ใ€‹a.^2
ans =
1 4
- 13 -
9 16
7. ์ผ๋ฐ˜์ ์ธ ๋ช…๋ น์–ด
โ‘  help
help : matlab์˜ path์—์„œ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์„ค๋ช…
help log : log ํ•จ์ˆ˜๋ฅผ ์„ค๋ช…
โ‘ก lookfor log : matlab path์— ์žˆ๋Š” ๋ชจ๋“  MํŒŒ์ผ์˜ ์ฒซ ๋ฒˆ์งธ ์ฝ”๋ฉ˜ํŠธ๋ผ์ธ์—์„œ log๋ฅผ ์ฐพ์•„
์„ค๋ช…ํ•œ๋‹ค.
โ‘ข type filename : ํŠน์ •ํ•œ ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ๋ณด์—ฌ์คŒ.
โ‘ฃ what : ํ˜„์žฌ์˜ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ํŒŒ์ผ์„ ๋ฆฌ์ŠคํŠธ
what dirname : matlab์˜ ๊ฒ€์ƒ‰๊ฒฝ๋กœ์—์„œ dirname์˜ ๋””๋ ‰ํ† ๋ฆฌ์— ์žˆ๋Š” ํŒŒ์ผ์„ ๋ฆฌ์ŠคํŠธํ•œ๋‹ค.
โ‘ค which funname : ์ „์ฒด ๊ฒ€์ƒ‰ ๊ฒฝ๋กœ์— ์žˆ๋Š” funname ํ•จ์ˆ˜๋ฅผ ํ™”๋ฉด์— ๋ณด์—ฌ์ค€๋‹ค.
โ‘ฅ clear : ์ž‘์—…๊ณต๊ฐ„์˜ ๋ชจ๋“  ๋ณ€์ˆ˜๋“ค์„ ์ง€์šด๋‹ค.
clear x y z : ์ž‘์—…๊ณต๊ฐ„์˜ ๋ณ€์ˆ˜ x, y, z๋ฅผ ์ง€์šด๋‹ค.
โ‘ฆ length : ๋ฒกํ„ฐ์˜ ๊ธธ์ด
ใ€‹x=[ 2 3 4 ] ;
ใ€‹length(x)
ans =3
ใ€‹max (size(x))
ans =3
โ‘ง save : ๋ชจ๋“  ๋ณ€์ˆ˜๋ฅผ matlab.mat ์— binary ํ˜•ํƒœ๋กœ ์ €์žฅ
save filename :๋ชจ๋“  ๋ณ€์ˆ˜๋ฅผ filename์— binary ํ˜•ํƒœ๋กœ ์ €์žฅ (ํ™•์žฅ์ž๋Š” ์ƒ๋žต
default --> .mat )
save filename x y z : ๋ณ€์ˆ˜ x, y, z๋ฅผ filename์— binary ํ˜•ํƒœ๋กœ ์ €์žฅ
save filename x y z -ascii : ๋ณ€์ˆ˜ x, y, z๋ฅผ filename์— ascii ํ˜•ํƒœ๋กœ ์ €์žฅ
โ‘จ load : ๋ณ€์ˆ˜๊ฐ€ ์ €์žฅ๋œ matlab.mat ํŒŒ์ผ์„ ๋กœ๋”ฉ
load filename : ๋ณ€์ˆ˜๊ฐ€ ์ €์žฅ๋œ filename์„ ๋กœ๋”ฉ
โ‘ฉ size : m x n ํ–‰๋ ฌ์˜ ์ฐจ์›
ใ€‹x=[1 2 3 ; 4 5 6]
ใ€‹d=size(x)
- 14 -
d=2 3
ใ€‹[m,n] = size(x)
m=2
n=3
โ‘ช format : ์ถœ๋ ฅ์˜ ํ˜•์‹์„ ์ œ์–ดํ•˜๋Š” ๋ช…๋ น
๋ช… ๋ น ์„ค๋ช…๊ณผ ์˜ˆ
format short
format long
format short e
format long e
format bank
format +
format rat
์†Œ์ˆ˜์  ์ดํ•˜ 4 ์ž๋ฆฌ์ˆ˜(๊ธฐ๋ณธ) : pi=3.1416
์†Œ์ˆ˜์  ์ดํ•˜ 14 ์ž๋ฆฌ์ˆ˜ : pi=3.14159265358979
์†Œ์ˆ˜์  ์•„๋ž˜ 4 ์ž๋ฆฌ์ˆ˜ : pi=3.1416e+000
์†Œ์ˆ˜์  ์ดํ•˜ 15 ์ž๋ฆฌ์ˆ˜ : pi=3.141592653589793e+000
์†Œ์ˆ˜์  ์•„๋ž˜ 2 ์ž๋ฆฌ์ˆ˜ : pi=3.14
์–‘์ˆ˜: +, ์Œ์ˆ˜: -, 0: (blank)
์†Œ์ˆ˜์  ๋Œ€์‹ ์— โ€˜/โ€™๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ถ„์ˆ˜ ํ˜•ํƒœ๋กœ ํ‘œ์‹œ
โ‘ซ more on : ํ™”๋ฉด์— ํ•œ ํŽ˜์ด์ง€์”ฉ ์ถœ๋ ฅ (space bar-ํ•œํŽ˜์ด์ง€์”ฉ, enter key-ํ•œ์ค„์”ฉ)
more off : ํ™”๋ฉด์— ์ถœ๋ ฅ๋˜๋Š” ํŽ˜์ด์ง€๋ฅผ ์ œ์–ดํ•˜์ง€ ์•Š๋Š”๋‹ค.
โ‘ฌ computer : matlab์„ ์‹คํ–‰ํ•˜๊ณ  ์žˆ๋Š” ์ปดํ“จํ„ฐ์˜ ์ข…๋ฅ˜๋ฅผ ๋ถ„๋ณ„ํ•˜์—ฌ ์•Œ๋ ค์ค€๋‹ค.
ใ€‹computer
ans = PCWIN
โ‘ญ clock : ํ˜„์žฌ์˜ ๋‚ ์งœ์™€ ์‹œ๊ฐ„์„ ์‹ญ์ง„์ˆ˜ ํ˜•ํƒœ๋กœ 6๊ฐœ์˜ ์—ด ๋ฒกํ„ฐ์— ๋‚˜ํƒ€๋‚ธ๋‹ค.
ใ€‹clock
ans =
1.0e+003 *
2.0000 0.0070 0.0040 0.0100 0.0480 0.0133
ใ€‹fix(clock)
ans =
2000 7 4 10 49 11
8. ๊ทธ ๋ฐ–์˜ ํ–‰๋ ฌ ํ•จ์ˆ˜
- roots : ๊ณ ์ฐจ ๋ฐฉ์ •์‹์˜ ๊ทผ์„ ๊ตฌํ•จ
ใ€‹a=[1 3 2]
ใ€‹b=roots(a)
b =
-2
-1
- poly : ํŠน์„ฑ ๋‹คํ•ญ์‹
ใ€‹poly(b)
- 15 -
ans =
1 3 2
- det : ํ–‰๋ ฌ์‹(determinant)
- trace : ๋Œ€๊ฐํ•ฉ(trace)
ใ€‹b=[1 2 3;4 5 6;4 5 6]
b =
1 2 3
4 5 6
4 5 6
ใ€‹c=trace(b)
c=
12
ใ€‹d=[b(1:2, :); 3 4 5; 3 2 1]
d =
1 2 3
4 5 6
3 4 5
3 2 1
ใ€‹trace(d)
ans=
11
9. ์ˆ˜ํ•™ ํ•จ์ˆ˜
โ‘  ใ€‹abs(-2)
ใ€‹abs(3+4i)
ใ€‹abs('Q') : Ascii๋ฌธ์ž์˜ ๊ฐ’์„ ์ถœ๋ ฅ
ans = 81
โ‘ก exp(5)
โ‘ข sqrt(x) : x์˜ ๊ฐ์›์†Œ์— ๋Œ€ํ•œ ์ œ๊ณฑ๊ทผ์„ ๊ณ„์‚ฐ
์Œ์ˆ˜๋‚˜ ๋ณต์†Œ์ˆ˜์— ๋Œ€ํ•ด์„œ๋Š” ๋ณต์†Œ์ˆ˜์˜ ๊ฒฐ๊ณผ๋ฅผ ์ œ๊ณต
ํ–‰๋ ฌ์˜ ์ œ๊ณฑ๊ทผ์—๋Š” sqrtm(x)๋ฅผ ์‚ฌ์šฉ
ใ€‹sqrt((-2:2))
ans =
0 + 1.4142i 0 + 1.0000i 0 1.0000 1.4142
โ‘ฃ log(x) : Natural logarithm
log10(x) : Common(base 10) logarithm
โ‘ค ceil(x) : x๋ณด๋‹ค ํฐ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์ •์ˆ˜ ๊ฐ’์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.
- 16 -
fix(x) : ๋ถ„์ˆ˜ ๋ถ€๋ถ„์„ ์ž˜๋ผ ๋ฒ„๋ฆฐ ์ •์ˆ˜ ๊ฐ’์„ ๊ฐ–๋Š”๋‹ค.
floor(x) : x๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ •์ˆ˜ ๊ฐ’์„ ์ทจํ•œ๋‹ค.
round(x) : x์— ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์ •์ˆ˜ ๊ฐ’์„ ์–ป๋Š”๋‹ค.
ใ€‹x=[-1.8 -0.3 3.3 5.7 7.0];
ใ€‹ceil(x)
ans =
-1 0 4 6 7
ใ€‹fix(x)
ans =
-1 0 3 5 7
ใ€‹floor(x)
ans =
-2 -1 3 5 7
ใ€‹round(x)
ans =
-2 0 3 6 7
โ‘ฅ real, imag, conj : ๋ณต์†Œ์ˆ˜์˜ ์‹ค์ˆ˜๋ถ€, ํ—ˆ์ˆ˜๋ถ€, conjugate๋ฅผ ์–ป๋Š”๋‹ค.
ใ€‹x=[2+3i ; 4-5i] ;
ใ€‹real(x)
ใ€‹imag(x)
ใ€‹conj(x)
angle : ์œ„์ƒ๊ฐ์„ ๊ณ„์‚ฐํ•˜๋Š” ํ•จ์ˆ˜๋กœ, ๋ณต์†Œ์ˆ˜ ํ–‰๋ ฌ์˜ ์œ„์ƒ๊ฐ์„ radian์œผ๋กœ ๊ณ„์‚ฐํ•˜๊ณ  ์ด
๊ฐ์€ -ฯ€์—์„œ ฯ€์‚ฌ์ด์— ๋†“์—ฌ ์žˆ๋‹ค.
ใ€‹z=3+4i ;
ใ€‹angle(z)
ans = 0.9273 (53.1
o
)
Mโˆ ฮธ=Mejฮธ
=a+bj
M= (a2
+b2
), ฮธ=tan-1
(b/a), a=Mcos(ฮธ), b=Msin(ฮธ)
ใ€‹c=1-2i
ใ€‹mag_c=abs(c);
ใ€‹angle_c=angle(c);
ใ€‹deg_c=angle_c*180/pi;
ใ€‹real_c=real(c);
ใ€‹imag_c=imag(c);
โ‘ฆ rem(x,y) : ๋‚˜๋จธ์ง€๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ํ•จ์ˆ˜ rem(x,y)=x-fix(x./y)*y
ใ€‹x=[5 6 ; 7 8] ; y=[2 3 ; 4 5] ;
ใ€‹rem(x,y)
ans = 1 0
- 17 -
3 3
sign(x) : x์˜ ๊ฐ ์›์†Œ๊ฐ€ 0๋ณด๋‹ค ํฌ๋ฉด 1, ๊ฐ™์œผ๋ฉด 0, ์ž‘์œผ๋ฉด -1์„ ์›์†Œ๋กœ ํ•˜๋Š” mxn์˜ ์‹ค์ˆ˜
ํ–‰๋ ฌ์„ ๋งŒ๋“ ๋‹ค.
ใ€‹x=[ 1 -1 0; 0 1 2];
ใ€‹sign(x)
ans = 1 -1 0
0 1 -1
โ‘ง ์‚ผ๊ฐํ•จ์ˆ˜ : ๋ชจ๋“  ๊ฐ์€ radian๋‹จ์œ„์ด๋‹ค.
sin(x), cos(x), tan(x), sinh(x), cosh(x), tanh(x), asin(x), acos(x), atan(x), asinh(x),
scosh(x), atanh(x)
10. ๋ฒกํ„ฐ์™€ ํ–‰๋ ฌ์˜ ์กฐ์ž‘๋ฒ•
โ‘  ๋ฒกํ„ฐ์˜ ์ƒ์„ฑ
- โ€œ์‹œ์ž‘๊ฐ’:์ฆ๋ถ„๊ฐ’:์ตœ์ข…๊ฐ’" ํ˜•์‹์œผ๋กœ ์ง€์ •
โ€œ์‹œ์ž‘๊ฐ’:์ตœ์ข…๊ฐ’" ํ˜•ํƒœ๋กœ ์ž…๋ ฅ์‹œ ์ฆ๋ถ„๊ฐ’์€ 1๋กœ ์ง€์ •
- ์ฝœ๋ก (:)์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฒกํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ ํ–‰๋ฒกํ„ฐ ์ƒ์„ฑ
ใ€‹x=1:5
x=1 2 3 4 5
ใ€‹y=0:0.5:3
y =
0 0.5000 1.0000 1.5000 2.0000 2.5000 3.0000
ใ€‹z=5:-1:-5
z =
5 4 3 2 1 0 -1 -2 -3 -4 -5
ใ€‹x=(0:.2:2)';
ใ€‹y=sin(x).*exp(-x);
ใ€‹[x,y]
ans =
0 0
0.2000 0.1627
0.4000 0.2610
0.6000 0.3099
0.8000 0.3223
1.0000 0.3096
1.2000 0.2807
1.4000 0.2430
1.6000 0.2018
1.8000 0.1610
- 18 -
2.0000 0.1231
- ๋Œ€์ˆ˜์ ์œผ๋กœ ๋“ฑ๊ฐ„๊ฒฉ์ธ ๋ฒกํ„ฐ ์ƒ์„ฑ
ใ€‹linspace(-5,5,3)
ans =
-5 0 5
โ‘ก ์ฒจ์ž ๋ถ™์ด๊ธฐ
- matlab์—์„œ๋Š” ์ฒจ์ž(subscript)๋ฅผ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ํ–‰๋ ฌ์˜ ๊ฐ ์›์†Œ๋“ค์„ ํ‘œ์‹œ ํ• ์ˆ˜ ์žˆ๋‹ค.
ใ€‹a=[0 1 2;4 5 6 ;8 9 10]
a =
0 1 2
4 5 6
8 9 10
ใ€‹a(1,1)=a(2,2)-a(2,3)
a =
-1 1 2
4 5 6
8 9 10
ใ€‹a(1.25*2 , 6/2.5) * 1.25*2 = 2.5
ans = 6/2.5 =2.4
9
ใ€‹a=magic(10)
a =
92 99 1 8 15 67 74 51 58 40
98 80 7 14 16 73 55 57 64 41
4 81 88 20 22 54 56 63 70 47
85 87 19 21 3 60 62 69 71 28
86 93 25 2 9 61 68 75 52 34
17 24 76 83 90 42 49 26 33 65
23 5 82 89 91 48 30 32 39 66
79 6 13 95 97 29 31 38 45 72
10 12 94 96 78 35 37 44 46 53
11 18 100 77 84 36 43 50 27 59
ใ€‹a(1:5,5)
ใ€‹a(1:5,5:7)
ใ€‹a(:,5)
ใ€‹a(1:2,:)
ใ€‹b=[1 2 3; 4 5 6; 7 8 9]
b =
1 2 3
4 5 6
- 19 -
7 8 9
ใ€‹c=[9 8 7;6 5 4; 3 2 1]
c =
9 8 7
6 5 4
3 2 1
ใ€‹c(:,[1 3])=b(:,2:3) ๋˜๋Š” c(:,[1 3])=b(:,[2 3])
c =
2 8 3
5 5 6
8 2 9
ใ€‹c(3:-1:1,:) โ‰ช=== c์˜ 3๋ถ€ํ„ฐ 1๊นŒ์ง€์˜ ํ–‰๋“ค์„ ์—ญ์ˆœ์œผ๋กœ ๋ฐฐ์—ด
ans =
8 2 9
5 5 6
2 8 3
ใ€‹a=[1 2; 3 4]
a =
1 2
3 4
ใ€‹b=a(:) <<=== ์—ด๋ฒกํ„ฐ๋กœ ๊ตฌ์„ฑ(vectorize)
b =
1
2
3
4
ใ€‹a(:)=10:13 <<=== reshape
a =
10 12
11 13
๋ช…๋ น์–ด ๊ธฐ ๋Šฅ
fliplr
flipud
rot90(A)
rot90(A,k)
reshape(A,m,n)
ํ–‰๋ ฌ์˜ ์™ผ์ชฝ๊ณผ ์˜ค๋ฅธ์ชฝ ์—ด์„ ๋ฐ”๊พธ์–ด ์ค€๋‹ค.
ํ–‰๋ น์˜ ์œ„์ชฝ๊ณผ ์•„๋ž˜์ชฝ ๋ฐฉํ–ฅ์„ ๋ฐ”๊พธ์–ด ์ค€๋‹ค.
ํ–‰๋ ฌ A๋ฅผ ๋ฐ˜์‹œ๊ณ„ ๋ฐฉํ–ฅ์„ 90ยฐํšŒ์ „์‹œํ‚จ๋‹ค.
ํ–‰๋ ฌ A๋ฅผ ๋ฐ˜์‹œ๊ณ„ ๋ฐฉํ–ฅ์œผ๋กœ k*90ยฐํšŒ์ „์‹œํ‚จ๋‹ค.
ํ–‰๋ ฌ A๋ฅผ ๊ฐ ์—ด์—์„œ ์›์†Œ๋ฅผ ์ทจํ•˜์—ฌ mร—n ํ–‰๋ ฌ์„ ๋งŒ๋“ ๋‹ค.
ใ€‹A=[1 2 3; 4 5 6; 7 8 9]
- 20 -
A=
1 2 3
4 5 6
7 8 9
ใ€‹fliplr(A)
ans =
3 2 1
6 5 4
9 8 7
ใ€‹flipud(A)
ans =
7 8 9
4 5 6
1 2 3
ใ€‹rot90(A)
ans =
3 6 9
2 5 8
1 4 7
ใ€‹B=[1 4; 2 5; 3 6]
B =
1 4
2 5
3 6
ใ€‹reshape(B,2,3)
ans =
1 3 5
2 4 6
11. ๊ธฐ๋ณธ์ ์ธ ํ–‰๋ ฌ๋“ค
โ‘  ones(n) : ๋ชจ๋“  ์›์†Œ๊ฐ€ 1์ธ n x n ํ–‰๋ ฌ์„ ๋งŒ๋“ ๋‹ค.
ones(m,n) : ๋ชจ๋“  ์›์†Œ๊ฐ€ 1์ธ m x n ํ–‰๋ ฌ์„ ๋งŒ๋“ ๋‹ค.
ones(size(A)) : ํ–‰๋ ฌ A์™€ ๊ฐ™์€ ํฌ๊ธฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ , ๋ชจ๋“  ์›์†Œ๊ฐ€ 1์ธ ํ–‰๋ ฌ์„ ๋งŒ๋“ ๋‹ค.
โ‘ก zeros(n) : ๋ชจ๋“  ์›์†Œ๊ฐ€ 0์ธ n x n ํ–‰๋ ฌ์„ ๋งŒ๋“ ๋‹ค.
zeros(m,n) : ๋ชจ๋“  ์›์†Œ๊ฐ€ 0์ธ m x n ํ–‰๋ ฌ์„ ๋งŒ๋“ ๋‹ค.
zeros(size(A)) : ํ–‰๋ ฌ A์™€ ํฌ๊ธฐ๊ฐ€ ๊ฐ™๊ณ , ๋ชจ๋“  ์›์†Œ๊ฐ€ 0์ธ ํ–‰๋ ฌ์„ ๋งŒ๋“ ๋‹ค.
โ‘ข eye(n) : n x n์˜ ๋‹จ์œ„ํ–‰๋ ฌ์„ ๋งŒ๋“ ๋‹ค.
eye(m,n) : m x n์˜ ๋‹จ์œ„ํ–‰๋ ฌ์„ ๋งŒ๋“ ๋‹ค.
- 21 -
eye(size(A)) : ํ–‰๋ ฌ A์™€ ํฌ๊ธฐ๊ฐ€ ๊ฐ™์€ ๋‹จ์œ„ํ–‰๋ ฌ์„ ๋งŒ๋“ ๋‹ค.
โ‘ฃ linspace(x1,x2) : x1๊ณผ x2 ์‚ฌ์ด์— ๊ตฌ๊ฐ„์„ ์„ ํ˜•์ ์œผ๋กœ ๋˜‘๊ฐ™์ด ๋“ฑ๋ถ„ํ•˜์—ฌ 100๊ฐœ์˜ ์›์†Œ๋ฅผ
๊ฐ€์ง„ ๋ฒกํ„ฐ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
linspace(x1,x2,n) : x1๊ณผ x2 ์‚ฌ์ด์— n๊ฐœ์˜ ์›์†Œ๋ฅผ ๊ฐ€์ง€๋„๋ก ๋ฒกํ„ฐ๋ฅผ ๋งŒ๋“ ๋‹ค.
โ‘ค logspace(a,b) : 10
a
์™€ 10
b
์˜ ๊ตฌ๊ฐ„ ๋‚ด๋ฅผ ๋Œ€์ˆ˜ํ•จ์ˆ˜์ ์œผ๋กœ ๋˜‘๊ฐ™์ด 50 ๋“ฑ๋ถ„ํ•˜์—ฌ ์—ด ๋ฒกํ„ฐ๋ฅผ
์ƒ์„ฑํ•œ๋‹ค.
ใ€‹logspace(2,4,3)
ans = 100 1000 10000
โ‘ฅ rand : 0๊ณผ 1์‚ฌ์ด์˜ ์ž„์˜์˜ ์ˆซ์ž์™€ ๊ท ์ผํ•˜๊ฒŒ ๋ถ„ํฌํ•œ ์›์†Œ๋ฅผ ๊ฐ€์ง€๋Š” ํ–‰๋ ฌ์„ ์ƒ์„ฑ
randn : ์ •๊ทœ๋ถ„ํฌ, ์ฆ‰ ํ‰๊ท ์ด 0์ด๊ณ  ํŽธ์ฐจ๊ฐ€ 1์ธ Gaussian ๋ถ„ํฌ๋ฅผ ๊ฐ€์ง€๋Š” ํ–‰๋ ฌ์„ ๋งŒ๋“ ๋‹ค.
ใ€‹rand(2,3) : ์ž„์˜์˜ ์ˆซ์ž๋ฅผ ์›์†Œ๋กœ ํ•˜๋Š” 2x3 ํ–‰๋ ฌ์„ ์ƒ์„ฑ
12. ๊ณ„์‚ฐ ์†๋„
ใ€‹format
ใ€‹d=pi;
ใ€‹d*ones(3,4) โ‘ 
ใ€‹d+zeros(3,4) โ‘ก
ใ€‹d(ones(3,4)) โ‘ข
ใ€‹repmat(d,3,4) โ‘ฃ (โ‘ ๏ผœโ‘ก๏ผœโ‘ข๏ผœโ‘ฃ, more fast)
ใ€‹tic; plot(rand(5)); toc
elapsed_time =
0.8220
13. ๋ฐฐ์—ด์—ฐ์‚ฐ
๋ฐฐ์—ด ์—ฐ์‚ฐ(array operation)์ด๋ž€ *, , /, ^ ๋˜๋Š” โ€˜ ๊ธฐํ˜ธ์— ์˜ํ•˜์—ฌ ์ด๋ฃจ์–ด์ง€๋Š” ์ผ๋ฐ˜์ ์ธ ์„ ํ˜•
ํ–‰๋ ฌ ์—ฐ์‚ฐ(linear algerbraic matrix operation)์ด ์•„๋‹Œ ํ–‰๋ ฌ์˜ ์›์†Œ์™€ ์›์†Œ ์‚ฌ์ด์— ์„ฑ๋ฆฝ๋˜๋Š”
์‚ฐ์ˆ  ์—ฐ์‚ฐ(element-by-element operation)์„ ๊ฐ€๋ฆฌํ‚จ๋‹ค. ์—ฐ์‚ฐ์ž ์•ž์— ์ (.)์„ ์ฐ์Œ์œผ๋กœ์จ ๋ฐฐ์—ด
์—ฐ์‚ฐ ๋˜๋Š” ์›์†Œ ๋Œ€ ์›์†Œ์˜ ์—ฐ์‚ฐ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.
1) ๋ฐฐ์—ด์˜ ์‚ฌ์น™ ์—ฐ์‚ฐ
โ‘  ๋ฐฐ์—ด์—ฐ์‚ฐ์˜ ๋ง์…ˆ ๋ฐ ๋บ„์…ˆ
- ์ผ๋ฐ˜์ ์ธ ํ–‰๋ ฌ ์—ฐ์‚ฐ(matrix operation)๊ณผ ๋™์ผ
โ‘ก ๋ฐฐ์—ด์—ฐ์‚ฐ์˜ ๊ณฑ์…ˆ ๋ฐ ๋‚˜๋ˆ—์…ˆ
- ๊ณฑ์…ˆ( .* ) : ๋ฐฐ์—ด์—ฐ์‚ฐ์˜ ๊ณฑ์…ˆ์„ ๋‚˜ํƒ€๋‚ด๋ฉฐ, ๋‘ ํ–‰๋ ฌ์˜ ์ฐจ์›์ด ๊ฐ™์€ ๋•Œ ๊ฐ ํ–‰๋ ฌ์˜ ๊ฐ™์€
- 22 -
์œ„์น˜์— ์žˆ๋Š” ์›์†Œ๋“ค๋ผ๋ฆฌ ๊ณฑ์…ˆ์„ ํ•˜์—ฌ ์ƒˆ๋กœ์šด ํ–‰๋ ฌ์„ ๊ตฌ์„ฑํ•œ๋‹ค.
ใ€‹a=[1 2 3; 4 5 6];
ใ€‹b=[1 3 6; 7 8 9];
ใ€‹a.*b
ans =
1 6 18
28 40 54
- ๋‚˜๋ˆ—์…ˆ : './', '.',
ใ€‹a./b
ans =
1.0000 0.6667 0.5000
0.5714 0.6250 0.6667
ใ€‹a.b
ans =
1.0000 1.5000 2.0000
1.7500 1.6000 1.5000
โ‘ข ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•œ ๊ฑฐ๋“ญ์ œ๊ณฑ : '.^'
ใ€‹x=[1 2 3];
ใ€‹y=[4 5 6];
ใ€‹x.^y
ans =
1 32 729
ใ€‹y.^2
ans =
16 25 36
ใ€‹2.^[x ; y]
ans =
2 4 8
16 32 64
2) ๊ธฐํƒ€์˜ ์—ฐ์‚ฐ
โ‘  ๊ด€๊ณ„์—ฐ์‚ฐ
- ๊ด€๊ณ„ ์—ฐ์‚ฐ์ž
. ๋‘ ํ–‰๋ ฌ์˜ ๋Œ€์‘ ์›์†Œ๋“ค์„ ๋น„๊ตํ•˜์—ฌ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ 0๊ณผ 1๋กœ ๊ตฌ์„ฑ๋œ ํ–‰๋ ฌ๋กœ ๋‚˜ํƒ€๋ƒ„
. '0' : ๊ฑฐ์ง“(false)
'1' : ์ฐธ(true)
- 23 -
MATLAB์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ด€๊ณ„์—ฐ์‚ฐ๋“ค
์—ฐ์‚ฐ์ž ์˜ ๋ฏธ
< โˆผ ๋ฏธ๋งŒ(less than)
<= โˆผ ์ดํ•˜(less than or equal)
> โˆผ ์ดˆ๊ณผ(greater than)
>= โˆผ ์ด์ƒ(greater than or equal)
== โˆผ ์™€ ๊ฐ™์Œ(equal)
โˆผ= โˆผ ์™€ ๊ฐ™์ง€ ์•Š์Œ(not equal)
ใ€‹a=magic(3);
a=
8 1 6
3 5 7
4 9 2
ใ€‹a>=5 a(1)=a(1,1) a(2)=a(2,1) a(3)=a(3,1)
ans = a(4)=a(1,2) a(5)=a(2,2) a(6)=a(3,2)
1 0 1 a(7)=a(1,3) a(8)=a(2,3) a(9)=a(3,3)
0 1 1
0 1 0
- find : ์›ํ•˜๋Š” ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์›์†Œ๋“ค์„ ์ฐพ์•„ ์ฃผ๋Š” ํ•จ์ˆ˜
ใ€‹k=find(a>=3)
k = 1
1
2
3
5
6
7
8
ใ€‹a(k)=5
a =
5 1 5
5 5 5
5 5 2
โ‘ก ๋…ผ๋ฆฌ ์—ฐ์‚ฐ(Logical operation)
'&' - and
'|' - or
- 24 -
'~' - not
ใ€‹x=[7 -2 6 3 5 10 8 7]
ใ€‹(x>5) & (x<9)
ans =
1 0 1 0 0 0 1 1
ใ€‹~(x>5)
ans =
0 1 0 1 1 0 0 0
- any(x) : ๋ฒกํ„ฐ x์˜ ์›์†Œ๋“ค ์ค‘ ํ•˜๋‚˜๋ผ๋„ 0์ด ์•„๋‹Œ ์›์†Œ๊ฐ€ ์žˆ์œผ๋ฉด 1์„ ๋Œ๋ ค์ฃผ๊ณ  ๋ชจ๋‘ 0์ผ
๋•Œ์—๋Š” 0์„ ๋Œ๋ ค์ค€๋‹ค.
ใ€‹x=[0 1 2 3]
ใ€‹any(x)
ans =
1
- all(x) : ๋ฒกํ„ฐ x์˜ ์›์†Œ๋“ค์ด ๋ชจ๋‘ 0์ด ์•„๋‹ˆ์–ด์•ผ๋งŒ 1์„, ๊ทธ๋ ‡์ง€ ์•Š๊ณ  ํ•˜๋‚˜๋ผ๋„ 0์ธ ์›์†Œ๊ฐ€
์žˆ์œผ๋ฉด 0์„ ๋Œ๋ ค์ค€๋‹ค.
ใ€‹all(x)
ans =
0
- xor(x)
ใ€‹a=[1 2 3], b=[0 1 5];
ใ€‹xor(a,b)
ans = [1 0 0]
Matlab์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ด€๊ณ„ ๋ฐ ๋…ผ๋ฆฌ ํ•จ์ˆ˜๋“ค
ํ•จ ์ˆ˜ ๊ธฐ ๋Šฅ
any
all
find
exist
isnan
isinf
finite
isempty
isstr
isglobal
issparse
๋…ผ๋ฆฌ์  ์กฐ๊ฑด
๋…ผ๋ฆฌ์  ์กฐ๊ฑด
๋…ผ๋ฆฌ๊ฐ’์˜ ๋ฐฐ์—ด ์ง€ํ‘œ๋ฅผ ์ฐพ์•„์คŒ
๋ณ€์ˆ˜์˜ ์กด์žฌ ์—ฌ๋ถ€๋ฅผ ์ ๊ฒ€
NaN์˜ ์กด์žฌ ๊ฒ€์ƒ‰
๋ฌดํ•œ๋Œ€ ๊ฐ’์˜ ์กด์žฌ ๊ฒ€์ƒ‰
์œ ํ•œํ•œ ๊ฐ’์˜ ์กด์žฌ ๊ฒ€์ƒ‰
๋นˆ ํ–‰๋ ฌ์˜ ๊ฒ€์ƒ‰
๋ฌธ์ž์—ด ๋ณ€์ˆ˜์˜ ๊ฒ€์ƒ‰
์ „์—ญ๋ณ€์ˆ˜(gloval variable)์˜ ๊ฒ€์ƒ‰
sparse ํ–‰๋ ฌ์˜ ๊ฒ€์ƒ‰
- 25 -
- Discontinuous signal
ใ€‹x=linspace(0,10,100);
ใ€‹y=sin(x);
ใ€‹z=(y>0).*y;
ใ€‹z=z+0.5*(y<0);
ใ€‹z=(x<=8).*z;
ใ€‹plot(x,z)
ใ€‹xlabel('x'), ylabel('z=f(x)');
ใ€‹title('A discontinuous signal');
0 1 2 3 4 5 6 7 8 9 10
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
14. ์ง‘ํ•ฉ๊ณผ ์ง„์ˆ˜ ๋ณ€์ˆ˜ ํ•จ์ˆ˜
1) ์ง‘ํ•ฉํ•จ์ˆ˜
- isequal : ํ–‰๋ ฌ์˜ ์ฐจ์›๊ณผ ์›์†Œ๊ฐ€ ๋ชจ๋‘ ๊ฐ™์œผ๋ฉด โ€˜1โ€™์„ ์ถœ๋ ฅ, ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด โ€˜0โ€™์„ ์ถœ๋ ฅ
ใ€‹a=rand(2,5);
ใ€‹b=rand(2,5);
ใ€‹isequal(a,b)
ans =
0
ใ€‹isequal(a,a)
ans =
1
ใ€‹a=[2:2:8,4:2:10]
a=2 4 6 8
4 6 8 10
- unique : ์ค‘๋ณต๋˜๋Š” ์›์†Œ๋ฅผ ์ œ์™ธํ•œ, ์œ ์ผํ•˜๊ฒŒ ์กด์žฌํ•˜๋Š” ์›์†Œ๋“ค์„ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ถœ๋ ฅ
ใ€‹unique(a)
ans =
2
- 26 -
4
6
8
10
- ismember(x,y) : x์˜ ์›์†Œ๊ฐ€ ์ง‘ํ•ฉ y์— ํฌํ•จ๋˜๋ฉด โ€˜1โ€™, ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด โ€˜0โ€™์„ ์ถœ๋ ฅ
ใ€‹a=1:9;
ใ€‹b=2:2:9;
ใ€‹ismember(a,b)
ans =
0 1 0 1 0 1 0 1 0
ใ€‹ismember(b,a)
ans =
1 1 1 1
ใ€‹A=eye(3);
ใ€‹B=ones(3);
ใ€‹ismember(A,B); ?
ใ€‹ismember(B,A); ?
- union(ํ•ฉ์ง‘ํ•ฉ)
ใ€‹a=1:9;
ใ€‹b=[2 4 6 8 10]
ใ€‹union(a,b)
ans = [ 1 2 3 4 5 6 7 8 9 10]
- intersect(a,b)
ใ€‹intersect(a,b)
ans = [2 4 6 8]
- setdiff(x,y) : x์›์†Œ ์ค‘์—์„œ y์— ํฌํ•จ๋˜์ง€ ์•Š๋Š” ์›์†Œ
ใ€‹setdiff(a,b)
ans =
1 3 5 7 9
ใ€‹setdiff(b,a)
ans =
10
2) ์ง„์ˆ˜๋ณ€ํ™˜
- dec2bin(x) : 10์ง„์ˆ˜ x๋ฅผ 2์ง„์ˆ˜๋กœ ๋ณ€ํ™˜, bin2dec(y) : 2์ง„์ˆ˜ y๋ฅผ 10์ง„์ˆ˜๋กœ ๋ณ€ํ™˜
ใ€‹a=dec2bin(17)
a = 10001
ใ€‹class(a)
ans = char
ใ€‹bin2dec(a)
ans = 17
ใ€‹class(ans)
- 27 -
ans = double
- dec2hex(x) : 2์ง„์ˆ˜๋ฅผ 16์ง„์ˆ˜๋กœ ๋ณ€ํ™˜, hex2dec(y) : 16์ง„์ˆ˜๋ฅผ 2์ง„์ˆ˜๋กœ ๋ณ€ํ™˜
ใ€‹a=dec2hex(2047)
a = 7FF
ใ€‹class(a)
ans = char
ใ€‹hex2dec(a)
ans = 2047
ใ€‹class(ans)
ans = double
- dec2base(x,y) : ์‹ญ์ง„์ˆ˜ x๋ฅผ y์ง„์ˆ˜์œผ๋กœ ๋ณ€ํ™˜, base2dec(x,y) : y์ง„์ˆ˜ x๋ฅผ 10์ง„์ˆ˜๋กœ ๋ณ€ํ™˜
ใ€‹a=dec2base(26,3)
a = 222
ใ€‹class(a)
ans = char
ใ€‹base2dec(a,3)
ans = 26
ใ€‹class(ans)
ans = double
15. ๋ฌธ์ž์—ด(character strings)
ใ€‹t='How about this character string?'
t =
How about this character string?
ใ€‹size(t)
ans = 1 32
ใ€‹whos
Name Size Bytes Class
ans 1x2 16 double array
t 1x32 64 char array
Grand total is 34 elements using 80 bytes
ใ€‹u=double(t)
u =
Columns 1 through 12
72 111 119 32 97 98 111 117 116 32 116 104
Columns 13 through 24
105 115 32 99 104 97 114 97 99 116 101 114
Columns 25 through 32
32 115 116 114 105 110 103 63
ใ€‹char(u)
- 28 -
ans =
How about this character string?
ใ€‹a=double('a')
a = 97
ใ€‹char(a)
ans = a
ใ€‹u=t(16:24)
u = character
ใ€‹u=t(24:-1:16)
u = retcarahc
- int2str : ์ •์ˆ˜๊ฐ’์„ string์œผ๋กœ ๋ณ€ํ™˜
ใ€‹int2str(eye(3))
ans = 1 0 0
0 1 0
0 0 1
ใ€‹size(ans)
ans = 3 7
ใ€‹num2str(rand(2,4));
ใ€‹size(ans)
ans = 2 43
ใ€‹b='Peter'
ใ€‹findstr(b,'t')
ans = 3
ใ€‹findstr(b,'e')
ans = 2 4
16. Data Analysis
temps.dat
12 8 18
15 9 22
12 5 19
14 8 23
12 6 22
11 9 19
15 9 15
8 10 20
19 7 18
12 7 18
14 10 19
11 8 17
9 7 23
8 8 19
15 8 18
8 9 20
- 29 -
10 7 17
12 7 22
9 8 19
12 8 21
12 8 20
10 9 17
13 12 18
9 10 20
10 6 22
14 7 21
12 5 22
13 7 18
15 10 23
13 11 24
12 12 22
ใ€‹load temps.dat
ใ€‹day=1:31;
ใ€‹plot(day,temps);
ใ€‹xlabel('๋‚ ์งœโ€˜), ylabel('์˜จ๋„โ€™),
ใ€‹title('์˜จ๋„๋ณ€ํ™”โ€˜);
ใ€‹avg_temp=mean(temps); %๊ฐ ๋„์‹œ์˜ ์˜จ๋„ ํ‰๊ท ์„ ๊ตฌํ•œ๋‹ค.
avg_temp =
11.9677 8.2258 19.8710
ใ€‹avg_avg=mean(avg_temp) %์ „์ฒด ์˜จ๋„ ํ‰๊ท ์„ ๊ตฌํ•œ๋‹ค.
avg_avg =
13.3548
โ‘  ใ€‹for c=1:3 %์˜จ๋„์ฐจ๋ฅผ ๊ตฌํ•œ๋‹ค.
tdev(:,c)=temps(:,c)-avg_temp(c);
end
- 30 -
โ‘ก ใ€‹tdev=temps-avg_temp(ones(31,1),:)
โ‘ข ใ€‹tdev=temps-repmat(avg_temp,31,1)
ใ€‹max_temp=max(temps) %๊ฐ ๋„์‹œ์˜ ์ตœ๋Œ€ ์˜จ๋„๋ฅผ ๊ตฌํ•œ๋‹ค.
ใ€‹[max_temp, maxday]=max(temps)
max_temp =
19 12 24
maxday =
9 23 30
ใ€‹min_temp=min(temps) %๊ฐ ๋„์‹œ์˜ ์ตœ์†Œ ์˜จ๋„๋ฅผ ๊ตฌํ•œ๋‹ค.
ใ€‹[min_temp,minday]=min(temps)
min_temp =
8 5 15
minday =
8 3 7
ใ€‹s_dev=std(temps) %๊ฐ ๋„์‹œ์˜ ํ‘œ์ค€ํŽธ์ฐจ๋ฅผ ๊ตฌํ•œ๋‹ค.
s_dev =
2.5098 1.7646 2.2322
ใ€‹median(temps) %์ค‘๊ฐ„๊ฐ’์„ ํ‘œ์‹œํ•œ๋‹ค.
ans =
12 8 20
ใ€‹dail_change=diff(temps) %๋งค์ผ๋งค์ผ์˜ ์˜จ๋„์ฐจ๋ฅผ ๊ตฌํ•œ๋‹ค.
17. ๋‹คํ•ญ์‹์˜ ๊ณ„์‚ฐ
1) ๊ทผ(roots)
- x
4
-12x
3
+25x+116์˜ ๊ทผ์„ ๊ตฌํ•˜๊ณ ์ž ํ•œ๋‹ค.
ใ€‹p=[1 -12 0 25 116];
ใ€‹r=roots(p)
r =
11.7473
2.7028
-1.2251 + 1.4672i
-1.2251 - 1.4672i
ใ€‹pp=poly(r)
pp =
1.0000 -12.0000 -0.0000 25.0000 116.0000
2) ๋‹คํ•ญ์‹์˜ ๊ณฑ
- a(x)=x3
+2x2
+3x+4, b(x)= x3
+4x2
+9x+16
- 31 -
ใ€‹a=[1 2 3 4], b=[1 4 9 16]
ใ€‹c=conv(a,b)
c =
1 6 20 50 75 84 64
๋”ฐ๋ผ์„œ ๋‘ ๋‹คํ•ญ์‹์˜ ๊ณฑ์€ c(x)= x
6
+5x
5
+20x
4
+50x
3
+75x
2
+84x+64๊ฐ€ ๋œ๋‹ค.
3) ๋‹คํ•ญ์‹์˜ ํ•ฉ
- a(x)=x3
+2x2
+3x+4, b(x)= x3
+4x2
+9x+16
ใ€‹a=[1 2 3 4], b=[1 4 9 16]
ใ€‹d=a+b
d =
2 6 12 20
๋”ฐ๋ผ์„œ ๋‘ ๋‹คํ•ญ์‹์˜ ํ•ฉ์€ d(x)= 2x3
+6x2
+12x+20์ด ๋œ๋‹ค.
- ์ฐจ์ˆ˜๊ฐ€ ๋‹ค๋ฅธ ๋‹คํ•ญ์‹์˜ ํ•ฉ
ใ€‹e=c+[0 0 0 d]
e =
1 6 20 52 81 96 84
e(x)= x6
+5x5
+20x4
+52x3
+81x2
+96x+84๊ฐ€ ๋œ๋‹ค.
4) ๋‹คํ•ญ์‹์˜ ๋‚˜๋ˆ—์…ˆ
ใ€‹[q,r]=deconv(c,b)
q = โ† quotient polynomial
1 2 3 4
r = โ† remainder
0 0 0 0 0 0 0
5) ๋‹คํ•ญ์‹์˜ ๋ฏธ๋ถ„
- g(x)= x
6
+6x
5
+20x
4
+48x
3
+69x
2
+72x+44๋ผ๊ณ  ํ•˜๋ฉด
g'(x)= 6x5
+30x4
+80x3
+144x2
+138x+72๊ฐ€ ๋œ๋‹ค.
ใ€‹g=[1 6 20 48 69 72 44];
ใ€‹h=polyder(g)
h =
6 30 80 144 138 72
6) evaluation
ใ€‹x=linspace(-1,3);
ใ€‹p=[1 4 -7 -10]
p(x)=x
3
+4x
2
-7x-10
ใ€‹v=polyval(p,x);
- 32 -
ใ€‹plot(x,v),title('x{^3} + 4x{^2} - 7x -10'), xlabel('x')
7) Rational Polynomials
n(x)
d(x)
=
N1x
m
+N2x
m - 1
+...+Nm + 1
D1xn
+D2xn - 1
+...+Dn + 1
ใ€‹n=[1 -10 100]; % ๋ถ„์ž
ใ€‹d=[1 10 100 0]; % ๋ถ„๋ชจ
ใ€‹z=roots(n); % Zero of n(x)/d(x)
z =
5.0000 + 8.6603i
5.0000 - 8.6603i
ใ€‹p=roots(d); % Pole of n(x)/d(x)
p =
0
-5.0000 + 8.6603i
-5.0000 - 8.6603i
ใ€‹[nd,dd]=polyder(n,d)
nd =
-1 20 -100 -2000 -10000
dd =
1 20 300 2000 10000 0 0
- [R,P,K] = residue(B,A)
B(s)
A(s)
=
R(1)
s-P(1)
+
R(2)
s-P(2)
+....+K(s)
ใ€‹[r,p,k]=residue(n,d)
r =
0.0000 + 1.1547i
0.0000 - 1.1547i
- 33 -
1.0000
p =
-5.0000 + 8.6603i
-5.0000 - 8.6603i
0
k =
[]
โˆด n(x)
d(x)
=
1.1547i
x+5-8.6603i
+
-1.1547i
x+5+8.8803i
+
1
x
ใ€‹[nn,dd]=residue(r,p,k)
nn =
1.0000 -10.0000 100.0000
dd =
1.0000 10.0000 100.0000 0
18. ํ“จ๋ฆฌ์— ๋ณ€ํ™˜(fft)
์ฃผ์–ด์ง„ x(t)๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์„ ๋•Œ
x(t) = 0 ; t < 0.1s
= e
- ( t - 0.1)
0.176
sin[
2ฯ€(t-0.1)
0.160
] ; 0.1 โ‰ค t < 1.024s
t=0:0.001:1.023;
T=0.001;
k=101:1024;
z=zeros(1,100)
x=[z exp(-(k*T-0.1)/0.176).*sin(2*pi*(k*T-0.1)/0.160)];
subplot(2,1,1)
plot(t,x); grid on;
xlabel('Time(s)')
ylabel('Amplitude');
title('Waveform')
X=fft(x)
amp_spect=sqrt(X.*conj(X))
freq=(0:60)/(1024*0.001)
subplot(2,1,2);
plot(freq,amp_spect(1:61),'r*'); grid on
xlabel('Frequency (Hz)')
ylabel('Amplitude')
- 34 -
19. Curve fitting
ใ€‹x=[0 .1 .2 .3 .4 .5 .6 .7 .8 .9 1];
ใ€‹y=[-.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2];
ใ€‹n=2;
ใ€‹p=polyfit(x,y,n)
p =
-9.8108 20.1293 -0.0317
โˆด y=-9.8108x2
+20.1293x-0.0317
ใ€‹xi=linspace(0,1,100);
ใ€‹yi=polyval(p,xi);
ใ€‹plot(x,y,'-o',xi,yi,'--');
ใ€‹title('Second order Curve fitting')
- 35 -
ใ€‹pp=polyfit(x,y,10)
ใ€‹format short e
ใ€‹pp.'
ans =
-4.6436e+005
2.2965e+006
-4.8773e+006
5.8233e+006
-4.2948e+006
2.0211e+006
-6.0322e+005
1.0896e+005
-1.0626e+004
4.3599e+002
-4.4700e-001
ใ€‹y10=polyval(pp,xi);
ใ€‹plot(x,y,'o',xi,yi,'--',xi,y10)
ใ€‹xlabel('x'),ylabel('y=f(x)')
ใ€‹title('2nd and 10th order curve fitting')
- 36 -
19. ์ตœ์†Œ์ž์Šน๋ฒ•(Least Square Method)
ํšŒ๊ท€๋ถ„์„(regression analysis)์„ ์œ„ํ•œ matlab ํ•จ์ˆ˜์ค‘์—๋Š” polyfit ๋ช…๋ น์–ด๊ฐ€ ์žˆ๋Š”๋ฐ, polyfit
๋Š” ์ตœ์†Œ์ž์Šน๋ฒ•์— ๊ทผ๊ฑฐ๋ฅผ ํ•˜๊ณ  ์žˆ๋‹ค.
์•„๋ž˜์˜ ๋ฐ์ดํ„ฐ์— ๊ฐ€์žฅ ๊ทผ์ ‘ํ•œ ์ง์„ ์€ y=mx+b์˜ ํ˜•ํƒœ๊ฐ€ ๋œ๋‹ค.
x y
0
5
10
2
6
11
์ตœ์†Œ์ž์Šน์˜ ์ด๋ก ์— ๋”ฐ๋ฅด๋ฉด, ๋ณด๊ฐ„๋œ ์ง์„ ๊ณผ ๋ฐ์ดํ„ฐ ์ ๋“ค ์‚ฌ์ด์—์„œ ์ˆ˜์ง์˜ ์ฐจ์ด๊ฐ’์„ ์ œ๊ณฑํ•˜
์—ฌ ํ•ฉํ•œ J๊ฐ’์ด ์ตœ์†Œํ™”๋˜๋Š” ๊ฐ€์žฅ ๊ทผ์ ‘ํ•œ ์ง์„ ์„ ๊ธ‹๋Š”๋‹ค. ์ด๋“ค ์ฐจ์ด๊ฐ’๋“ค์€ ๋‚˜๋จธ์ง€์˜ค์ฐจ
(residues)๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ์œ„์˜ ๋ฐ์ดํ„ฐ์—์„œ๋Š” 3๊ฐœ์˜ ๋ฐ์ดํ„ฐ ์ ์ด ์กด์žฌํ•˜๋ฉฐ, ์—ฌ๊ธฐ์„œ J๊ฐ’์€ ๋‹ค์Œ
์˜ ์‹์— ์˜ํ•ด ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.
J= โˆ‘
3
i= 1
(mxi +b-yi)2
ํ‘œ์—์„œ ์ฃผ์–ด์ง„ ์ž๋ฃŒ๊ฐ’(xi, yi)์„ ๋Œ€์ž…ํ•˜์—ฌ ๋‹ค์Œ์˜ ์‹์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.
J = (0*m+b-2)2
+(5*m+b-6)2
+(10*m+b-11)2
์—ฌ๊ธฐ์„œ, J๊ฐ€ ์ตœ์†Œ๊ฐ’์„ ๊ฐ–๋Š” m, b์˜ ๊ฐ’์€ โˆ‚J/โˆ‚m= 0,โˆ‚J/โˆ‚b= 0์˜ ์กฐ๊ฑด์œผ๋กœ๋ถ€ํ„ฐ ๊ณ„์‚ฐํ•œ๋‹ค.
์ด ์กฐ๊ฑด๋“ค์— ์˜ํ•ด์„œ ์•„๋ž˜์˜ ๋‘ ์‹์œผ๋กœ๋ถ€ํ„ฐ ๋ฏธ์ง€์ˆ˜ m, b๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.
250m+30b=280, 30m+6b=38
๊ทธ ๊ฒฐ๊ณผ๋Š” m=0.9, b=11/6์ด๋‹ค. ๋”ฐ๋ผ์„œ, ์ตœ์†Œ์ž์Šน๋ฒ•์— ์˜ํ•œ ์ตœ์ ์˜ ์ง์„ ์„ y=0.9x+11/6์ด
๋œ๋‹ค. ์ด ๋ฐฉ์ •์‹์— x ๋ฐ์ดํ„ฐ 0, 5, 10์„ ์ž…๋ ฅํ•˜๋ฉด y์˜ ๊ฐ’์€ ๊ฐ๊ฐ 1.833, 6.333 10.8333์ด ๋œ
๋‹ค. ๋”ฐ๋ผ์„œ ํ‘œ์˜ y์˜ ๊ฐ’(y=2, 6, 11)๊ณผ๋Š” ์ฐจ์ด๊ฐ€ ์žˆ๋Š”๋ฐ ์ด๊ฒƒ์€ ์ง์„ ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์™„์ „ํ•˜๊ฒŒ
๊ทผ์‚ฌํ™”(fix)๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. J์˜ ๊ฐ’์„ ๊ตฌํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.
J= (1.833-2)2
+(6.333-6)2
+(10.8333-11)2
= 0.16656689
๋‹ค์Œ์€ ์ฃผ์–ด์ง„ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ 1์ฐจ์—์„œ 4์ฐจ๊นŒ์ง€์˜ ๋‹คํ•ญ์‹์„ ๊ตฌํ•˜๋ฉฐ, ๊ฐ ๋‹คํ•ญ์‹์˜ J๊ฐ’์„ ๊ณ„
์‚ฐํ•œ๋‹ค.
x 1 2 3 4 5 6 7 8 9
y 5 6 10 20 28 33 34 36 42
<curvefit_test.m>
close all, clear all
x=[1:9];
y=[5,6,10,20,28,33,34,36,42];
xp=[1:0.01:9];
for k=1:4
yp(k,:)=polyval(polyfit(x,y,k),xp);
J(k)=sum((polyval(polyfit(x,y,k),x)-y).^2);
- 37 -
end
subplot(2,2,1)
plot(xp,yp(1,:),x,y,'o'),axis([0 10 0 50])
xlabel('x'),ylabel('y'),title('First Degree')
subplot(2,2,2)
plot(xp,yp(2,:),x,y,'o'),axis([0 10 0 50])
xlabel('x'),ylabel('y'),title('Second Degree')
subplot(2,2,3)
plot(xp,yp(3,:),x,y,'o'),axis([0 10 0 50])
xlabel('x'),ylabel('y'),title('Third Degree')
subplot(2,2,4)
plot(xp,yp(4,:),x,y,'o'),axis([0 10 0 50])
xlabel('x'),ylabel('y'),title('Fourth Degree')
disp(J)
ใ€‹curvefit_test
J =
71.5389 56.6727 41.8838 4.6566
ex) ๋‹ค์Œ ์ฃผ์–ด์ง„ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•˜์—ฌ 1์ฐจโˆผ4์ฐจ ๋‹คํ•ญ์‹์„ ๊ตฌํ•˜์—ฌ ๋„์‹œํ•˜๊ณ  ๊ทธ๋•Œ์˜ ๊ณ„์ˆ˜๊ฐ’๊ณผ
J๊ฐ’์„ ํ™•์ธํ•˜์‹œ์˜ค.
x 0 1 2 3 4 5
y 0 1 60 40 41 47
- 38 -
20. ๋ณด๊ฐ„๋ฒ•(interpolation)
์ง€์ •ํ•œ ๋ณต์ˆ˜์˜ ์ ์„ ์ง€๋‚˜๋Š” ๊ณก์„ ๊ณผ, ์ด๋“ค์˜ ์  ๊ฐ€๊นŒ์ด๋ฅผ ์ง€๋‚˜๋Š” ๋งค๋„๋Ÿฌ์šด ๊ณก์„ ์„ ๊ตฌํ•˜๋Š”
๊ฒƒ์„ ๋ณด๊ฐ„์ด๋ผ ํ•œ๋‹ค.
1) 1์ฐจ์› ๋ฐ์ดํ„ฐ์˜ ๋ณด๊ฐ„
1์ฐจ์› ๋ฐ์ดํ„ฐ์˜ ๋ณด๊ฐ„์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์œผ๋กœ์จ ํ•จ์ˆ˜ โ€˜interp1'๋ช…๋ น์ด ์žˆ๋‹ค. ์ด ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉ
ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์„ธ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.
linear : ์„ ํ˜• ๋ณด๊ฐ„๋ฒ•
cubic : 3์ฐจ ๊ณก์„  ๋ณด๊ฐ„๋ฒ•
spline : 3์ฐจ ๊ณก์„  ์Šคํ”Œ๋ผ์ธ ๋ณด๊ฐ„๋ฒ•
- yi=interp1(x,y,xi) : ๋ฒกํ„ฐ x์™€ ๋ฒกํ„ฐ y์—์„œ ๋ณด๊ฐ„๋ฒ•์— ์˜ํ•ด์„œ ๊ฒฐ์ •๋œ ๊ฒƒ์œผ๋กœ์„œ
๋ฒกํ„ฐ xi์— ํ•ด๋‹น๋˜๋Š” ๋ฒกํ„ฐ yi๋ฅผ ๋˜๋Œ๋ฆฐ๋‹ค.
ใ€‹x=0:0.1:1;
ใ€‹y=[4 3 2 1 2 3 2 1 2 3 4];
ใ€‹xi=0:0.01:1;
ใ€‹yi=interp1(x,y,xi);
ใ€‹plot(x,y,'o',xi,yi)
ใ€‹title('Graph output using interp1(x,y,xi) function')
- yi=interp1(x,y,xi,'method')
ใ€‹x=0:0.1:1;
ใ€‹y=[4 3 2 1 2 3 2 1 2 3 4];
ใ€‹xi=0:0.01:1.5;
ใ€‹yi=interp1(x,y,xi,'spline');
ใ€‹plot(x,y,'o',xi,yi)
- 39 -
2) 2์ฐจ์› ๋ฐ์ดํ„ฐ์˜ ๋ณด๊ฐ„
2์ฐจ์› ๋ฐ์ดํ„ฐ์˜ ๋ณด๊ฐ„์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์œผ๋กœ์จ ํ•จ์ˆ˜ โ€˜interp2'๋ช…๋ น์ด ์žˆ๋‹ค. ์ด ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉ
ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‘๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.
linear : ์„ ํ˜•๋ณด๊ฐ„๋ฒ•
cubic : 3์ฐจ์› ๊ณก์„  ๋ณด๊ฐ„๋ฒ•
- zi=interp2(x,y,z,xi,yi)
zi=interp2(x,y,z,xi,yi,'method')
ใ€‹[x,y]=meshgrid(-5:0.5:5);
ใ€‹z=peaks(x,y);
ใ€‹[xi,yi]=meshgrid(-5:0.1:5);
ใ€‹zi=interp2(x,y,z,xi,yi);
ใ€‹mesh(x,y,z)
ใ€‹hold on
ใ€‹mesh(xi,yi,zi+20)
ใ€‹hold off
ใ€‹title('Graph output using interp2 fundtion')
- 40 -
3) 3์ฐจ ์Šคํ”Œ๋ผ์ธ ๋ณด๊ฐ„
3์ฐจ ๊ณก์„  ์Šคํ”Œ๋ผ์ธ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๊ฐ„ํ•œ๋‹ค.
- yi=spline(x,y,xi)
- ์–ด๋–ค ์ง€์—ญ์˜ ์‹œ๊ฐ„(t)์— ๋”ฐ๋ฅธ ์˜จ๋„(y)๋ฅผ ๋‚˜ํƒ€๋‚ธ ํ‘œ์ด๋‹ค.
x 7 9 11 12
y 49 57 71 75
<spline1.m>
x=[7 9 11 12];
y=[49 57 71 75];
x_int=[7:0.01:12];
y_int=spline(x,y,x_int);
plot(x,y,'o',x,y,'--',x_int,y_int);
xlabel('Time(hrs)'), ylabel('Temperature(F)')
axis([7 12 45 80])
์˜ค์ „ 8์‹œ์˜ ์˜จ๋„๋ฅผ ์Šคํ”Œ๋ผ์ธ ๋‹คํ•ญ์‹์— ์˜ํ•ด์„œ ์ถ”์ •ํ•˜๋ฉด 51.2ยฐF์ด๋‹ค.(์„ ํ˜•๋ณด๊ฐ„:53ยฐF)
<spline2.m>
x=0:6;
y=[1 0.5403 -0.4161 -0.99 -0.6536 0.2837 0.9602];
xi=0:0.2:6;
yi=spline(x,y,xi);
plot(x,y,'g')
hold on
disp('****** ํ‚ค๋ณด๋“œ๋ฅผ ์ž…๋ ฅํ•˜์‹œ์˜ค ********')
pause
plot(x,y,'ro')
- 41 -
disp('****** ํ‚ค๋ณด๋“œ๋ฅผ ์ž…๋ ฅํ•˜์‹œ์˜ค ********')
pause
plot(xi,yi,'r')
hold off
title('Graph output using spline function')
- 42 -
์ œ 3 ์žฅ ํŒŒ์ผ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ
Matlab ๋ช…๋ น๋“ค ์ค‘์—์„œ โ€˜save'์™€ โ€˜load'๋ช…๋ น์€ Matlab ์ž‘์—… ๊ณต๊ฐ„์ƒ์˜ ๋‚ด์šฉ์„ ๊ฐ๊ฐ ํŒŒ์ผ๋กœ
์ €์žฅํ•˜๊ณ  ์ €์žฅ๋œ ํŒŒ์ผ์„ ์ž‘์—…๊ณต๊ฐ„์œผ๋กœ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. matlab์€ ์ด ์™ธ์— ํŒŒ์ผ์„
๊ด€๋ฆฌํ•˜๊ณ  ์™ธ๋ถ€ ํ”„๋กœ๊ทธ๋žจ์„ ์ˆ˜ํ–‰ํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ž๋ฃŒ์˜ ์ž…์ถœ๋ ฅ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.
1. ๊ธฐ๋ณธ์ ์ธ ํŒŒ์ผ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ
Matlab ํ”„๋กœ๊ทธ๋žจ์„ ํ™œ์„ฑํ™”์‹œํ‚จ ํ›„์— ์‚ฌ์šฉ์ž๊ฐ€ ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•˜์—ฌ ์ž‘์—…ํ•˜๋Š” ๋ชจ๋“  ๊ณผ์ •์„
์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰, ํ‚ค๋ณด๋“œ์˜ ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ „๋ถ€ ์ €์žฅํ•˜๊ณ ์ž ํ•œ๋‹ค๋ฉด ์•„๋ž˜์™€
๊ฐ™์ด โ€˜diary'๋ช…๋ น์„ ์ด์šฉํ•˜๋ฉด ๋œ๋‹ค.
ใ€‹diary file_name
์œ„์™€ ๊ฐ™์ด ํ•˜๋ฉด ์ดํ›„๋ถ€ํ„ฐ์˜ ๋ชจ๋“  ํ‚ค๋ณด๋“œ์˜ ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ์ด ์ „๋ถ€ file_name์— ์ €์žฅ๋œ๋‹ค. ๋˜ํ•œ
๋” ์ด์ƒ์˜ ์ €์žฅ์„ ์›ํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ์—๋Š” โ€˜diary off'๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋œ๋‹ค.
ใ€‹diary off
๋˜ํ•œ, 'dir', 'type', 'delete' ๋ฐ โ€˜cd'์™€ ๊ฐ™์€ ๋ช…๋ น๋“ค์€ ์ผ๋ฐ˜์ ์ธ ์šด์˜ ์ฒด์ œ ๋ช…๋ น๋“ค์„ ๊ตฌํ˜„
ํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ๋ช…๋ น๋“ค์€ ๋Œ€๋ถ€๋ถ„ ๊ฒฝ๋กœ๋ช…, ์™€์ผ๋“œ ์นด๋“œ(wildcard; ๋Œ€ํ‘œ๋ฌธ์ž) ๋ฐ ๋“œ๋ผ์ด๋ธŒ ์ง€์ •์ž
(drive designator)๋ฅผ ์ผ๋ฐ˜์ ์ธ ๋ฐฉ์‹์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
Matlab Ms-Dos Unix Vax/Vms
dir(๋˜๋Š” ls)
type
delete
cd
dir
type
del
chdir(๋˜๋Š” cd)
ls
cat
rm
cd
dir
type
delete
set default
matlab์—์„œ๋Š” โ€˜!โ€™๋ฌธ์ž๋ฅผ ์ด์šฉํ•ด์„œ ์™ธ๋ถ€ ํ”„๋กœ๊ทธ๋žจ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋Š๋‚Œํ‘œ(!)๋Š” โ€˜์‰˜ ์ดํƒˆ
(shell escape)'์„ ์˜๋ฏธํ•˜๋ฉฐ, ๋Š๋‚Œํ‘œ ์ดํ›„์— ์ž…๋ ฅ๋˜๋Š” ๋ฌธ์ž๋“ค์€ ์šด์˜์ฒด์ œ์— ๋Œ€ํ•œ ๋ช…๋ น์œผ๋กœ ์ธ
์‹๋œ๋‹ค. ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์€ Matlab์„ ์ค‘์ง€ํ•˜์ง€ ์•Š๊ณ  ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ฑฐ๋‚˜ ๊ธฐํƒ€์˜ ๋‹ค๋ฅธ ์ž‘์—…์„
์ˆ˜ํ–‰ํ•˜๋Š”๋ฐ ๋Œ€๋‹จํžˆ ์œ ์šฉํ•˜๋‹ค.
ใ€‹!copy c:*.bat d:
ใ€‹!dir
ใ€‹!help
2. ๋‚ด๋ถ€ ํŒŒ์ผ์˜ ์ž…ใ†์ถœ๋ ฅ
Matlab ํ”„๋กœ๊ทธ๋žจ์˜ ๊ณ„์‚ฐ ๊ฒฐ๊ณผ๋ฅผ matlab์˜ ๋‚ด๋ถ€ file๋กœ ์ถœ๋ ฅํ•˜๊ฑฐ๋‚˜, ์ด๋ฏธ file์— ๋“ค์–ด์žˆ๋Š”
- 43 -
๊ฒฐ๊ณผ๋ฅผ ์ž…๋ ฅํ•˜๊ธฐ ์œ„ํ•œ ๋ช…๋ น์–ด๊ฐ€ ์žˆ๋‹ค. ์ฆ‰ โ€˜save'๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ˜„์žฌ ๋ฉ”๋ชจ๋ฆฌ ์ƒ์˜ ๋ชจ๋“ 
๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.
ใ€‹x=[1 3 5 7 9];
ใ€‹y=1:0.1:2;
ใ€‹save % matlab.mat๋กœ ์ €์žฅ
ใ€‹save samp1e1 % sample1.mat๋กœ ์ €์žฅ
ใ€‹save sample2.dat x % sample2.dat์— ๋ณ€์ˆ˜ x๊ฐ’์„ ์ €์žฅ
ใ€‹save sample3.dat y -ascii % sample3.dat์— ๋ณ€์ˆ˜ y๊ฐ’์„ ascii๊ฐ’์œผ๋กœ ์ €์žฅ
ใ€‹save sample4.dat y -ascii -double % sample4.dat์— ๋ณ€์ˆ˜ y๊ฐ’์„ double ascii๋กœ ์ €์žฅ
ใ€‹load file_name % file_name์„ ์ž‘์—…๊ณต๊ฐ„์ƒ์œผ๋กœ ๋ถˆ๋Ÿฌ์˜ด
โ€˜save.m'ํ•จ์ˆ˜์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์˜ต์…˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒƒ๋“ค์ด ์žˆ๋‹ค.
options option์— ๋”ฐ๋ผ ์ €์žฅ๋˜๋Š” ํ˜•์‹
-ascii
-ascii -double
-ascii -tabs
-ascii -double -tabs
8-digit Ascii format์œผ๋กœ ์ €์žฅํ•œ๋‹ค.
16-digit Ascii format์œผ๋กœ ์ €์žฅํ•œ๋‹ค.
tab์— ์˜ํ•ด์„œ ๋ถ„๋ฆฌ๋œ ๋ฐ์ดํ„ฐ๋ฅผ 8-digit Ascii ํ˜•์‹์œผ๋กœ
์ €์žฅํ•œ๋‹ค.
tab์— ์˜ํ•ด์„œ ๋ถ„๋ฆฌ๋œ ๋ฐ์ดํ„ฐ๋ฅผ 16-digit Ascii ํ˜•์‹์œผ๋กœ
์ €์žฅํ•œ๋‹ค.
ใ€‹exist('sample1.mat','file') % ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ์— sample1.mat ํŒŒ์ผ์ด ์žˆ๋Š”๊ฐ€๋ฅผ ๊ฒ€์‚ฌ
ans = 2
ใ€‹type sample3.dat;
ใ€‹whos -file matlab.mat % sample2.dat ํŒŒ์ผ์— ์ €์žฅ๋œ ๋ณ€์ˆ˜์˜ ์ •๋ณด๋ฅผ ์ฝ์–ด์˜จ๋‹ค.
Name Size Bytes Class
x 1x5 40 double array
y 1x11 88 double array
Grand total is 16 elements using 128 bytes
3. ์™ธ๋ถ€ ํŒŒ์ผ์˜ ์ž…ใ†์ถœ๋ ฅ
Matlab ํ”„๋กœ๊ทธ๋žจ์˜ ์™ธ๋ถ€ file ์ž…์ถœ๋ ฅ์€ ๋‹ค๋ฅธ ํ˜•์‹์œผ๋กœ ์ €์žฅ๋œ ์ž๋ฃŒ๋“ค์„ ์ฝ์–ด ๋“ค์ด๊ฑฐ๋‚˜
Matlab ํ”„๋กœ๊ทธ๋žจ์—์„œ ์ƒ์„ฑ๋œ ์ž๋ฃŒ๋“ค์„ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์š”๊ตฌํ•˜๋Š” ํ˜•์‹์œผ๋กœ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ
๋„๋ก ํ•ด์ค€๋‹ค.
1) ASCII ๋ฐ์ดํ„ฐ ํŒŒ์ผ์˜ ์ž…ใ†์ถœ๋ ฅ
- ์™ธ๋ถ€ ํŒŒ์ผ์„ ๋‹ค๋ฃฐ ๋•Œ๋Š” 'fopen'๋ช…๋ น์–ด์— ์˜ํ•ด์„œ File์„ ์—ฐ๋‹ค.
ใ€‹fid=fopen('data.dat','r')
fid = 3
- 44 -
r : ์ž๋ฃŒ๋ฅผ ์ฝ์–ด ๋“ค์ด๋Š” ๊ฒƒ์„ ์ง€์ •(read)
w : ์ž๋ฃŒ๋ฅผ ์“ฐ๋Š” ๊ฒƒ์„ ์ง€์ •(write)
a : ์ž๋ฃŒ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ ์ง€์ •(appending)
r+ : ์ž๋ฃŒ๋ฅผ ์ฝ๊ณ  ์“ฐ๋Š” ๊ฒƒ์„ ์ง€์ •
file์ด ์—ด๋ฆฌ๋ฉด fid๋Š” 3์ด์ƒ์˜ ๊ฐ’์ด ๋˜๊ณ , ์—ด๋ฆฌ์ง€ ์•Š์œผ๋ฉด fid๋Š” -1์ธ ๊ฐ’์ด ๋œ๋‹ค. ๋‹ค์‹œ ๋‹ค๋ฅธ
file์„ ์—ด๋ฉด fid์˜ ๊ฐ’์€ ์ฆ๊ฐ€ํ•˜์—ฌ 4์˜ ๊ฐ’์ด ๋œ๋‹ค. ์ด์™€ ๊ฐ™์ด File์„ ์—ด ๋•Œ๋งˆ๋‹ค fid์˜ ๊ฐ’์€ ์ฆ
๊ฐ€ํ•œ๋‹ค. file์„ ์—ด์–ด์„œ ์ž‘์—…์„ ์™„๋ฃŒํ•œ ํ›„์—๋Š” โ€˜fclose'๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ fid์— ๊ด€๊ณ„ํ•œ ์™ธ๋ถ€
file์„ ๋‹ซ์•„์•ผ ํ•œ๋‹ค. ํŒŒ์ผ์„ ๋‹ซ์•„ ์ฃผ๋Š”๋ฐ ์„ฑ๊ณตํ•˜๋ฉด โ€™0โ€˜์„ ๋Œ๋ ค์ฃผ๊ณ , ์‹คํŒจํ•˜๋ฉด โ€™-1โ€˜์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
ใ€‹status=fclose(fid) : ํŒŒ์ผ์ด ํ•˜๋‚˜๋งŒ ์—ด๋ ค ์žˆ์„ ๋•Œ.
status = 0
ใ€‹status=fclose(3) : ํŒŒ์ผ์ด ์—ฌ๋Ÿฌ๊ฐœ ์—ด๋ ค ์žˆ์„ ๋•Œ ์›ํ•˜๋Š” fid๊ฐ’์„ ํ• ๋‹น.
status = 0
ใ€‹status=fclose('all') : ์—ด๋ ค์žˆ๋Š” ๋ชจ๋“  ํŒŒ์ผ์„ ๋‹ซ์„ ๋•Œ.
status = 0
- ์ด์™€ ๊ฐ™์ด ์™ธ๋ถ€ file์„ ์ด์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ๋ถˆ๋Ÿฌ์˜ฌ ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•˜๋Š” ๋ช…๋ น์–ด๋Š”
๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
fprintf : ASCII ๋ฐ์ดํ„ฐ์˜ ์ €์žฅ์— ์‚ฌ์šฉ
fscanf : ASCII ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ๊ฒฝ์šฐ์— ์‚ฌ์šฉ
fwrite : Binary ๋ฐ์ดํ„ฐ์˜ ์ €์žฅ์— ์‚ฌ์šฉ
fread : Binary ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ๊ฒฝ์šฐ์— ์‚ฌ์šฉ
โ‘  Ascii ๋ฐ์ดํ„ฐ file์˜ ์ถœ๋ ฅ
- ์•„๋ž˜์™€ ๊ฐ™์ด ์ž…๋ ฅํ•˜๋ฉด ์ง€์ •ํ•œ ๋””๋ ‰ํ† ๋ฆฌ์— data.dat ํŒŒ์ผ์ด ์ƒ์„ฑ๋œ๋‹ค.
fid=fopen('d:toolmatlabr11worklecturedata.dat','w')
for i=1:10
a(i)=i^2;
fprintf(fid,'%10d',a(i));
end
fclose(fid);
- fid=fopen('file_name','w')
file_name : ์‚ฌ์šฉ์ž๊ฐ€ ์ €์žฅํ•˜๊ณ ์ž ํ•˜๋Š” directory์˜ ๋ช…๊ณผ file์ด๋ฆ„์„ ์ ์–ด ์ค€๋‹ค.
- fprintf(fid, 'format', ๋ณ€์ˆ˜)
fid : ํ˜„์žฌ ์—ด๋ ค์žˆ๋Š” ํŒŒ์ผ์˜ ์‹๋ณ„์ž๋ฅผ ๋˜๋Œ๋ฆฐ๋‹ค.
๋ณ€์ˆ˜ : ์ €์žฅํ•˜๊ณ ์ž ํ•˜๋Š” ๋ณ€์ˆ˜๋ฅผ ์ž…๋ ฅ
format : %d - ์‹ญ์ง„์ˆ˜๋ฅผ ์ €์žฅํ•  ๊ฒฝ์šฐ
%f - ๋ถ€๋™ ์†Œ์ˆ˜์  ๊ฐ’์„ ์ €์žฅํ•  ๊ฒฝ์šฐ
- 45 -
%s - ๋ฌธ์ž์—ด์„ ์ €์žฅํ•  ๊ฒฝ์šฐ
%e - ์ง€์ˆ˜(exponential)๋ฅผ ์ €์žฅํ•  ๊ฒฝ์šฐ
%- - ์ฃผ์–ด์ง„ field์˜ ์™ผ์ชฝ์œผ๋กœ ์ •๋ ฌ
%+ - ๋ถ€ํ˜ธ๋ฅผ ํ‘œ์‹œํ•˜๊ฒŒ ํ•จ.
%0 - ์ฃผ์–ด์ง„ field์˜ spaces์— 0์„ ์ฑ„์›€
๋˜ํ•œ format์— ์‚ฌ์šฉ๋˜๋Š” escape ๋ฌธ์ž๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.
escape ๋ฌธ์ž escape ๋ฌธ์ž์— ๋Œ€ํ•œ ์„ค๋ช…
n
t
b
r
f

''
%%
New line
Horizontal tab
Backspace
Carriage return
Form feed
Backslash๋ฅผ ํ‘œ์‹œ
๋‹จ์ผ ์ธ์šฉ ๋ถ€ํ˜ธ๋ฅผ ํ‘œ์‹œ
Percent ๋ฌธ์ž๋ฅผ ํ‘œ์‹œ
์˜ˆ) %-12.5e
- ์ฃผ์–ด์ง„ ๊ฐ’์„ ์ง€์ˆ˜ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ, ์ •์ˆ˜๋ถ€๋Š” 12์ž ์ด๋‚ด๋กœ ํ•˜๊ณ , ์†Œ์ˆ˜๋ถ€๋Š” ์†Œ์ˆ˜์ 
์ดํ•˜ 5์ž๋ฆฌ๊นŒ์ง€ ์ฃผ์–ด์ง„ field์•ˆ์—์„œ ์™ผ์ชฝ์œผ๋กœ ์ •๋ ฌํ•ด์„œ ์ถœ๋ ฅํ•˜๋ผ.
โ‘ก Ascii ๋ฐ์ดํ„ฐ file์˜ ์ž…๋ ฅ
- ์•ž์—์„œ ์ €์žฅํ•œ data.dat ํŒŒ์ผ์„ ๋ถˆ๋Ÿฌ์˜ค๊ณ ์ž ํ•œ๋‹ค.
fid=fopen('d:toolmatlabr11worklecturedata.dat','r')
x=fscanf(fid,'%10d');
fclose(fid);
ใ€‹x
x=1
4
๏ผš
100
- fscanf(fid, 'format')
format : %d - ์‹ญ์ง„์ˆ˜๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ๊ฒฝ์šฐ
%f - ๋ถ€๋™์  ์†Œ์ˆ˜๊ฐ’์„ ๋ถˆ๋Ÿฌ์˜ฌ ๊ฒฝ์šฐ
%s - ๋ฌธ์ž์—ด์„ ๋ถˆ๋Ÿฌ์˜ฌ ๊ฒฝ์šฐ
%e - ์ง€์ˆ˜(exponential)๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ๊ฒฝ์šฐ
- 46 -
2) Binary ๋ฐ์ดํ„ฐ ํŒŒ์ผ์˜ ์ž…์ถœ๋ ฅ
โ‘  Binary ๋ฐ์ดํ„ฐ file์˜ ์ถœ๋ ฅ
- Binary ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๊ฒฝ์šฐ์˜ ์˜ˆ๋กœ์„œ, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž…๋ ฅํ•ด๋ณด์ž
fid=fopen('d:toolmatlabr11worklecturebinary.dat','w')
for i=1:10
a(i)=i^2;
fwrite(fid,a(i),'int');
end
fclose(fid);
- fwrite(fid, ๋ณ€์ˆ˜, โ€˜์ •๋ฐ€๋„โ€™)
char ๋˜๋Š” uchar : 8bit์˜ ๋ถ€ํ˜ธ๊ฐ€ ์žˆ๋Š” ๋ฌธ์ž์™€ ๋ถ€ํ˜ธ๊ฐ€ ์—†๋Š” ๋ฌธ์ž
short ๋˜๋Š” ushort : 16bit์˜ ๋ถ€ํ˜ธ๊ฐ€ ์žˆ๋Š” ์ •์ˆ˜์™€ ๋ถ€ํ˜ธ๊ฐ€ ์—†๋Š” ์ •์ˆ˜
int ๋˜๋Š” uint : 16bit ๋˜๋Š” 32bit์˜ ๋ถ€ํ˜ธ๊ฐ€ ์žˆ๋Š” ์ •์ˆ˜์™€ ๋ถ€ํ˜ธ๊ฐ€ ์—†๋Š” ์ •์ˆ˜
long ๋˜๋Š” ulong : 32bit ๋˜๋Š” 64bit์˜ ๋ถ€ํ˜ธ๊ฐ€ ์žˆ๋Š” ์ •์ˆ˜์™€ ๋ถ€ํ˜ธ๊ฐ€ ์—†๋Š” ์ •์ˆ˜
float : 32bit์˜ ๋ถ€๋™ ์†Œ์ˆ˜๊ฐ’
double : 64bit์˜ ๋ฐฐ์ •๋„ ๋ถ€๋™ ์†Œ์ˆ˜๊ฐ’
โ‘ก Binary ๋ฐ์ดํ„ฐ file์˜ ์ž…๋ ฅ
- ์œ„์˜ ํ”„๋กœ๊ทธ๋žจ์—์„œ binary ๋ฐ์ดํ„ฐ๋กœ ์ €์žฅ๋˜์–ด ์žˆ๋Š” 'binary.dat'๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ณ ์ž ํ•œ๋‹ค.
fid=fopen('d:toolmatlabr11worklecturebinary.dat','r')
x=fread(fid,inf,'int');
fclose(fid);
- fread(fid, ํฌ๊ธฐ, โ€˜์ •๋ฐ€๋„โ€™)
ํฌ๊ธฐ : inf - ๋ฐ์ดํ„ฐ์˜ ๊ฐœ์ˆ˜๋ฅผ ์•Œ ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ์— ์‚ฌ์šฉ
5 - ๋ฐ์ดํ„ฐ ํŒŒ์ผ์—์„œ 5๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋งŒ ๋ถˆ๋Ÿฌ์˜จ๋‹ค.
3) ํŒŒ์ผ ๋‚ด์—์„œ์˜ ์œ„์น˜์ œ์–ด
ํ•จ์ˆ˜ โ€˜fseek' ๋ฐ โ€™ftell'์€ ํŒŒ์ผ ๋‚ด์—์„œ ๋‹ค์Œ ๋ฒˆ์— ๋‚˜ํƒ€๋‚  ์ž…๋ ฅ ๋˜๋Š” ์ถœ๋ ฅ์˜ ์œ„์น˜๋ฅผ ์„ค์ •ํ•˜
๊ณ  ์กฐํšŒ(query)ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค.
ํ•จ์ˆ˜ โ€˜ftell'์€ ๋ณ€์œ„(offset)๋ฅผ ์ฃผ๋Š”๋ฐ, ์—ฌ๊ธฐ์„œ ๋ณ€์œ„๋Š” ์ง€์ •๋œ ํŒŒ์ผ์— ๋Œ€ํ•œ ํŒŒ์ผ ์œ„์น˜ ์ง€์‹œ์ž
์˜ ๋ฐ”์ดํŠธ ์ˆ˜๋กœ ์ฃผ์–ด์ง„๋‹ค. ํ•จ์ˆ˜ โ€™fseek'๋Š” ์ž๋ฃŒ๋“ค์„ ๊ฑด๋„ˆ๋›ฐ๊ฑฐ๋‚˜ ํŒŒ์ผ์˜ ์•ž ๋ถ€๋ถ„์œผ๋กœ ๋˜๋Œ์•„
๊ฐˆ ์ˆ˜ ์žˆ๋„๋ก ํŒŒ์ผ ์œ„์น˜ ์ง€์‹œ์ž๋ฅผ ์žฌ์œ„์น˜ ์‹œํ‚จ๋‹ค(reposition).
ใ€‹A=[1 2 3 4 5];
ใ€‹fid=fopen('5.dat','w');
ใ€‹fwrite(fid,A,'short');
ใ€‹fclose(fid);
ใ€‹fid=fopen('5.dat','r');
- 47 -
ใ€‹fseek(fid,6,'bof'); % cof:ํ˜„์žฌ ์œ„์น˜, bof:์‹œ์ž‘ ์œ„์น˜, eof:๋ ์œ„์น˜
ใ€‹fread(fid,1,'short')
ans = 4
ใ€‹ftell(fid)
ans = 8
ใ€‹fseek(fid,-4,'cof');
ใ€‹fread(fid,1,'short')
ans = 3
ใ€‹fclose(fid)
4) ํŒŒ์ผ ์ž…ใ†์ถœ๋ ฅ์—์„œ dialog box ์ด์šฉํ•˜๊ธฐ
Matlab์—์„œ๋Š” ํŒŒ์ผ ์ž…ใ†์ถœ๋ ฅ์„ ๋”์šฑ ์™„์„ฑ๋„ ์žˆ๊ฒŒ ๋ณด์ด๊ธฐ ์œ„ํ•ด์„œ โ€˜uiputfile.m','uigetfile.m'
๊ณผ ๊ฐ™์€ ํ•จ์ˆ˜๋ฅผ ์ œ๊ณตํ•œ๋‹ค.
- [fname, pname]=uigetfile('file_name','dialogtitle',x,y)
: pixel ๋‹จ์œ„๋กœ x,y ์œ„์น˜์— โ€˜dialogtitle'์ด๋ฆ„์˜ ์—ด๊ธฐ window๋ฅผ ๋งŒ๋“ค์–ด ์ค€๋‹ค. ์ž„์˜์˜
ํŒŒ์ผ์„ ์„ ํƒํ•˜๋ฉด, โ€™fname'์—๋Š” ์„ ํƒํ•œ ํŒŒ์ผ์˜ ์ด๋ฆ„์ด ๋ฐ˜ํ™˜๋˜๊ณ , โ€˜pname'์—๋Š”
์„ ํƒํ•œ ํŒŒ์ผ์ด ์œ„์น˜ํ•˜๋Š” ๊ฒฝ๋กœ๊ฐ€ ํ• ๋‹น๋œ๋‹ค.
ใ€‹x=0:0.1:1;
ใ€‹y=[x ; exp(x)];
ใ€‹fid=fopen('exp.dat','w')
fid = 3
ใ€‹count=fprintf(fid, '%6.2f %12.8fn',y)
count = 220
ใ€‹fclose('all')
ใ€‹[fname, pname]=uigetfile('*.dat','ํŒŒ์ผ์˜ ์„ ํƒ')
fname = exp.dat
pname = D:ToolMATLABR11worklecture
ใ€‹fid=fopen(fname, 'r');
ใ€‹[a, count]=fscanf(fid,โ€˜%f %fn',[2 inf]);
ใ€‹fclose('all')
- 48 -
์ œ 4 ์žฅ Matlab ํ”„๋กœ๊ทธ๋ž˜๋ฐ
1. ํ๋ฆ„ ์ œ์–ด๋ฌธ
Matlab์—๋Š” ๋ช…๋ น์˜ ํ๋ฆ„์„ ์ œ์–ดํ•˜๋Š” 4๊ฐ€์ง€ ๋ฐฉ๋ฒ•, ์ฆ‰, โ€œif๋ฌธ, for๋ฌธ, while๋ฌธ, switch๋ฌธโ€๋“ค์ด
์žˆ๋‹ค.
1) IF ๋ฌธ
โ€˜if'๋ฌธ์— ๋Œ€ํ•œ ๋ช…๋ น์€ ์ฃผ๋กœ ์กฐ๊ฑด๋ถ€ ์ˆ˜ํ–‰์„ ํ•˜๊ณ ์ž ํ•  ๊ฒฝ์šฐ์— ์‚ฌ์šฉ๋œ๋‹ค. ์ผ๋ฐ˜์ ์ธ ํ˜•ํƒœ๋Š” ๋‹ค
์Œ๊ณผ ๊ฐ™๋‹ค.
if ๋…ผ๋ฆฌ์‹
๋ช…๋ น์–ด ๋ฌธ์žฅ
elseif ๋…ผ๋ฆฌ์‹
๋ช…๋ น์–ด ๋ฌธ์žฅ
else
๋ช…๋ น์–ด ๋ฌธ์žฅ
end
๋งŒ์ผ, โ€˜if๋ฌธโ€™์˜ ๋…ผ๋ฆฌ์ ์ธ ์‹์ด โ€˜nonzero(์ฆ‰, true)'์ด๋ฉด, matlab์€ ๋ช…๋ น์–ด ๋ฌธ์žฅ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜, ๋…ผ๋ฆฌ์ ์ธ ์‹์˜ ๊ฐ’์ด โ€™zero(์ฆ‰, false)'์ด๋ฉด ๋ช…๋ น์–ด ๋ฌธ์žฅ์„ skipํ•œ๋‹ค. ์œ„์—์„œ โ€˜elseif'์™€
โ€™else' ๋ช…๋ น์–ด์˜ ์ฐจ์ด์ ์€ ๋…ผ๋ฆฌ์‹์„ ๊ฐ–๋Š”๊ฐ€ ๊ฐ–์ง€ ์•Š๋Š”๊ฐ€ ํ•˜๋Š” ์ ์ด๋‹ค.
๋งŒ์ผ, ๋…ผ๋ฆฌ์ ์ธ ์‹์˜ ๊ฐ’์ด scalar๊ฐ€ ์•„๋‹ˆ๋ผ ๋ฐฐ์—ด(array)๋กœ ์ฃผ์–ด์ง„๋‹ค๋ฉด, ๊ทธ ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์›
์†Œ๊ฐ€ โ€˜nonzero'์ด์–ด์•ผ โ€™์ฐธ(true)'์ด ๋œ๋‹ค.
ใ€‹x=200;
ใ€‹if x>100
a='Large'
elseif x>50
a='Middle'
else
a='Small'
end
- ์ •์ˆ˜ n์˜ ๋ถ€ํ˜ธ์™€ ์งโ€งํ™€์ˆ˜ ์—ฌ๋ถ€(parity)์— ๋”ฐ๋ผ์„œ ๊ณ„์‚ฐ ๋ฐฉ๋ฒ•์ด ์„ธ๊ฐ€์ง€๋กœ ๋ถ„๋ฅ˜
ใ€‹if n < 0
(์Œ์ˆ˜ n์— ๋Œ€ํ•œ ์‹คํ–‰๋ฌธ)
elseif rem(n,2) == 0
(์ง์ˆ˜์— ๋Œ€ํ•œ ์‹คํ–‰๋ฌธ)
else
(ํ™€์ˆ˜์— ๋Œ€ํ•œ ์‹คํ–‰๋ฌธ)
end
- 49 -
2) FOR ๋ฌธ
'for๋ฌธโ€˜์€ ์ผ๋ จ์˜ ์ž‘์—…์„ ์ •ํ•ด์ง„ ํšŸ์ˆ˜๋งŒํผ ๋ฐ˜๋ณตํ•˜์—ฌ ์ˆ˜ํ–‰ํ•œ๋‹ค. for๋ฌธ์— ๋Œ€ํ•œ ์ผ๋ฐ˜์ ์ธ ํ˜•ํƒœ
๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
for ๋ณ€์ˆ˜ =์ดˆ๊ธฐ์น˜:์ฆ๋ถ„:์ตœ์ข…์น˜
๋ช…๋ น์–ด ๋ฌธ์žฅ๋“ค
end
๊ธฐ๋ณธ์ ์œผ๋กœ ์ฆ๋ถ„๋Ÿ‰์„ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด, ๋งค๋ฒˆ ๋ฐ˜๋ณตํ•  ๋•Œ๋งˆ๋‹ค ์ฆ๋ถ„ํ•˜๋Š” ์–‘์€ โ€˜1โ€™์ด ๋œ๋‹ค.
- ๋ฒกํ„ฐ x์— 1๋ถ€ํ„ฐ 10๊นŒ์ง€์˜ ์ˆซ์ž๋ฅผ ์ฑ„์šฐ๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
ใ€‹for i=1:10 , x(i)=i ; end ๋˜๋Š”
ใ€‹for i=1:10 ; x(i)=i ; end ๋˜๋Š”
ใ€‹for i=1:10
x(i) = i
end
ใ€‹x
x = 1 2 3 4 5 6 7 8 9 10
- ํ–‰๋ ฌ์˜ ์ธ์ˆ˜(ํ–‰๊ณผ ์—ด) ๋ชจ๋‘๋ฅผ ๋ณ€ํ™” : ์ค‘์ฒฉ๋œ(nested loop) ์‚ฌ์šฉ
ใ€‹for i=1:3
for j=1:4
A(i,j)=i+j;
end
end
ใ€‹A;
ใ€‹for i = 1:4
for j=1:5
a(i,j)=1/(i+j);
end
end
ใ€‹a
a =
0.5000 0.3333 0.2500 0.2000 0.1667
0.3333 0.2500 0.2000 0.1667 0.1429
0.2500 0.2000 0.1667 0.1429 0.1250
0.2000 0.1667 0.1429 0.1250 0.1111
ใ€‹x='1/(i+j)';
- 50 -
ใ€‹for i = 1:3
for j = 2:4
a(i,j) = eval(x);
end
end
ใ€‹a
a =
0.5000 0.3333 0.2500 0.2000
0.3333 0.2500 0.2000 0.1667
0.2500 0.2000 0.1667 0.1429
ex) 1. x=[1 0 3 0 5 0 7 0 9]๋ฅผ for๋ฌธ์„ ์ด์šฉํ•ด์„œ ๋งŒ๋“œ์‹œ์˜ค.
2. y=[9 0 7 0 5 0 3 0 1]๋ฅผ for๋ฌธ์„ ์ด์šฉํ•ด์„œ ๋งŒ๋“œ์‹œ์˜ค.
- vandermonde ํ–‰๋ ฌ
:์ž„์˜์˜ ์—ด๋ฒกํ„ฐ์˜ ๊ฐ ์›์†Œ๋“ค์— ๋Œ€ํ•œ n ๊ฑฐ๋“ญ์ œ๊ณฑ์„ ์—ด์˜ ์›์†Œ๋กœ ๊ฐ–๋Š” ํ–‰๋ ฌ
ใ€‹x=[-3 0 1 2 5]'
v =
๊€Ž
๊€š
๏ธณ๏ธณ๏ธณ๏ธณ๏ธณ๏ธณ๏ธณ๏ธณ๏ธณ๏ธณ๏ธณ๏ธณ๏ธณ
๊€
๊€›
๏ธณ๏ธณ๏ธณ๏ธณ๏ธณ๏ธณ๏ธณ๏ธณ๏ธณ๏ธณ๏ธณ๏ธณ๏ธณ
81 -27 9 -3 1
0 0 0 0 1
1 1 1 1 1
16 8 4 2 1
625 125 25 5 1
ใ€‹n=length(x)
ใ€‹for k=1:n
for i=1:n
v(i,k)=x(i)^(n-k);
end
end
๋˜๋Š”
ใ€‹n=length(x);
ใ€‹v( : , n) = ones(n,1);
ใ€‹for i=n-1:-1:1
v(:,i) = x.*v( : , i+1) ;
end
- break ๋ฌธ
for k=0:9
for m=0:9
if m==5
[k m]
break
end
- 51 -
end
end
3) WHILE ๋ฌธ
for๋ฌธ์ผ ๊ฒฝ์šฐ๋Š” ๋ฐ˜๋ณต ํšŸ์ˆ˜๊ฐ€ ์ง€์ •๋œ๋‹ค. ๊ทธ๋ ‡์ง€๋งŒ ๋ฐ˜๋ณต์ฒ˜๋ฆฌ๋ฅผ ํ•  ๊ฒฝ์šฐ, ํšŸ์ˆ˜๋ฅผ ์ง€์ •ํ•˜๋Š”
๊ฒƒ์ด ์•„๋‹ˆ๊ณ  ์ข…๋ฃŒ ์กฐ๊ฑด์ด ์ผ์น˜ํ•  ๋•Œ ๋ฐ˜๋ณต์„ ๋๋‚ด๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ์ฆ‰, ์กฐ๊ฑด์ด ๋งŒ์กฑ๋  ๋•Œ
๊นŒ์ง€ ๊ณ„์†ํ•ด์„œ ๋ฐ˜๋ณตํ•œ๋‹ค. while๋ฌธ์˜ ์ผ๋ฐ˜์ ์ธ ํ˜•ํƒœ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
while ๋…ผ๋ฆฌ์‹
๋ช…๋ น์–ด ๋ฌธ์žฅ๋“ค
end
- 2์˜ ๊ฑฐ๋“ญ์ œ๊ณฑ์„ ๊ณ„์‚ฐํ•˜์—ฌ ๊ทธ ๊ฐ’์ด 10์„ ๋„˜๋Š” n์˜ ๊ฐ’์„ ๊ตฌํ•˜๊ณ ์ž ํ•œ๋‹ค.
ใ€‹n=0
ใ€‹while 2^n <= 10
n=n+1;
end
ใ€‹n
n = 4
- n!์˜ ๊ฐ’์ด ์ฒ˜์Œ์œผ๋กœ ์‹ญ์ง„์ˆ˜ 10000๋ณด๋‹ค ์ปค์ง€๋Š” n์˜ ๊ฐ’์„ ๊ตฌํ•  ๋•Œ
ใ€‹n=1;
ใ€‹while prod(1:n) <= 10000 % <= : ๊ด€๊ณ„ ์—ฐ์‚ฐ์ž
n=n+1 ;
end
ใ€‹n
n = 8
- ์ž„์˜์˜ ์–‘์˜ ์ •์ˆ˜๋ฅผ ์ทจํ•˜์—ฌ, ๋งŒ์•ฝ ๊ทธ ์ˆ˜๊ฐ€ ์ง์ˆ˜์ด๋ฉด 2๋กœ ๋‚˜๋ˆ„๊ณ  ํ™€์ˆ˜์ด๋ฉด 3์„ ๊ณฑํ•œ ํ›„์—
1์„ ๋”ํ•œ๋‹ค. ์ •์ˆ˜๊ฐ€ 1์ด ๋  ๋•Œ๊นŒ์ง€ ์ด ๊ณผ์ •์„ ๊ณ„์† ๋ฐ˜๋ณต โ†’ ์ด ๊ณ„์‚ฐ ๊ณผ์ •์ด ์ค‘๋‹จ๋˜์ง€ ์•Š
๊ณ  ๊ณ„์†๋˜๋Š” ์ •์ˆ˜๊ฐ€ ์กด์žฌํ•  ๊ฒƒ์ธ๊ฐ€?
ใ€‹while 1
n=input('Enter positive integer, n! ');
if n <= 0, break, end
while n > 1
if rem(n,2) == 0
n=n/2;
else
n=3*n+1;
- 52 -
end
end
4) SWITCH ๋ฌธ
C์–ธ์–ด์—์„œ์˜ switch ๋ฌธ๊ณผ๋Š” ๋‹ฌ๋ฆฌ, matlab์—์„œ์˜ switch๋ฌธ์€ ๋ณ€์ˆ˜ ๋˜๋Š” ์‹์˜ ๊ฐ’๊ณผ ๋งž๋Š”
(equal) โ€˜case ๋ฌธโ€™์˜ ๋ช…๋ น์–ด๋งŒ ์ˆ˜ํ–‰ํ•˜๋ฏ€๋กœ C์–ธ์–ด์—์„œ ์ฒ˜๋Ÿผ โ€˜break'๋ช…๋ น์–ด๊ฐ€ ๋”ฐ๋กœ ํ•„์š”์—†๋‹ค.
๋˜ํ•œ, C์–ธ์–ด์—์„œ์˜ โ€™switch ๋ฌธโ€˜์— ์žˆ๋Š” โ€™default' ๋ช…๋ น์–ด๋Š” matlab์—์„œ โ€˜otherwise'์— ํ•ด๋‹นํ•œ
๋‹ค. switch ๋ฌธ์˜ ์ผ๋ฐ˜์ ์ธ ํ˜•ํƒœ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
switch ๋ณ€์ˆ˜ ๋˜๋Š” ์‹
case ๊ฐ’ 1
๋ช…๋ น์–ด ๋ฌธ์žฅ
case ๊ฐ’ 2
๋ช…๋ น์–ด ๋ฌธ์žฅ
. . . ์ž„์˜์˜ ์ˆ˜์˜ case ๋ฌธ๋“ค . . .
otherwise
๋ช…๋ น์–ด ๋ฌธ์žฅ
end
- ๋‹ค์Œ์€ ์ง์ˆ˜์™€ ํ™€์ˆ˜๋ฅผ ํŒ๋ณ„ํ•˜๋Š” ๋ฌธ์žฅ์ด๋‹ค.
ใ€‹if x ~= abs(x)
error ('์ž…๋ ฅ ๊ฐ’์ด ์‹ค์ˆ˜๊ฐ€ ์•„๋‹ˆ๋‹ค.โ€˜);
elseif x ~= fix(x)
error('์ •์ˆ˜๊ฐ€ ์•„๋‹ˆ๋‹ค.โ€˜);
elseif x < 0
error('์–‘์ˆ˜์—ฌ์•ผ ํ•œ๋‹ค.โ€˜);
end
y=rem(x,2)
switch y
case 0
disp(โ€˜์ž…๋ ฅ ๊ฐ’์€ ์ง์ˆ˜!โ€™);
otherwise
disp(โ€˜์ž…๋ ฅ ๊ฐ’์€ ํ™€์ˆ˜!โ€™);
end
2. M-file ์ž‘์„ฑ
์ผ๋ฐ˜์ ์œผ๋กœ matlab์€ ๋ช…๋ น๊ตฌ๋™๋ฐฉ์‹(command-driven mode)์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค. ์ฆ‰, ์‚ฌ์šฉ์ž๊ฐ€
- 53 -
ํ•œ ์ค„์งœ๋ฆฌ ๋ช…๋ น์„ ์ž…๋ ฅํ•˜๋ฉด matlab์€ ๊ทธ ๋ช…๋ น์„ ์ฆ‰์‹œ ์ฒ˜๋ฆฌํ•˜์—ฌ ๊ฒฐ๊ณผ๋ฅผ ๋ชจ๋‹ˆํ„ฐ ํ™”๋ฉด์— ํ‘œ์‹œ
ํ•œ๋‹ค. matlab์—์„œ๋Š” ๋˜ํ•œ ์ผ๋ จ์˜ ๋ช…๋ น๋“ค์„ ํŒŒ์ผ ๋‚ด์— ์ €์žฅํ–ˆ๋‹ค๊ฐ€ ํ•œ๊บผ๋ฒˆ์— ์‹คํ–‰ํ•  ์ˆ˜๋„ ์žˆ
๋‹ค. ์•„์šธ๋Ÿฌ ์ด๋Ÿฌํ•œ ๋‘ ๊ฐ€์ง€ ๋ฐฉ์‹์€ ํ•ด์„๊ธฐ ๋ฐฉ์‹์˜ ํ™˜๊ฒฝ(interpertive environment)์„ ๊ตฌ์„ฑํ•œ
๋‹ค.
matlab์˜ ์‹คํ–‰ ๋ฌธ์žฅ๋“ค์„ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š” ํŒŒ์ผ๋“ค์„ m-file์ด๋ผ๊ณ  ๋ถ€๋ฅด๋Š”๋ฐ, ๊ทธ ์ด์œ ๋Š” ํŒŒ์ผ
์ด๋ฆ„์˜ ํ™•์žฅ์ž๊ฐ€ โ€˜m'์ด๊ธฐ ๋•Œ๋ฌธ์ด๋ฉฐ ํ™•์žฅ์ž โ€™m'์€ ๋งคํฌ๋กœ ํŒŒ์ผ(macro file)์„ ์˜๋ฏธํ•˜๊ธฐ๋„ ํ•œ
๋‹ค. m-file์€ ์ผ๋ จ์˜ ์ •์ƒ์ ์ธ matlab ์‹คํ–‰ ๋ฌธ์žฅ๋“ค๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์œผ๋ฉฐ, ์‹คํ–‰ ๋ฌธ์žฅ๋“ค ์ค‘์—๋Š”
๋‹ค๋ฅธ m-file์„ ์ฐธ์กฐํ•˜๋Š” ๋ฌธ์žฅ๋„ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ m-file์€ ์ž์ฒด m-file ๋‚ด์—์„œ ๊ทธ ์ž์‹ ์„
๋ถ€๋ฅผ ์ˆ˜๋„ ์žˆ๋‹ค(recursive call).
matlab์˜ m-file์€ โ€˜์Šคํฌ๋ฆฝํŠธ(script)โ€™์™€ โ€˜ํ•จ์ˆ˜(function)โ€™์˜ ๋‘ ๊ฐ€์ง€ ์œ ํ˜•์œผ๋กœ ๋ถ„๋ฅ˜ํ•  ์ˆ˜ ์žˆ
๋‹ค. ๋จผ์ € โ€˜์Šคํฌ๋ฆฝํŠธ(script)'ํŒŒ์ผ์ด๋ž€ ์ผ๋ จ์˜ ๊ธด ๋ช…๋ น๋“ค์„ ํ•œ๊บผ๋ฒˆ์— ์ž๋™์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•ด ์ฃผ๋Š”
ํŒŒ์ผ์„ ๊ฐ€๋ฆฌํ‚ค๋ฉฐ, โ€™ํ•จ์ˆ˜(function)' ํŒŒ์ผ์ด๋ž€ ๋‹ค๋ฅธ ์ „๋ฌธ์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์— ๋ฒ„๊ธˆ๊ฐ€๋„๋ก
matlab์˜ ๊ธฐ๋Šฅ์„ฑ์„ ํ™•์žฅ์‹œ์ผœ ์ฃผ๋Š” ํŒŒ์ผ์ด๋‹ค.
1) ์Šคํฌ๋ฆฝํŠธ(Script) ํ™”์ผ
- ๋‹จ์ˆœํžˆ ํŒŒ์ผ ๋‚ด์— ๋“ค์–ด ์žˆ๋Š” ๋ช…๋ น๋“ค์„ ์ฐจ๋ก€๋Œ€๋กœ ์‹คํ–‰
- ์Šคํฌ๋ฆฝํŠธ ๋‚ด์˜ ๋ณ€์ˆ˜๋“ค์€ ์ „์—ญ๋ณ€์ˆ˜(global variable)๋กœ ์ทจ๊ธ‰
- ์ •ํ˜„ํŒŒ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ๋กœ ์ž‘์„ฑ
%sine ๊ทธ๋ž˜ํ”„ ์ถœ๋ ฅ ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ
%M-file Program sin_plot.m
t=[0:0.001:0.1]
freq=60
y=sin(2*pi*freq*t);
plot(t,y),grid
xlabel('Time[sec]โ€˜),ylabel('y(t)')
- Fibonacci์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” fibon2.m ํŒŒ์ผ ์ž‘์„ฑ
% Script file to calculate fibonacci numbers
- 54 -
i=1 ; f=[1 1]; / ์ƒ‰์ธ๊ณผ ํ•จ์ˆ˜๊ฐ’์˜ ์ดˆ๊ธฐํ™”
while f(i)+f(i+1) < 10000
f(i+2) = f(i) + f(i+1);
i = i + 1 ;
end
plot(f)
ํ•จ์ˆ˜ โ€˜menuโ€™๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ™”๋ฉด์— ๋ฉ”๋‰ด๋ฅผ ์ถœ๋ ฅํ•˜๊ณ , ๋ฉ”๋‰ด์˜ ์›ํ•˜๋Š” ํ•ญ๋ชฉ์„ ์„ ํƒํ•˜๋Š” ๊ฒƒ
์— ์˜ํ•ด์„œ ํ”„๋กœ๊ทธ๋žจ ์ค‘์— ์ด ๋ฒˆํ˜ธ์— ๋Œ€์‘ํ•œ ์ฒ˜๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค.
s=menu('Choose a Color','Red','Blue','Green');
'if_test.m'
close all
t=0:0.1:10;
while 1
s=menu(' choose a color ','red','blue','green','STOP');
if s==1
plot(t,sin(t),'r')
elseif s==2
plot(t,sin(t),'b')
elseif s==3
plot(t,sin(t),'g')
else
- 55 -
close all;break
end
end
- dialogํ˜•(type) ํ•จ์ˆ˜๋“ค
โ‘  R=questdlg('qstring','title','str1','str2','default')
: ์งˆ๋ฌธํ˜• dialog box๋ฅผ ๋งŒ๋“ค๊ณ , ๋‘ ๊ฐœ์˜ โ€˜str1','str2' label๋ฅผ ๊ฐ€์ง„ push ๋ฒ„ํŠผ์„ ๋งŒ๋“ ๋‹ค.
'default' ๋ฒ„ํŠผ์€ default ์ƒํƒœ๋ฅผ ์ง€์ •ํ•˜๊ฒŒ ํ•ด ์ค€๋‹ค.
์„ ํƒ๋œ str์ด ์ถœ๋ ฅ๋ณ€์ˆ˜ R๋กœ ๋ฐ˜ํ™˜๋œ๋‹ค.
close all
line_color=['r','g','b'];
str='Yes';
t=0:0.1:10;
while 1
if strcmp(str,'Yes')
s=menu(' ์„ ์˜ ์ƒ‰์„ ๊ฒฐ์ • ','red','blue','green');
plot(t,sin(t),line_color(s));
str=questdlg('๊ณ„์†ํ•˜๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๊นŒ?','์„ ํƒ์‚ฌํ•ญ','Yes','No','No');
else
close all, break
end
end
โ‘ก msgbox(โ€˜messageโ€™, โ€˜titleโ€™, 'icon')
: โ€˜titleโ€™์„ box์ด๋ฆ„์œผ๋กœ ํ•˜๊ณ , โ€˜messageโ€™๋ฅผ ํ‘œ์‹œํ•˜๋Š” box๋ฅผ ๋งŒ๋“ ๋‹ค.
โ€˜icon'์€ messgae box์•ˆ์— ํ‘œํ˜„ํ•  icon๋ชจ์–‘์„ ๊ฒฐ์ •ํ•œ๋‹ค.('error', 'help','warn')
function PM_cb(x)
if x~=abs(x)
msgbox('์ž…๋ ฅ๊ฐ’์€ ์–‘์˜ ์‹ค์ˆ˜์ด์–ด์•ผ ํ•œ๋‹ค.','์—๋Ÿฌ','error');
return;
elseif x~=fix(x)
msgbox('์ •์ˆ˜๊ฐ€ ์•„๋‹ˆ๋‹ค','์—๋Ÿฌ','error');
return;
end
- 56 -
y=rem(x,2);
switch y
case 0
disp('์ž…๋ ฅ๊ฐ’์€ ์ง์ˆ˜!')
otherwise
disp('์ž…๋ ฅ๊ฐ’์€ ํ™€์ˆ˜!')
end
2) ํ•จ์ˆ˜(Function) ํŒŒ์ผ
์Šคํฌ๋ฆฝํŠธ file ์™ธ์— ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•ด์„œ m-file๋กœ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. matlab ํ”„๋กœ๊ทธ๋žจ์—์„œ ์‚ฌ์šฉ
๋˜๋Š” ๋ช…๋ น์–ด๋“ค์€ ์ฃผ๋กœ ์—ฌ๊ธฐ์„œ ์„ค๋ช…ํ•˜๋Š” ํ•จ์ˆ˜๋กœ์จ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค. ์ด์™€ ๊ฐ™์€ ์„ฑ์งˆ์„ ์ด์šฉํ•˜
๋ฉด ์‚ฌ์šฉ์ž์˜ ํ•„์š”์— ์˜ํ•ด์„œ ์ž์‹ ๋งŒ์˜ ๊ณ ์œ ์˜ ํ•จ์ˆ˜ file์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ์ผ์ ์ ์ธ ํ•จ์ˆ˜ file
ํ˜•ํƒœ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.
function[output1, output2, ... ] = filename(input1, input2, ...)
% ์ฃผ์„๋ฌธ(ํ•จ์ˆ˜์˜ ์ผ๋ฐ˜์ ์ธ ์„ค๋ช…)
Matlab ๋ช…๋ น์–ด
๋‹ค์Œ์€ ํ‰๊ท ๊ฐ’์„ ๊ณ„์‚ฐ ํ•จ์ˆ˜ โ€˜average.mโ€™์„ ์ž‘์„ฑํ•œ ๊ฒƒ์ด๋‹ค.
function y=average(x)
% Average Average or Mean value
% ์˜ˆ์ œ ํŒŒ์ผ
[m,n]=size(x);
if m == 1
m =n;
end
y=sum(x)/m;
ใ€‹t=1:100;
ใ€‹average(t)
ans = 50.5000
โ‘  ํŒŒ์ผ์˜ ์ฒซ ๋ฒˆ์งธ ์ค„์— ํ•จ์ˆ˜์˜ ์ด๋ฆ„, ์ž…๋ ฅ ์ธ์ˆ˜ ๋ฐ ์ถœ๋ ฅ ์ธ์ˆ˜๊ฐ€ ์„ ์–ธ๋˜๋ฉฐ, ์ด ๋ถ€๋ถ„์ด
โ€˜ํ•จ์ˆ˜ ํŒŒ์ผโ€™๊ณผ โ€˜์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผโ€™์˜ ๊ฐ€์žฅ ํฐ ์ฐจ์ด์ ์ด๋‹ค.
- 57 -
โ‘ก โ€˜%โ€™ ๊ธฐํ˜ธ์˜ ๋’ค์— ๋‚˜์˜ค๋Š” ๋ฌธ์žฅ๋“ค์€ ์ฃผ์„(comment)์œผ๋กœ ์ธ์‹๋˜์–ด ๋ฌด์‹œ๋œ๋‹ค.
โ‘ข โ€˜%โ€™ ๊ธฐํ˜ธ์™€ ํ•จ๊ป˜ ์ ์–ด ๋†“์€ ์„ค๋ช… ๋ถ€๋ถ„์€ matlab ํ”„๋กฌํ”„ํŠธ์—์„œ โ€˜help average'์ด๋ผ๊ณ 
์ž…๋ ฅํ–ˆ์„ ๋•Œ ๋ชจ๋‹ˆํ„ฐ ํ™”๋ฉด์ƒ์— ํ‘œ์‹œ๋œ๋‹ค.
โ‘ฃ matlab ํ”„๋กฌํ”„ํŠธ์—์„œ โ€˜lookfor average'์ด๋ผ๊ณ  ์ž…๋ ฅํ•˜๋ฉด average๊ฐ€ ํฌํ•จ๋œ ํ•ญ๋ชฉ๋“ค์„
๋ชจ๋‘ ์ฐพ์•„ ์ค€๋‹ค.(์ฃผ์„์˜ ์ฒซ ๋ฒˆ์งธ ์ค„๋งŒ ํ•ด๋‹น๋จ)
โ‘ค ํŒŒ์ผ์˜ ์ฒซ ๋ฒˆ์งธ ์ค„์— ๋‚˜ํƒ€๋‚˜๋Š” ๋ณ€์ˆ˜๋“ค y, m ๋ฐ n์€ ํ•จ์ˆ˜ โ€˜average'์— ๊ตญํ•œ๋œ ๋ณ€์ˆ˜๋“ค
๋กœ์จ โ€™average'์ด ์‹คํ–‰๋˜๊ณ  ๋‚œ ํ›„์—๋Š” ์ž‘์—… ๊ณต๊ฐ„์ƒ์— ์กด์žฌํ•˜์ง€ ์•Š๊ฒŒ ๋œ๋‹ค.
โ‘ฅ ํ•จ์ˆ˜ ํŒŒ์ผ์˜ ๋ณ€์ˆ˜๋“ค์€ ์ง€์—ญ ๋ณ€์ˆ˜๋“ค์ด๊ธฐ ๋•Œ๋ฌธ์—, ํ•จ์ˆ˜ โ€˜average'์— ์‚ฌ์šฉ๋˜๋Š” ์ž…๋ ฅ ์ธ์ˆ˜
์˜ ์ด๋ฆ„์ด ๋ฐ˜๋“œ์‹œ m-file ๋‚ด์˜ ๋ณ€์ˆ˜์ธ โ€™x'์™€ ๊ฐ™์„ ํ•„์š”๋Š” ์—†๋‹ค.
์ •ํ˜„ํŒŒ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ํ•จ์ˆ˜ ํŒŒ์ผ๋กœ ์ž‘์„ฑํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.
function a=sin_plot2(freq)
%Sine ๊ทธ๋ž˜ํ”„๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ•จ์ˆ˜ ํŒŒ์ผ
%M-file program sin_plot2
t=[0:0.001:0.1];
y=sin(2*pi*freq*t);
plot(t,y),grid
xlabel('Time[sec]'),ylabel('y(t)')
ใ€‹sin_plot(30)
๋‹ค์Œ์˜ ์˜ˆ๋Š” ํ‘œ์ค€ํŽธ์ฐจ๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” โ€˜stat.mโ€™ ํŒŒ์ผ์„ ์ž‘์„ฑํ•œ ๊ฒƒ์ด๋‹ค.
function [mean, stdev] = stat(x)
[m,n] = size(x);
if m == 1
m=n;
end
mean = sum(x)/m
stdev=sqrt((sum((x-mean).^2))/(m-1))
- 58 -
- ์ „์—ญ๋ณ€์ˆ˜
๋Œ€๊ฐœ์˜ m-file๋กœ ์ •์˜๋œ matlab ํ•จ์ˆ˜๋“ค์€ ์ž์ฒด์ ์œผ๋กœ ์ง€์—ญ๋ณ€์ˆ˜๋“ค์„ ์‚ฌ์šฉํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ์ง€
์—ญ ๋ณ€์ˆ˜๋“ค์€ ๋‹ค๋ฅธ ํ•จ์ˆ˜์˜ ๋ณ€์ˆ˜๋“ค, ๊ธฐ๋ณธ ์ž‘์—… ๊ณต๊ฐ„์˜ ๋ณ€์ˆ˜๋“ค ๋ฐ ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์˜ ๋ณ€์ˆ˜๋“ค๊ณผ
๋ถ„๋ฆฌํ•˜์—ฌ ์ทจ๊ธ‰ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜, ๋งŒ์•ฝ ๋ช‡ ๊ฐœ์˜ ํ•จ์ˆ˜๋“ค์—์„œ ํŠน์ •ํ•œ ์ด๋ฆ„์˜ ๋ณ€์ˆ˜๋ฅผ ์ „์—ญ๋ณ€์ˆ˜๋กœ ์„ 
์–ธํ–ˆ๋‹ค๋ฉด, ๊ทธ ๋ณ€์ˆ˜๋ฅผ ์ „์—ญ ๋ณ€์ˆ˜๋กœ ์„ ์–ธํ•œ ํ•จ์ˆ˜๋“ค๊ณผ matlab ์ž‘์—… ๊ณต๊ฐ„์€ ๊ทธ ๋ณ€์ˆ˜๋ฅผ ๊ณต์œ ํ•˜๊ฒŒ
๋œ๋‹ค.
โ‘  function workspace์™€ base workspace๊ฐ„์˜ ๋ฐ์ดํ„ฐ ๊ตํ™˜์‹œ
<plot_sin.m>
function y=plot_sin(t)
global a_deg
y1=sin(t)
y2=sin(t+a_deg*pi/180);
plot(t,y1,'r-',t,y2,'g.')
grid on
ใ€‹x=0:0.1:10;
ใ€‹global a_deg;
ใ€‹a_deg=45;
ใ€‹plot_sin(x)
ใ€‹whos global
Name Size Bytes Class
a_deg 1x1 8 double array (global)
Grand total is 1 elements using 8 bytes Your variables are:
โ‘ก function workspace๊ฐ„์˜ ๋ฐ์ดํ„ฐ ๊ตํ™˜์‹œ
<newstats1.m>
function [avg,med]=newstats1(in)
%newstats ์„œ๋ธŒํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ ํ‰๊ท ๊ณผ ์ค‘๊ฐ„๊ฐ’์„ ๊ตฌํ•˜๋Š” ํ•จ์ˆ˜
%
global n;
n=length(in);
avg=newmean(in);
- 59 -
med=newmedian(in);
%์„œ๋ธŒํ•จ์ˆ˜1
function a=newmean(in)
global n;
a=sum(in)/n;
%์„œ๋ธŒํ•จ์ˆ˜2
function m=newmedian(v)
global n;
w=sort(v);
if rem(n,2)==1
m=w((n+1)/2);
else
m=(w(n/2)+w(n/2+1))/2;
end
- ์„œ๋ธŒ ํ•จ์ˆ˜(subfunction)
Matlab 5.0์ดํ›„ ๋ฒ„์ „๋ถ€ํ„ฐ๋Š” ๋‹ค๋ฅธ High_level ์–ธ์–ด์—์„œ์ฒ˜๋Ÿผ ์„œ๋ธŒํ•จ์ˆ˜(subfunctions)๋ฅผ ์ •์˜
ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค.
function mode m-file์˜ ์ฒซ ๋ฒˆ์งธ ํ•จ์ˆ˜๋ฅผ โ€˜primary function'์ด๋ผ ํ•˜๊ณ , ๋˜ํ•œ, primary
function์˜ ์ด๋ฆ„์ด ํ•ด๋‹น m-file์˜ ํŒŒ์ผ ์ด๋ฆ„์ด ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ , primary function ์•ˆ์— ์ƒˆ๋กญ๊ฒŒ
์ •์˜๋œ ํ•จ์ˆ˜๋“ค์„ โ€™subfunction'๋ผ๊ณ  ํ•œ๋‹ค.
subfunction์€ ํ•ด๋‹น primary function์•ˆ์—์„œ, ๋˜๋Š” ๊ฐ™์€ ํŒŒ์ผ ์•ˆ์— ์žˆ๋Š” subfunction์—์„œ
๋งŒ ์ฐธ์กฐ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค. ๊ฐ๊ฐ์˜ subfunction ์—ญ์‹œ, ์ž์‹ ๋งŒ์˜ ํ•จ์ˆ˜ ์ •์˜๋ถ€๋ฅผ ์†Œ์œ ํ•ด์•ผ ํ•œ๋‹ค.
๋‹ค์Œ์€ ๋ฒกํ„ฐ์˜ ํ‰๊ทœ(average)์™€ ์ค‘๊ฐ„๊ฐ’(median value)๋ฅผ ๊ตฌํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค.
function [avg,med]=newstats(in)
%newstats ์„œ๋ธŒํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ ํ‰๊ท ๊ณผ ์ค‘๊ฐ„๊ฐ’์„ ๊ตฌํ•˜๋Š” ํ•จ์ˆ˜
%
n=length(in);
avg=newmean(in,n);
med=newmedian(in,n);
%์„œ๋ธŒํ•จ์ˆ˜1
function a=newmean(in,n)
a=sum(in)/n;
%์„œ๋ธŒํ•จ์ˆ˜2
function m=newmedian(v,n)
w=sort(v);
if rem(n,2)==1
m=w((n+1)/2);
else
m=(w(n/2)+w(n/2+1))/2;
end
- 60 -
ใ€‹x=[1 4 2 10 3 2 7];
ใ€‹[avg,med]=newstats(x)
avg = 4.5000
med = 3.5000
- ์ž…ใ†์ถœ๋ ฅ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ฐœ์ˆ˜๋ฅผ ์ œ์–ดํ•˜๋Š” โ€˜nargin, nargout'ํ•จ์ˆ˜
function mode m-file์—์„œ โ€˜nargin(number of function input argument), nargout(number
of function output argument)' ํ•จ์ˆ˜๋“ค์€ ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ์ž…ใ†์ถœ๋ ฅ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋Š”์ง€
๋ฅผ ์•Œ๋ ค์ค€๋‹ค.
์•ž์—์„œ ์‚ดํŽด๋ณธ โ€˜newstats1.m'ํŒŒ์ผ์„ ์ถœ๋ ฅ๋ณ€์ˆ˜๊ฐ€ ํ•˜๋‚˜ ์ผ ๋•Œ๋Š” ํ‰๊ท ์„ ์ถœ๋ ฅํ•˜๊ณ , ๋‘˜ ์ผ ๋•Œ
๋Š” ํ‰๊ท ๊ณผ ์ค‘๊ฐ„๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜๋กœ ๋ฐ”๊พธ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
<messtats2.m>
function [avg,med]=newstats2(in)
%newstats ์„œ๋ธŒํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ ํ‰๊ท ๊ณผ ์ค‘๊ฐ„๊ฐ’์„ ๊ตฌํ•˜๋Š” ํ•จ์ˆ˜
%
global n;
n=length(in);
if nargout ==1
avg=newmean(in);
else
avg=newmean(in);
med=newmedian(in);
end
%์„œ๋ธŒํ•จ์ˆ˜1
function a=newmean(in)
global n;
a=sum(in)/n;
%์„œ๋ธŒํ•จ์ˆ˜2
function m=newmedian(v)
global n;
w=sort(v);
if rem(n,2)==1
m=w((n+1)/2);
else
m=(w(n/2)+w(n/2+1))/2;
end
3. ๊ธฐํƒ€ ์‚ฌํ•ญ
1) matlab ๋ช…๋ น์–ด ์ž…๋ ฅ์‹œ ๊ฒ€์ƒ‰ ๋‹จ๊ณ„
- 61 -
matlab์—์„œ ์–ด๋–ค ์ด๋ฆ„, ์˜ˆ๋ฅผ ๋“ค์–ด โ€˜test'์™€ ๊ฐ™์€ ์ด๋ฆ„์ด ์ž…๋ ฅ๋˜๋ฉด, ์ผ๋ฐ˜์ ์œผ๋กœ matlab ํ•ด์„
๊ธฐ(interpreter)๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‹จ๊ณ„๋ฅผ ๊ฑฐ์ณ ๊ทธ ์ด๋ฆ„์„ ์ฒ˜๋ฆฌํ•œ๋‹ค.
โ‘  โ€˜test'๋ฅผ ๋ณ€์ˆ˜๋กœ ์ทจ๊ธ‰ํ•˜์—ฌ ๊ฒ€์ƒ‰ํ•œ๋‹ค.
โ‘ก โ€˜test'๋ฅผ ๋‚ด์žฅํ•จ์ˆ˜(built-in function)๋กœ ์ทจ๊ธ‰ํ•˜์—ฌ ์ ๊ฒ€ํ•œ๋‹ค.
โ‘ข ํ˜„์žฌ ์‚ฌ์šฉ์ค‘์ธ ๋””๋ ‰ํ† ๋ฆฌ์— โ€˜test.m'์ด๋ผ๋Š” ์ด๋ฆ„์˜ ํŒŒ์ผ์ด ์กด์žฌํ•˜๋Š”์ง€ ์ฐพ์•„๋ณธ๋‹ค.
โ‘ฃ matlab์˜ ๊ฒ€์ƒ‰ ๊ฒฝ๋กœ์— ์ง€์ •๋œ ๋””๋ ‰ํ† ๋ฆฌ๋“ค ์ค‘์— โ€˜test.m'์ด๋ผ๋Š” ์ด๋ฆ„์˜ ํŒŒ์ผ์ด ์กด์žฌ
ํ•˜๋Š”์ง€ ๊ฒ€์ƒ‰ํ•œ๋‹ค.
์œ„์˜ ๊ฒ€์ƒ‰ ๋‹จ๊ณ„๋“ค๋กœ๋ถ€ํ„ฐ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด matlab์—์„œ๋Š” ์–ด๋–ค ์ด๋ฆ„์ด ์ž…๋ ฅ๋˜๋ฉด ๊ทธ๊ฒƒ์„ ํ•จ์ˆ˜
๋กœ ์ทจ๊ธ‰ํ•˜๊ธฐ ์ „์— ๋จผ์ € ๋ณ€์ˆ˜๋กœ์จ ์ทจ๊ธ‰ํ•œ๋‹ค.
2) echo, input, keyboard, pause
โ‘  echo
์ •์ƒ์ ์œผ๋กœ matlab์˜ m-ํŒŒ์ผ์ด ์ˆ˜ํ–‰๋˜๋Š” ๋™์•ˆ์—๋Š” ๊ทธ ํŒŒ์ผ ๋‚ด์˜ ๋ช…๋ น๋“ค์ด ๋ชจ๋‹ˆํ„ฐ ํ™”๋ฉด
์— ํ‘œ์‹œ๋˜์ง€ ์•Š๋Š”๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ โ€˜echo' ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜๋ฉด m-ํŒŒ์ผ์ด ์‹คํ–‰๋  ๋•Œ ๊ฐ๊ฐ์˜ ๋ช…๋ น๋“ค์ด
๋ชจ๋‹ˆํ„ฐ ํ™”๋ฉด์— ๋‚˜ํƒ€๋‚œ๋‹ค.
โ‘ก input
m-file์ด ์‹คํ–‰๋  ๋•Œ ์‚ฌ์šฉ์ž๊ฐ€ ์ž๋ฃŒ๋ฅผ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค. 'input'๋ฅผ ์‹คํ–‰์‹œํ‚ค๋ฉด, ์ž
๋ฃŒ๊ฐ€ ์ž…๋ ฅ๋  ๋•Œ๊นŒ์ง€ ๋” ์ด์ƒ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ  ๋Œ€๊ธฐ ์ƒํƒœ๋กœ ๋จธ๋ฌด๋ฅด๊ฒŒ ๋œ๋‹ค.
ใ€‹input('how old are you?')
how old are you? 25
ans = 25
โ‘ข keyboard
์ปดํ“จํ„ฐ ์žํŒ์„ ๋งˆ์น˜ ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜๋„๋ก ํ•ด์ค€๋‹ค. m-file ๋‚ด๋ถ€์— ์ด ํ•จ์ˆ˜๋ฅผ ์‚ฝ
์ž…ํ•ด ๋†“์œผ๋ฉด, ํŒŒ์ผ์˜ ์ž˜๋ชป๋œ ๊ณณ์„ ๊ณ ์น˜๊ฑฐ๋‚˜ ํŒŒ์ผ์ด ์ˆ˜ํ–‰๋˜๋Š” ๋™์•ˆ์— ๋ณ€์ˆ˜๋ฅผ ์ˆ˜์ •ํ•˜๋Š”๋ฐ ์œ 
์šฉํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
โ‘ฃ pause
ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰์„ ์ผ์‹œ์ ์œผ๋กœ ์ค‘์ง€ ์‹œํ‚ค๋Š” ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.
3) profile
profile ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•œ ํ›„, M-file์„ ์‹คํ–‰ํ•˜๋ฉด ๊ฐ๊ฐ์˜ ํ•จ์ˆ˜๋“ค์˜ ์ฒ˜๋ฆฌ์†๋„๋ฅผ ๊ณ„์‚ฐํ•œ ํ›„
web browser๋ฅผ ์ด์šฉํ•ด์„œ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์—ฌ์ค€๋‹ค.
ใ€‹profile on
ใ€‹sinc1
ใ€‹profile report
- 62 -
ใ€‹profile plot
ใ€‹profile off
4) P-code ํŒŒ์ผ
M-file์€ ๋ชจ๋“  ์†Œ์Šค๋ฅผ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ์‰ฝ๊ฒŒ ๋ณผ ์ˆ˜๊ฐ€ ์žˆ์–ด์„œ ํ”„๋กœ๊ทธ๋žจ์„ ๋ณดํ˜ธ ํ•  ์ˆ˜๊ฐ€ ์—†์—ˆ
๋‹ค. 'pcode.m'์€ matlab์˜ ๋ชจ๋“  m-file์„ parsingํ•˜์—ฌ pseudocode๋กœ ๋ณ€ํ™˜ํ•œ ํ›„ ํ™•์žฅ์ž๊ฐ€ โ€˜.p'
- 63 -
์ธ ํŒŒ์ผ๋กœ ์ €์žฅํ•˜๋ฏ€๋กœ ์—๋””ํ„ฐ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ์†Œ์Šค ์ฝ”๋“œ(source code)๋ฅผ ๋ณผ ์ˆ˜ ์—†๊ฒŒ ํ•œ๋‹ค.
๋˜ํ•œ, ํŒŒ์ผ์ด๋ฆ„์ด ๊ฐ™์€ m-file๊ณผ p-ํŒŒ์ผ์ด ์žˆ๋‹ค๋ฉด, matlab์€ ์šฐ์„  p-ํŒŒ์ผ์„ ์‹คํ–‰ํ•˜๊ฒŒ ๋œ
๋‹ค.
ใ€‹type stat.m
ใ€‹pcode stat.m
ใ€‹!notepad stat.p
4. Matlab ํ”„๋กœ๊ทธ๋žจ์˜ ๋””๋ฒ„๊ฑฐ(debugger)
1) ๋””๋ฒ„๊ฑฐ ๋ช…๋ น์–ด
Matlab 5 ๋ฒ„์ „์˜ ๋””๋ฒ„๊ฑฐ์—์„œ๋Š” matlab 4 ๋ฒ„์ „์—์„œ ์‚ฌ์šฉํ•œ ๋””๋ฒ„๊น…์˜ ๋ช…๋ น์–ด๋“ค์„ ๋ชจ๋‘ ์ˆ˜
์šฉํ•˜๊ณ  ์žˆ์ง€๋งŒ, matlab 5 ๋ฒ„์ „์— ์ž์ฒด ๋‚ด์žฅ๋˜์–ด ์žˆ๋Š” m-file editor/debugger version์„ ์ด
์šฉํ•˜์—ฌ ๋งค์šฐ ํŽธ๋ฆฌํ•˜๊ฒŒ ๋””๋ฒ„๊ฑฐ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. m-file editor/debugger์— ํฌํ•จ๋˜์–ด
์žˆ๋Š” ์ƒˆ๋กœ์šด ๋””๋ฒ„๊น… ๋ช…๋ น์–ด๋“ค์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
continue : ํ˜„์žฌ์˜ ์ค‘์ง€์ ์—์„œ๋ถ€ํ„ฐ ๊ณ„์†ํ•˜์—ฌ ์‹คํ–‰
- 64 -
set/clear breakpoint : ์„ ํƒ๋œ ์ค„์˜ ์ค‘์ง€์  ์„ค์ • ๋ฐ ํ•ด์ œ
clear all breakpoint : ์„ค์ •๋˜์–ด ์žˆ๋Š” ๋ชจ๋“  ์ค‘์ง€์ ์˜ ํ•ด์ œ
single step : ํ˜„์žฌ์˜ ์ค„์„ ์‹คํ–‰
step in : ํ˜„์žฌ์˜ ์ค„์— ์žˆ๋Š” ๋ช…๋ น์–ด๋กœ ์‹คํ–‰์„ ์˜ฎ๊น€
quit bebugging : ๋””๋ฒ„๊ฑฐ ์ค‘๋ฃŒ
stop if error : ์‹คํ–‰์‹œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์‹คํ–‰ ์ •์ง€
stop if warning : ์‹คํ–‰์‹œ ๊ฒฝ๊ณ ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์‹คํ–‰ ์ •์ง€
stop in nan or inf : Nan ํ˜น์€ Inf์ด๋ฉด ์‹คํ–‰ ์ •์ง€
์œ„์˜ ๋ช…๋ น์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” matlab 5.3 ๋ฒ„์ „์— ์ž์ฒด ๋‚ด์žฅ๋˜์–ด ์žˆ๋Š” m-file
editor/debugger version์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
๋””๋ฒ„๊ฑฐ ์ž‘์—…์„ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ๋จผ์ € ๋””๋ฒ„๊น…ํ•  ๋‘ ๊ฐœ์˜ m-file์„ โ€˜deb_test.m'๊ณผ
'deb_test1.m' ์ด๋ฆ„์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ•œ๋‹ค. ๋จผ์ €, ๋ฐฉ์ •์‹์˜ ๊ทผ์„ ๊ตฌํ•˜๋Š” ๊ฒƒ์œผ๋กœ์„œ ์•„๋ž˜
์™€ ๊ฐ™์ด ์ž…๋ ฅํ•˜์—ฌ โ€™deb_test.m'์ด๋ฆ„์œผ๋กœ m-file์„ ์ž‘์„ฑํ•œ๋‹ค.
function a=deb_test(s)
% ๋ฐฉ์ •์‹์˜ ๊ทผ์„ ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•
% ๋””๋ฒ„๊ฑฐ ์ž‘์—…์„ ์œ„ํ•œ ์˜ˆ
% Program File - name deb_test.m
r=roots(s)
deb_test1(r);
๊ณ„์†ํ•ด์„œ, ์œ„์—์„œ ๊ตฌํ•œ ๊ทผ์„ ์ด์šฉํ•˜์—ฌ ๋ฐ˜๋Œ€๋กœ ๋ฐฉ์ •์‹์„ ๊ตฌํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์•„๋ž˜์™€ ๊ฐ™์ด
์ž…๋ ฅํ•˜์—ฌ โ€˜deb_test1.m' ์ด๋ฆ„์œผ๋กœ m-file์„ ๋งŒ๋“ ๋‹ค.
function p=deb_test1(r)
% ๊ทผ์„ ์ด์šฉํ•ด์„œ ๋ฐฉ์ •์‹์„ ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•
% ๋””๋ฒ„๊ฑฐ ์ž‘์—…์„ ์œ„ํ•œ ์˜ˆ
% Program File - name deb_test1.m
- 65 -
p=poly(r)
์šฐ์„ , ๋ฐฉ์ •์‹ y= x2
-3x+2์— ๋Œ€ํ•ด์„œ ์œ„์˜ ์˜ˆ์ œ ํ”„๋กœ๊ทธ๋žจ์ธ โ€˜deb_test.m'์„ ์‹คํ–‰ํ•˜๋ฉด
๋ฐฉ์ •์‹์˜ ๊ทผ๊ณผ ํ•จ๊ป˜ ๊ทผ์„ ์ด์šฉํ•œ ๋ฐฉ์ •์‹์ด ๊ตฌํ•ด์ง„๋‹ค.
ใ€‹s=[1 -3 2];
ใ€‹deb_test(s)
r = 2
1
p =
1 -3 2
2) ์ค‘์ง€์  ์„ค์ •
- 66 -
3) M-file์˜ ์‹คํ–‰๊ณผ ์Šคํƒ์˜ ํ‘œ์‹œ
์ค‘์ง€์ ์„ ์„ค์ •ํ•œ ํ›„์— ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ช…๋ น(โ€˜deb_test([1 -3 2])'์„ ์‹คํ–‰ํ•˜๋ฉด
ใ€‹deb_test([1 -3 2])
Kใ€‹
ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ๋‹ค์Œ ์ค„์— โ€˜Kใ€‹'์˜ ๋ชจ์–‘์œผ๋กœ ํ˜„์žฌ ๋””๋ฒ„๊ฑฐ ์ž‘์—… ์ค‘์ž„์„ ๋‚˜ํƒ€๋‚ด๋Š” ํ”„๋กฌํ”„ํŠธ
๊ฐ€ ๋‚˜ํƒ€๋‚จ๊ณผ ๋™์‹œ์— m-file editor/debugger๊ฐ€ ํ™œ์„ฑํ™”๋˜๋ฉด์„œ โ€™deb_test.mโ€˜ ์ด๋ฆ„์˜ m-file์—
์„ค์ •ํ•ด ๋†“์€ ์ค‘์ง€์ ์ธ 5๋ฒˆ์งธ ์ค„์— ๋…ธ๋ž€์ƒ‰์˜ ํ™”์‚ดํ‘œ๊ฐ€ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๋‚˜ํƒ€๋‚˜๊ณ  ์‹คํ–‰์„ ์ •์ง€ํ•˜๊ฒŒ
๋œ๋‹ค.
๊ณ„์†ํ•˜์—ฌ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ โ€˜continue'๋ช…๋ น์„ ํด๋ฆญํ•˜๋ฉด ๋‘ ๋ฒˆ์งธ๋กœ ์„ค์ •ํ•ด ๋†“์€ ์ค‘์ง€
์ ์ธ โ€™poly'ํ•จ์ˆ˜์˜ 37๋ฒˆ์งธ ์ค„์—์„œ ์‹คํ–‰์„ ์ผ์‹œ ์ •์ง€ํ•˜๊ฒŒ ๋˜๋ฉฐ ๋…ธ๋ž€์ƒ‰์˜ ํ™”์‚ดํ‘œ๋กœ ํ˜„์žฌ์˜ ์œ„
์น˜๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.
์ง€๊ธˆ๊นŒ์ง€ ์‹คํ–‰ํ•œ ํ•จ์ˆ˜ ํ˜ธ์ถœ์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ํ™•์ธํ•˜๊ฒŒ ์œ„ํ•ด์„œ stack์˜ ์˜†์— ์žˆ๋Š” ์„ ํƒ ํ™”์‚ด
ํ‘œ๋ฅผ ํด๋ฆญํ•˜๋ฉด ์‹คํ–‰ํ•œ ํ•จ์ˆ˜์— ๋Œ€ํ•œ ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋‚˜ํƒ€๋‚˜๊ฒŒ ๋œ๋‹ค.
- 67 -
4) ์ž‘์—…๊ณต๊ฐ„ ๋ณ€๊ฒฝ๊ณผ ๋ณ€์ˆ˜์˜ ๋‚ด์šฉ
ํ˜ธ์ถœ๋œ ๊ฐ๊ฐ์˜ ํ•จ์ˆ˜์— ๋Œ€ํ•œ ์ž‘์—… ๊ณต๊ฐ„์—์„œ์˜ ๋ณ€์ˆ˜๋ฅผ ํ™•์ธํ•˜๊ณ ์ž ํ•  ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ
๊ฒฝ์šฐ์— m-file editor/debugger์˜ ์Šคํƒ์„ ์ด์šฉํ•˜์—ฌ ๊ฐ๊ฐ์˜ ํ•จ์ˆ˜์— ๋Œ€ํ•œ ์ž‘์—… ๊ณต๊ฐ„์œผ๋กœ ์ด๋™
์„ ํ•˜์—ฌ ํ˜„์žฌ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋Š” ๋ณ€์ˆ˜๋ฅผ ํ™•์ธํ•˜๊ฒŒ ๋œ๋‹ค.
์Šคํƒ์„ ์ด์šฉํ•˜์—ฌ โ€˜deb_test.m' ํ•จ์ˆ˜๋ฅผ ์„ ํƒํ•˜์—ฌ ์ž‘์—… ๊ณต๊ฐ„์„ ์˜ฎ๊ธด ํ›„์— matlab ๋ช…๋ น์ฐฝ์—
์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‹คํ–‰ํ•˜๋ฉด โ€™deb_test.m'ํ•จ์ˆ˜์—์„œ ํ˜„์žฌ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๋ณ€์ˆ˜๋ช…๋“ค์„ ํ™•์ธ ํ•  ์ˆ˜
์žˆ๋‹ค.
Kใ€‹whos
Name Size Bytes Class
r 2x1 16 double array
s 1x3 24 double array
Grand total is 5 elements using 40 bytes
๋˜ํ•œ, โ€˜deb_test1.m' ํ•จ์ˆ˜๋ฅผ ์„ ํƒํ•˜์—ฌ ๋ณ€์ˆ˜๋ฅผ ํ™•์ธํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
Kใ€‹whos
Name Size Bytes Class
r 2x1 16 double array
Grand total is 2 elements using 16 bytes
๋งˆ์ง€๋ง‰์œผ๋กœ ์‚ฌ์šฉ๋œ โ€˜poly.m'ํ•จ์ˆ˜๋กœ ์ž‘์—… ๊ณต๊ฐ„์„ ์ด์šฉํ•˜์—ฌ ๋ณ€์ˆ˜๋ฅผ ํ™•์ธํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
Kใ€‹whos
Name Size Bytes Class
c 1x3 24 double array
e 2x1 16 double array
m 1x1 8 double array
n 1x1 8 double array
x 2x1 16 double array
Grand total is 9 elements using 72 bytes
5) ๋‹ค์Œ ์ค„ ์‹คํ–‰๊ณผ ๋ณ€์ˆ˜
์ง€๊ธˆ๊นŒ์ง€ ์‹คํ–‰๋œ ๊ฒƒ์€ ์ค‘์ง€์ ์— ์˜ํ•ด์„œ โ€˜poly.m' ํ•จ์ˆ˜์˜ 37๋ฒˆ์งธ ์ค„์—์„œ ์ •์ง€๋œ ์ƒํƒœ์ด๋‹ค.
๋”ฐ๋ผ์„œ, ๊ณ„์†ํ•ด์„œ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•  ํ•„์š”์„ฑ์ด ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ์— โ€™single step'์„ ํด๋ฆญํ•จ
์œผ๋กœ์จ ๋‹ค์Œ ์ค„์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.
- 68 -
Kใ€‹whos
Name Size Bytes Class
c 1x3 24 double array
e 2x1 16 double array
j 1x1 8 double array
m 1x1 8 double array
n 1x1 8 double array
x 2x1 16 double array
Grand total is 10 elements using 80 bytes
6) ๋””๋ฒ„๊น…์˜ ๊ณ„์† ์‹คํ–‰
'poly.m' ํ•จ์ˆ˜๊ฐ€ ์ข…๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๊ณ„์†ํ•˜์—ฌ โ€˜single step' ๋ช…๋ น์„ ์‹คํ–‰ํ•œ๋‹ค. ์ด์™€ ๊ฐ™์ด, ๊ณ„์†
ํ•ด์„œ ์‹คํ–‰ํ•˜๋‹ค ๋ณด๋ฉด ํ•จ์ˆ˜๊ฐ€ ์ข…๋ฃŒ๋˜๋Š” ์‹œ์ ์—์„œ๋Š” ๋…ธ๋ž€์ƒ‰์˜ ํ™”์‚ดํ‘œ๊ฐ€ ์•„๋ž˜์ชฝ์œผ๋กœ ํ–ฅํ•˜๊ฒŒ ๋œ
๋‹ค.
๊ณ„์†ํ•ด์„œ โ€˜single step'๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•˜๋ฉด, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ๋ช…๋ น์ฐฝ์— ๋‚˜ํƒ€๋‚จ๊ณผ ๋™์‹œ์—
โ€™deb_test1.m'ํ•จ์ˆ˜๊ฐ€ ํ™œ์„ฑํ™” ๋œ๋‹ค.
- 69 -
Kใ€‹
p=
1 -3 2
7) ๋””๋ฒ„๊น…์˜ ์ข…๋ฃŒ
๋””๋ฒ„๊น…์„ โ€˜single step' ๋ช…๋ น์„ ์ด์šฉํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ์„ ๋๊นŒ์ง€ ๊ณ„์†ํ•ด์„œ ์‹คํ–‰ํ•˜์—ฌ ๊ฒฐ๊ณผ๋ฅผ ํ™•
์ธํ•˜๊ฑฐ๋‚˜, ๊ทธ๋ ‡์ง€ ์•Š๊ณ  ์ค‘์ง€์ ์ด๋‚˜ ํ”„๋กœ๊ทธ๋žจ์˜ ์ค‘๊ฐ„์—์„œ ๋””๋ฒ„๊น…์˜ ์ข…๋ฃŒ์‹œ๊นŒ์ง€ ํ•จ์ˆ˜๋ฅผ ๊ณ„์†
ํ•ด์„œ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” โ€™continue' ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. โ€˜continue' ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋ฉด ๋””๋ฒ„
๊ฑฐ ํ”„๋กฌํ”„ํŠธ (โ€™Kใ€‹')์—์„œ matlab ํ”„๋กฌํ”„ํŠธ(โ€˜ใ€‹')๊ฐ€ ๋‚˜ํƒ€๋‚˜๊ฒŒ ๋œ๋‹ค. ๋˜๋Š” ๋””๋ฒ„๊น…์„ ๋ฒ—์–ด๋‚˜๊ธฐ
์œ„ํ•ด์„œ๋Š” โ€™quit debugging'๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ๋””๋ฒ„๊น…์„ ์ข…๋ฃŒํ•  ์ˆ˜ ์žˆ๋‹ค.
โ€˜quit debugging' ๋ช…๋ น์— ์˜ํ•œ ๋””๋ฒ„๊น… ์ข…๋ฃŒ๋Š” ์ค‘์ง€์ ์„ ์ œ๊ฑฐํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— โ€™set/clear
breakpoint'์™€ โ€˜clear all breakpoint'๋ฅผ ์ด์šฉํ•ด์„œ ์ค‘์ง€์ ์„ ์ œ๊ฑฐ ํ•  ์ˆ˜ ์žˆ๋‹ค.
- 70 -
์ œ 5 ์žฅ 2์ฐจ์› ๋ฐ 3์ฐจ์› ๊ทธ๋ž˜ํ”„
1. 2์ฐจ์› ๊ทธ๋ž˜ํ”„
1.1 ๊ธฐ๋ณธ์ ์ธ ๊ทธ๋ž˜ํ”„ ํ•จ์ˆ˜๋“ค
Matlab์—์„œ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ฆฌ๋Š”๋ฐ ์žˆ์–ด์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ํ•จ์ˆ˜๋“ค์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค. ๊ฐ๊ฐ
์˜ ๊ฒฝ์šฐ์— ๊ทธ๋ž˜ํ”„์˜ ์ถ•์— ๋Œ€ํ•œ ํ‘œ์‹œ ๋ฐฉ๋ฒ•๋งŒ ๋‹ค๋ฅผ ๋ฟ์ด๋ฉฐ, ์ด ํ•จ์ˆ˜๋“ค์€ ์ž…๋ ฅ์„ ํ–‰๋ ฌ ๋˜๋Š” ๋ฒก
ํ„ฐ์˜ ํ˜•ํƒœ๋กœ ๋ฐ›์•„๋“ค์ด๋ฉฐ, ์ž…๋ ฅ ์ž๋ฃŒ์— ๋”ฐ๋ผ ์ž๋™์ ์œผ๋กœ ์ถ•์˜ ๋ฐฐ์œจ์„ ์„ค์ •ํ•ด์„œ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ
๋ ค ์ค€๋‹ค.
plot - ๋ฒกํ„ฐ ๋˜๋Š” ํ–‰๋ ฌ์˜ ์—ด(column)์— ๋Œ€ํ•˜์—ฌ ์„ ํ˜• ๋ฐฐ์œจ(linear scale)์˜ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ ค
์ค€๋‹ค.
loglog - x์™€ y์ถ• ๋ชจ๋‘๋ฅผ ๋Œ€์ˆ˜ ๋ฐฐ์œจ(log scale)์— ๋งž์ถ”์–ด ๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ ค ์ค€๋‹ค.
semilogx - x์ถ•์€ ๋Œ€์ˆ˜ ๋ฐฐ์œจ์—, y์ถ•์€ ์„ ํ˜• ๋ฐฐ์œจ์— ๋งž์ถ”์–ด ๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ ค ์ค€๋‹ค.
semilogy - y์ถ•์€ ๋Œ€์ˆ˜ ๋ฐฐ์œจ์—, x์ถ•์€ ์„ ํ˜• ๋ฐฐ์œจ์— ๋งž์ถ”์–ด ๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ ค ์ค€๋‹ค.
์œ„์˜ ํ•จ์ˆ˜ ๋ช…๋ น๋“ค๋กœ ์ถ•์˜ ํ˜•ํƒœ๋ฅผ ์„ค์ •ํ•œ ํ›„์—, ๋‹ค์Œ์˜ ํ•จ์ˆ˜๋“ค์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ทธ๋ž˜ํ”„์˜ ์ œ๋ชฉ,
์ถ•์˜ ์ด๋ฆ„, ๋ˆˆ๊ธˆ ๊ฒฉ์ž ๋ฐ ๊ทธ๋ž˜ํ”„์— ๋Œ€ํ•œ ์„ค๋ช… ๋“ฑ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.
title - ๊ทธ๋ž˜ํ”„์— ์ œ๋ชฉ์„ ๋ถ™์ธ๋‹ค.
xlabel - x์ถ•์— ์ถ•์˜ ์ด๋ฆ„์„ ๋ถ™์—ฌ ์ค€๋‹ค.
ylabel - y์ถ•์— ์ถ•์˜ ์ด๋ฆ„์„ ๋ถ™์—ฌ ์ค€๋‹ค.
text - ์ง€์ •ํ•œ ์œ„์น˜์— ์›ํ•˜๋Š” ๋ฌธ๊ตฌ๋ฅผ ํ‘œ์‹œํ•ด ์ค€๋‹ค.
gtext - ๋งˆ์šฐ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ทธ๋ž˜ํ”„ ์ƒ์— ๋‚˜ํƒ€๋‚ด๊ณ ์ž ํ•˜๋Š” ๋ฌธ๊ตฌ์˜ ์œ„์น˜๋ฅผ ์ง€์ •ํ•œ๋‹ค.
grid - ๋ˆˆ๊ธˆ ๊ฒฉ์ž(grid line)๋“ค์„ ๊ทธ๋ž˜ํ”„์— ๋‚˜ํƒ€๋‚ผ ๊ฒƒ์ธ์ง€๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค.
1.2 ๊ทธ๋ž˜ํ”„ ๊ทธ๋ฆฌ๊ธฐ
โ€˜plot(y)' ๋ช…๋ น์–ด๋Š” y์˜ ์š”์†Œ๋“ค์„ y์ถ•์˜ ๊ฐ’์œผ๋กœ ์„ ์ •ํ•˜๊ณ , x์ถ•์€ y์˜ ์š”์†Œ๋“ค์˜ ์ƒ‰์ธ(index)
์„ x์ถ•์œผ๋กœ ์„ ์ •ํ•˜์—ฌ ๊ทธ๋ž˜ํ”„๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ๋˜ํ•œ, โ€™plot(x,y)' ๋ช…๋ น์–ด๋Š” x์˜ ์š”์†Œ๋“ค์„ x์ถ•์˜ ๊ฐ’
์œผ๋กœ, y์˜ ์š”์†Œ๋“ค์„ y์ถ•์˜ ๊ฐ’์œผ๋กœ ์„ ์ •ํ•˜์—ฌ ๊ทธ๋ž˜ํ”„๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.
๋‹ค์Œ์€ โ€˜y=cos(2x)log10(x+4)'๋ฅผ ๊ทธ๋ž˜ํ”„๋กœ ์ถœ๋ ฅํ•˜๋Š” ๊ณผ์ •์ด๋‹ค.
<plot_test1.m>
x=-03:0.05:3;
y=cos(2*x).*log10(x+4);
plot(x,y)
xlabel('x์ถ•'),ylabel('y์ถ•');
title('y=cos(2x)log(x+4)');
grid
- 71 -
1.3 ์„ ์˜ ํ˜•ํƒœ์™€ ๊ธฐํ˜ธ ๋ฐ ์ƒ‰์ƒ
โ€˜plot' ๋ช…๋ น์—์„œ ์ผ๋ จ์˜ ๋ฌธ์ž๋“ค์„ ์ž…๋ ฅํ•จ์œผ๋กœ์จ ์„ ์˜ ์ข…๋ฅ˜์™€ ์ƒ‰์ƒ์„ ์‚ฌ์šฉ์ž๊ฐ€ ์ง€์ •ํ•  ์ˆ˜
์žˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์€ โ€™plot' ๋ช…๋ น์—์„œ
ใ€‹ plot(x,y,s)
x์™€ y๋Š” ๊ฐ๊ฐ ๊ทธ๋ž˜ํ”„์˜ x์ถ• ๋ฐ y์ถ• ์ž๋ฃŒ๋ฅผ ์ง€์ •ํ•˜๋ฉฐ, s๋Š” ํ•˜๋‚˜, ๋‘˜ ๋˜๋Š” ์„ธ ๊ฐœ์˜ ๋ฌธ์ž๋กœ
๊ตฌ์„ฑ๋œ ์ธ์ˆ˜๋กœ์„œ ์ž‘์€๋”ฐ์˜ดํ‘œ(')๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ๋ถ„๋˜๋Š”๋ฐ, ๊ฐ๊ฐ์˜ ๊ธฐํ˜ธ๋“ค์ด ์˜๋ฏธํ•˜๋Š” ๋ฐ”๋ฅผ ์•„
๋ž˜์˜ ํ‘œ์—์„œ ๋‚˜ํƒ€๋‚ด์—ˆ๋‹ค.
Matlab ๊ทธ๋ž˜ํ”„์— ์‚ฌ์šฉ๋˜๋Š” ์ƒ‰์ƒ ๋ฐ ๊ธฐํ˜ธ๋“ค
๊ธฐ ํ˜ธ ์ƒ‰ ์ƒ ๊ธฐ ํ˜ธ ์„ ์˜ ํ˜•ํƒœ ๊ธฐ ํ˜ธ ์„ ์˜ ํ˜•ํƒœ
b blue(ํŒŒ๋ž€์ƒ‰) . point(์ ) > triangle(right)
g green(๋…น์ƒ‰) o circle(์›) p pentagram
r red(๋นจ๊ฐ„์ƒ‰) x x-mark(x ํ‘œ์‹œ) h hexagram
c cyan(ํ•˜๋Š˜์ƒ‰) + plus(๋ง์…ˆ ๊ธฐํ˜ธ) - solid line
m magenta(์žํ™์ƒ‰) * star(๋ณ„ํ‘œ) : dotted(์ ์„ )
y yellow(๋…ธ๋ž€์ƒ‰) s square solid(์‹ค์„ ) -. dashdot(์ผ์  ์‡„์„ )
k black(๊ฒ€์ •์ƒ‰) v triangle(down) -- dashed(๋‹จ์„ )
w white(ํฐ์ƒ‰) ^ triangle(up) d diamond
< triangle(left)
'plot'์€ ๋˜ํ•œ ์•„๋ž˜์™€ ๊ฐ™์ด x๊ฐ’, y๊ฐ’, ์˜ต์…˜์„ ์—ฌ๋Ÿฌ๊ฐœ ๋ฐ˜๋ณตํ•ด์„œ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฒฝ
์šฐ ์˜ต์…˜์—์„œ ์ƒ‰์ƒ์„ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด, ์œ„์˜ ์ƒ‰์ƒํ‘œ์— ์—ด๊ฑฐ๋œ ํŒŒ๋ž€์ƒ‰๋ถ€ํ„ฐ ๊ฒ€์ •์ƒ‰๊นŒ์ง€์˜ ์ˆœ์„œ
๋กœ ๊ทธ๋ž˜ํ”„๋ฅผ ๋„์‹œํ•œ๋‹ค.
ใ€‹plot(x1,y1,s1,x2,y2,s2,x3,y3,s3,...)
1.4 ๊ธฐ์กด์˜ ๊ทธ๋ž˜ํ”„์— ์ƒˆ๋กœ์šด ์„ ์„ ์ถ”๊ฐ€. - hold ์‚ฌ์šฉ
- 72 -
โ€˜hold' ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋ฏธ ์ž‘์„ฑ๋˜์–ด ์žˆ๋Š” ๊ทธ๋ž˜ํ”„์— ์ƒˆ๋กœ์šด ์„ ๋“ค์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.
โ€™hold' ๋ช…๋ น์„ โ€˜on' ์ƒํƒœ๋กœ ์„ค์ •ํ•˜๋ฉด, matlab์—์„œ๋Š” ๊ธฐ์กด์˜ ๊ทธ๋ž˜ํ”„๋ฅผ ์ œ๊ฑฐํ•˜์ง€ ์•Š์€ ์ƒํƒœ์—์„œ
๊ฐ™์€ ๊ทธ๋ž˜ํ”„ ์ƒ์— ์ƒˆ๋กœ์šด ์„ ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ๊ทธ๋ ค์ค€๋‹ค. ์ƒˆ๋กœ ๊ทธ๋ ค์ง€๋Š” ์„ ์˜ ๋ฐฐ์œจ์ด ๋‹ค๋ฅผ ๊ฒฝ์šฐ์—
๋Š” ์ž๋™์ ์œผ๋กœ ๋ฐฐ์œจ์„ ์žฌ์„ค์ •ํ•ด์„œ ๊ทธ๋ ค ์ค€๋‹ค.
ใ€‹plot(x)
ใ€‹hold on
ใ€‹plot(y1)
ใ€‹plot(y2)
ใ€‹hold off
1.5 ๋ณต์†Œ์ˆ˜ ์ž๋ฃŒ์˜ ๋„์‹œ
Z๊ฐ€ ํ•˜๋‚˜์˜ ๋ณต์†Œ ๋ฒกํ„ฐ ๋˜๋Š” ๋ณต์†Œ ํ–‰๋ ฌ์ผ ๋•Œ ๋‹ค์Œ์˜ ๋ช…๋ น์€ ์‹ค์ˆ˜๋ถ€์™€ ํ—ˆ์ˆ˜๋ถ€๋ฅผ ๋ถ„๋ฆฌํ•ด์„œ
๊ทธ๋ž˜ํ”„๋กœ ๋„์‹œํ•˜๊ฒŒ ๋œ๋‹ค.
ใ€‹plot(Z)
์ด๊ฒƒ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋™์ž‘์„ ํ•˜๊ฒŒ ๋œ๋‹ค.
ใ€‹plot(real(Z), imag(Z))
๋‹ค์Œ์˜ ์˜ˆ๋Š” 50ร—50์ธ ๋‚œ์ˆ˜ ํ–‰๋ ฌ์˜ ๊ณ ์œ ์น˜(eigenvalue)๋“ค์˜ ๋ถ„ํฌ๋ฅผ ๊ทธ๋ž˜ํ”„๋กœ ๋‚˜ํƒ€๋‚ธ ๊ฒƒ์ด
๋‹ค.
ใ€‹Z=eig(randn(50,50));
ใ€‹plot(Z,'*')
ํ•˜์ง€๋งŒ ์—ฌ๋Ÿฌ ๊ฐ€์ง€์˜ ๋ณต์†Œ์ˆ˜๋“ค(Z1, Z2, Z3)์„ ํ•œ๊บผ๋ฒˆ์— ๋„์‹œํ•˜๊ณ ์ž ํ•  ๊ฒฝ์šฐ์—๋Š”
plot(Z1,Z2,Z3)์™€ ๊ฐ™์ด ์“ธ ์ˆ˜ ์—†์œผ๋ฉฐ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž…๋ ฅํ•˜์—ฌ์•ผ ํ•œ๋‹ค.
ใ€‹plot(real(Z1), imag(Z1),'*', real(Z2), imag(Z2), 'd', real(Z3), imag(Z3),'^')
1.6 ํ…์ŠคํŠธ(text)์˜ ์‚ฝ์ž…
ํ…์ŠคํŠธ ์‚ฝ์ž…์„ ์œ„ํ•œ ๋ช…๋ น์—๋Š” โ€˜text'์™€ โ€™gtext' ๋ช…๋ น์–ด๊ฐ€ ์žˆ๋‹ค. โ€˜text' ๋ช…๋ น์–ด๋Š” x์ถ•๊ณผ y์ถ•
์œผ๋กœ ์ง€์ •๋œ ์ถœ๋ ฅ ์œ„์น˜๋งˆ๋‹ค ํ…์ŠคํŠธ๋ฅผ ์‚ฝ์ž…ํ•œ๋‹ค. โ€™gtext' ๋ช…๋ น์–ด๋Š” ๋งˆ์šฐ์Šค๋ฅผ ์ด์šฉํ•˜์—ฌ ์ž„์˜์˜
์œ„์น˜๋ฅผ ์„ ์ •ํ•˜๋ฉด ๊ทธ ์œ„์น˜์— ํ…์ŠคํŠธ๋ฅผ ์‚ฝ์ž…ํ•œ๋‹ค.
<plot_test1.m>
- 73 -
t=0:0.05:6*pi;
y1=sin(t);
y2=cos(t);
plot(y1,'r-')
hold on
plot(y2,'b.')
text(50,0.8 ,'sin ํ•จ์ˆ˜');
gtext('cos ํ•จ์ˆ˜')
hold off
์ˆ˜์ง๋ฐฉํ–ฅ์œผ๋กœ ํ…์ŠคํŠธ๋ฅผ ์‚ฝ์ž…ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์œ„์˜ m-ํŒŒ์ผ์—์„œ plot ๋ช…๋ น ์œ— ์ค„์—
set(gcf, 'defaulttextrotation,90)
์„ ์ถ”๊ฐ€ํ•˜๋ฉด ๋œ๋‹ค.
๊ฐ๊ฐ์˜ ๋ฐ์ดํ„ฐ ๊ทธ๋ž˜ํ”„๋กœ ๊ทธ๋ฆฐ ํ›„, ๋ฐ์ดํ„ฐ ์ ์˜ index๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.
ใ€‹y=rand(1,20);
ใ€‹x=1:length(y);
ใ€‹n=num2str(x');
ใ€‹plot(x,y,'dr')
ใ€‹text(x+0.2,y,n)
- 74 -
1.7 axis ํ•จ์ˆ˜
ํ•จ์ˆ˜ โ€˜axis'๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ๋Œ€๋กœ ๊ทธ๋ž˜ํ”„์˜ ์ข…ํšก๋น„, ๋ฐฉํ–ฅ ๋ฐ ๋ฐฐ์œจ ๋”ฐ์œ„๋ฅผ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ
๋„๋ก ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์„ ํƒ ์‚ฌํ•ญ๋“ค์„ ๊ฐ–์ถ”๊ณ  ์žˆ๋‹ค. ๋Œ€๊ฐœ์˜ ๊ฒฝ์šฐ์— matlab์€ ๋„์‹œํ•  ์ž๋ฃŒ์˜ ์ตœ๋Œ€
๋ฐ ์ตœ์†Œ๊ฐ’์„ ์ฐพ์•„ ์ค„๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ ๋‹นํ•œ ๊ทธ๋ž˜ํ”„ ์ƒ์ž์™€ ์ถ•์˜ ์ด๋ฆ„์„ ์„ ํƒํ•ด ์ฃผ์ง€๋งŒ, ์‚ฌ์šฉ์ž
๊ฐ€ ์›ํ•  ๋•Œ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ถ•์˜ ํ•œ๊ณ„ ๊ฐ’์„ ์ƒˆ๋กœ์ด ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
2์ฐจ์› : axis([xmin xmax ymin ymax])
3์ฐจ์› : axis([xmin xmax ymin ymax zmin zmax])
ใ€‹t=[0:10:360]*(pi/180);
ใ€‹x=2*cos(t);
ใ€‹plot(t,x)
ใ€‹axis equal
ใ€‹axis image
ใ€‹axis square
default equal
image square
- 75 -
1.8 Peaks M-ํŒŒ์ผ
Matlab์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด 3๊ฐœ์˜ ๊ทน๋Œ€์ ๊ณผ 2๊ฐœ์˜ ๊ทน์†Œ์ ์„ ๊ฐ€์ง€๋ฉด์„œ ๋‘ ๊ฐœ์˜ ๋ณ€์ˆ˜๋กœ ๊ตฌ
์„ฑ๋œ ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ, ์›ํ•˜๋Š” ํฌ๊ธฐ์˜ ํ–‰๋ ฌ์„ ๊ตฌ์„ฑํ•˜์—ฌ ์ฃผ๋Š” โ€˜peaks'๋ผ๋Š” m-ํŒŒ์ผ์„ ์ œ๊ณตํ•˜
๊ณ  ์žˆ๋‹ค.
f(x,y)=3( 1-x)2
e - x
2
-(y+1)
2
-10(
x
5
-x3
-y5
)e - x
2
-y
2
-
1
3
e - ( x + 1)
2
-y
2
์ด 'peaks' m-ํŒŒ์ผ์€ -3๋ถ€ํ„ฐ 3 ์‚ฌ์ด์˜ x ๋ฐ y ๊ฐ’์„ ์‚ฌ์šฉํ•˜์—ฌ ์œ„์˜ ํ•จ์ˆ˜๋กœ๋ถ€ํ„ฐ ๊ตฌํ•ด์ง€๋Š”
๊ฐ’๋“ค์„ ์›์†Œ๋กœ ํ•˜๋Š”, ์ง€์ •ํ•œ ์ฐจ์›๋งŒํผ์˜ ์ •๋ฐฉํ–‰๋ ฌ์„ ๊ตฌ์„ฑํ•ด ์ค€๋‹ค.
ใ€‹peaks(10);
์ด๋ผ๊ณ  ์ž…๋ ฅํ•˜๋ฉด 10ร—10์˜ ์ •๋ฐฉํ–‰๋ ฌ์„ ๊ตฌ์„ฑํ•˜์—ฌ ํ‘œ์‹œํ•ด ์ค€๋‹ค. ๋งŒ์•ฝ ์ž…๋ ฅ ์ธ์ˆ˜๋ฅผ ์ง€์ •ํ•˜์ง€
์•Š์œผ๋ฉด ๊ธฐ๋ณธ๊ฐ’์ธ 49๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ 49ร—49์˜ ์ •๋ฐฉํ–‰๋ ฌ์„ ์ƒ์„ฑํ•œ๋‹ค.
1.9 ํ–‰๋ ฌ์˜ ๋„์‹œ๋ฒ•
์ฐจ์›์ด mร—n์ธ ์ž„์˜์˜ ํ–‰๋ ฌ X๋ฅผ plot ๋ช…๋ น์œผ๋กœ ๋„์‹œํ•˜๋ฉด, X์˜ ๊ฐ ์—ด์˜ ์›์†Œ๋“ค์„ ์ž๋ฃŒ๋กœ
ํ•˜๋Š” ์„ ์„ ๊ทธ๋ฆฌ๋Š”๋ฐ, ์ด๋•Œ x์ถ•์˜ ์ขŒํ‘œ๋Š” 1๋ถ€ํ„ฐ n๊นŒ์ง€ ๊ฐ ์—ด์˜ ๋ฒˆํ˜ธ๋กœ ์ฃผ์–ด์ง€๋ฉฐ ๊ฐ ์„ ์˜ ์ž
๋ฃŒ์ ์€ m๊ฐœ๊ฐ€ ๋œ๋‹ค.
ใ€‹X=[1 2 3; 4 5 3]
X= 1 2 3
4 5 3
ใ€‹plot(X)
ใ€‹Y=[2 6 4 ;3 8 6;4 9 8; 5 7 3]
Y =
2 6 4
3 8 6
4 9 8
5 7 3
ใ€‹plot(peaks)
- 76 -
1.10 ๊ทธ๋ž˜ํ”„์˜ ๋ถ„ํ• 
ํ™”๋ฉด์— ๋ช‡ ๊ฐœ์˜ ๊ทธ๋ž˜ํ”„๋ฅผ ์ถœ๋ ฅํ•˜๊ณ ์ž ํ•  ๊ฒฝ์šฐ์—๋Š” โ€˜subplot(m,n,k)'๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. m
์€ ๊ทธ๋ ค์งˆ ๊ทธ๋ž˜ํ”„์˜ ํ–‰์˜ ๊ฐœ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๊ณ , n์€ ์—ด์˜ ๊ฐœ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ๋˜ํ•œ k๋Š” subplotํ• 
์ธ๋ฑ์Šค๋ฅผ ์ง€์ •ํ•˜๋Š”๋ฐ 1๋ถ€ํ„ฐ m*n๊นŒ์ง€์˜ ํฌ๊ธฐ๋ฅผ ๊ฐ™๊ฒŒ ๋œ๋‹ค.
<plot_test3>
t=0:0.1:10;
y=sin(t);
subplot(2,3,1), plot(t,y),title('plot1')
subplot(2,3,2), plot(t,y+1),title('plot2')
subplot(2,3,3), plot(t,y+2),title('plot3')
subplot(2,3,4), plot(t,y+3),title('plot4')
subplot(2,3,5), plot(t,y+4),title('plot5')
subplot(2,3,6), plot(t,y+5),title('plot6')
ํฌ๊ธฐ๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅธ ๊ทธ๋ž˜ํ”„๋ฅผ ํ•œ ํ™”๋ฉด์— ์ถœ๋ ฅํ•˜๊ณ  ํ•  ๊ฒฝ์šฐ์—๋Š” โ€˜axes'๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
'axes'๋ช…๋ น์–ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ขŒํ‘œ๋ฅผ ์„ค์ •ํ•˜๊ฒŒ ๋œ๋‹ค.
axes('position',[left bottom width height])
์—ฌ๊ธฐ์„œ ๊ทธ๋ฆผ์ฐฝ์˜ ๊ธฐ๋ณธ๊ฐ’์€ ์™ผ์ชฝ ์•„๋ž˜์˜ ์ขŒํ‘œ๊ฐ’์€(0,0)์ด๊ณ , ์˜ค๋ฅธ์ชฝ ์œ„์˜ ์ขŒํ‘œ๊ฐ’์€ (1,1)๋กœ ์„ค
์ •๋˜์–ด ์žˆ๋‹ค.
- 77 -
<plot_test4.m>
clf
t=0:0.05:4*pi;
y=sin(t);
c=cos(t);
axes('position',[0.1 0.7 0.8 0.2]);
plot(y,'r-');
hold on
plot(c,'g');
axes('position',[0.1 0.1 0.8 0.5])
mesh(sphere)
1.11 ์ˆ˜ํ•™์  ํ•จ์ˆ˜์˜ ๋„์‹œ
'y = f(x)'์™€ ๊ฐ™์€ ํ•จ์ˆ˜๋ฅผ ๋„์‹œํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๋Š”๋ฐ, ๊ฐ€์žฅ ๋‹จ์ˆœํ•˜์ง€
๋งŒ ํšจ๊ณผ์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” ์›ํ•˜๋Š” ๊ตฌ๊ฐ„์„ ์ˆ˜์ฒœ ๊ฐœ์˜ ์ž‘์€ ๊ตฌ๊ฐ„์œผ๋กœ ๋ถ„ํ• ํ•˜์—ฌ ๊ฐ ์ ๋งˆ๋‹ค ํ•จ์ˆ˜
๊ฐ’์„ ๊ตฌํ•œ ํ›„์— ๊ทธ ๊ฐ’๋“ค์„ ๋„์‹œํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ•จ์ˆ˜๋Š” 0โ‰คxโ‰ค1์—์„œ ๋ฌดํ•œ๋Œ€๋กœ ์ง„๋™ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.
ใ€‹x=(0:1/1500:1)';
ใ€‹plot(x,sin(tan(pi*x)))
ใ€‹x=(0:1/150:1)';
ใ€‹plot(x,sin(tan(pi*x)))
- 78 -
๊ทธ๋Ÿฌ๋‚˜ ์ด๋Ÿฌํ•œ ๋ฐฉ๋ฒ•์€ ๊ตฌ๊ฐ„์„ ์–ผ๋งˆ๋‚˜ ๋งŽ์ด ์ž‘๊ฒŒ ์ชผ๊ฐœ์–ด ๊ณ„์‚ฐํ•˜๋Š๋ƒ์— ๋”ฐ๋ผ ๊ฐ’์˜ ์ •ํ™•๋„์—
ํฐ ์ฐจ์ด๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜๋ฉฐ, ๋˜ํ•œ ์œ„์˜ ๊ฒฝ์šฐ์™€ ๊ฐ™์ด ๋ถ€๋ถ„์ ์œผ๋กœ ๋งŽ์€ ์ ๋“ค์ด ๋ฐ€์ง‘๋˜์–ด ์žˆ๋Š”
๊ฒ…์šฐ์—๋Š” ์ƒ๋‹นํžˆ ๋น„ํšจ์œจ์ ์ด๋‹ค.
์ด๋Ÿฌํ•œ ๋‹จ์ ์— ๋Œ€ํ•œ ๋ณด์™„์ฑ…์œผ๋กœ ํ•จ์ˆ˜ โ€˜fplot'์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. โ€™fplot' ํ•จ์ˆ˜๋Š” ์„ ํƒ
์ ์œผ๋กœ ํ•จ์ˆ˜์˜ ๊ฐ’์˜ ์ทจํ•˜๋Š”๋ฐ, ํ•จ์ˆ˜ ๊ฐ’์˜ ๋ณ€ํ™”๊ฐ€ ์‹ฌํ•œ ๋ถ€๋ถ„์—์„œ๋Š” ๋งŽ์€ ์ ๋“ค์„ ์„ ํƒํ•˜์—ฌ ๊ณ„
์‚ฐ์„ ํ•˜๊ณ  ํ•จ์ˆ˜ ๊ฐ’์˜ ๋ณ€ํ™”๊ฐ€ ์ ์€ ๋ถ€๋ถ„์—์„œ๋Š” ๋ช‡ ๊ฐœ์˜ ์ ๋งŒ์„ ์„ ํƒํ•˜์—ฌ ๊ณ„์‚ฐ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.
<sin_tan.m>
function y=sin_tan(x)
y=sin(tan(pi*x));
ใ€‹fplot('sin_tan',[0 1])
1.12 ๊ทธ๋ž˜ํ”ฝ ์ž…๋ ฅ
Matlab์—์„œ๋Š” โ€˜ginput' ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ๋งˆ์šฐ์Šค๋‚˜ ๋ฐฉํ–ฅํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ทธ๋ž˜ํ”„ ์ƒ์˜ ํ•œ
์ ์„ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์ด ํ•จ์ˆ˜๋Š” ์ง€์‹œ์ž(pointer)์˜ ํ˜„์žฌ ์œ„์น˜ ๋˜๋Š” ๋งˆ์šฐ์Šค๋‚˜ ํ‚ค๋ณด
๋“œ์˜ ํ‚ค๊ฐ€ ๋ˆŒ๋ ค์กŒ์„ ๋•Œ์˜ ์œ„์น˜๋ฅผ ์ขŒํ‘œ๊ฐ’์œผ๋กœ ๋˜๋Œ๋ ค ์ค€๋‹ค.
๋‹ค์Œ์˜ ์˜ˆ๋Š” 2์ฐจ์›์—์„œ ๋‚ด์‚ฝ์— ์˜ํ•˜์—ฌ ๋งค๋„๋Ÿฌ์šด ๊ณก์„ ์„ ๊ตฌ์„ฑํ•˜๋Š” โ€˜spline' ํ•จ์ˆ˜๋ฅผ ํ†ตํ•˜์—ฌ
โ€™ginput'์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•˜์—ฌ ์„ค๋ช…ํ•˜๊ณ  ์žˆ๋‹ค.
๋จผ์ € ํ•จ์ˆ˜ โ€˜ginput'์„ ํ†ตํ•˜์—ฌ ํ‰๋ฉด์ƒ์˜ ์ผ๋ จ์˜ ์ ๋“ค (x,y)๋ฅผ ์ง€์ •ํ•˜๋ฉด, ์›๋ž˜์˜ ๋‘ ์  ์‚ฌ์ด
์˜ ๊ฐ„๊ฒฉ์— ๋Œ€ํ•˜์—ฌ 1/5์˜ ๊ฐ„๊ฒฉ์œผ๋กœ ๋‚ด์‚ฝ๋œ ๊ฐ๊ฐ์˜ ์ ๋“ค์„ ํ†ต๊ณผํ•˜๋Š” ์šดํ˜•๊ณก์„ (spline)์ด ๊ทธ๋ ค
์ง„๋‹ค.
<mouse_test.m>
- 79 -
% ๊ทธ๋ฆผ์ฐฝ์„ ์ง€์šฐ๊ณ  ๊ทธ๋ž˜ํ”„์˜ ํฌ๊ธฐ๋ฅผ ์ง€์ •
clf % ๊ทธ๋ฆผ์ฐฝ์„ ์ง€์›€
axis([0 10 0 10])
hold on
% ์ ์˜ ์ขŒํ‘œ์— ๋Œ€ํ•œ ๋ชฉ๋ก์„ ๋นˆ ์ƒํƒœ๋กœ ์ง€์ •
x = [ ]; % x ์ขŒํ‘œ๊ฐ’์˜ ์ฐจ์›
y = [ ]; % y ์ขŒํ‘œ๊ฐ’์˜ ์ฐจ์›
n = 0; % ์ ์ด ์ฐํžŒ ์ˆœ์„œ์˜ ์ดˆ๊ธฐ๊ฐ’
% ์˜ค๋ฅธ์ชฝ ๋งˆ์šฐ์Šค ๋ฒ„ํŠผ์ด ๋ˆŒ๋ฆฌ๊ธฐ ์ „๊นŒ์ง€ ๊ณ„์†์ ์œผ๋กœ ๊ทธ๋ž˜ํ”„ ์ƒ์— ์ฐํžˆ๋Š” ์ ์„ ๊ธฐ๋ก
leftright = 1; % ์™ผ์ชฝ ๋˜๋Š” ์˜ค๋ฅธ์ชฝ ๋งˆ์šฐ์Šค ๋ฒ„ํŠผ์˜ ๋ˆŒ๋ฆผ ์—ฌ๋ถ€
while leftright == 1
[xi,yi,leftright] = ginput(1); % ๋งˆ์šฐ์Šค ๋ฒ„ํŠผ ์ž…๋ ฅ
plot(xi,yi,'go') % ๊ทธ๋ž˜ํ”„ ์ƒ์— ์ ์˜ ํ‘œ์‹œ
n=n+1; % ์ฐํžŒ ์ ์˜ ๋ฒˆํ˜ธ ์ฆ๊ฐ€
x(n,1)=xi; % x ์ขŒํ‘œ๊ฐ’์˜ ์ž…๋ ฅ
y(n,1)=yi; % y ์ขŒํ‘œ๊ฐ’์˜ ์ž…๋ ฅ
end
% ๋‘ ์  ์‚ฌ์ด๋ฅผ 5๊ฐœ์˜ ๊ตฌ๊ฐ„์œผ๋กœ ๋ถ„ํ• ํ•œ ํ›„ ๊ฐ๊ฐ์— ๋Œ€ํ•˜์—ฌ ์šดํ˜• ๊ณก์„ (spline)์œผ๋กœ ์—ฐ๊ฒฐ
t=1:n;
tt=1:0.2:n;
xx=spline(t,x,tt);
yy=spline(t,y,tt);
% ๋‚ด์‚ฝ๋œ ๊ณก์„ ์„ ๊ทธ๋ฆผ
plot(xx,yy,'r-')
hold off
- 80 -
1.13 2์ฐจ์› ๊ทธ๋ž˜ํ”„๋“ค์˜ ์ข…๋ฅ˜
โ‘  bar(๋ง‰๋Œ€ ๊ทธ๋ž˜ํ”„) - ์ผ์ฐจ์ ์ธ ๋ง‰๋Œ€ ๊ทธ๋ž˜ํ”„์˜ ํ˜•ํƒœ๋กœ ํ‘œ์‹œ
ใ€‹x=-2.9:0.2:2.9;
ใ€‹bar(x,exp(-x.*x),0.5)
-3 -2 -1 0 1 2 3
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
ใ€‹bar(0:.25:1,rand(5,3),0.8)
ใ€‹bar(rand(5,3),'stacked'), colormap(cool)
-0.2 0 0.2 0.4 0.6 0.8 1 1.2
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
1 2 3 4 5
0
0.5
1
1.5
2
2.5
โ‘ก compass(ํ™”์‚ดํ‘œ ๊ทธ๋ž˜ํ”„) - ๋ณต์†Œ์ˆ˜ ๋˜๋Š” ๋ฒกํ„ฐ๋ฅผ ํ‘œ์‹œํ•  ๋•Œ์™€ ๊ฐ™์ด ๊ฐ๋„์™€ ํฌ๊ธฐ๋ฅผ ๊ฐ€์ง€
๋ฉด์„œ ์›์ ์œผ๋กœ๋ถ€ํ„ฐ ๋ฐฉ์‚ฌ๋˜๋Š” ํ™”์‚ดํ‘œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž๋ฃŒ๋ฅผ ํ‘œ์‹œ
ใ€‹z=eig(randn(20,20));
ใ€‹compass(z)
1
2
3
4
5
30
210
60
240
90
270
120
300
150
330
โ‘ข errorbar(์˜ค์ฐจ ๋ง‰๋Œ€) - ์˜ค์ฐจ ๋ง‰๋Œ€๋ฅผ ์‚ฌ์šฉํ•œ ๊ทธ๋ž˜ํ”„๋ฅผ ์ž‘์„ฑ
ใ€‹x=0:0.1:2;
- 81 -
ใ€‹y=erf(x);
ใ€‹e=rand(size(x))/10;
ใ€‹errorbar(x,y,e)
-0.5 0 0.5 1 1.5 2 2.5
-0.2
0
0.2
0.4
0.6
0.8
1
1.2
โ‘ฃ feather(ํ™”์‚ดํ‘œ ๊ทธ๋ž˜ํ”„) - ํฌ๊ธฐ์™€ ๊ฐ๋„๋ฅผ ๊ฐ–๋Š” ํ™”์‚ดํ‘œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ์ ์€ 'compass' ๊ทธ
๋ž˜ํ”„์™€ ๊ฐ™์ง€๋งŒ, ํ™”์‚ดํ‘œ์˜ ์‹œ์ž‘์ ์ด ์›์ ์— ์œ„์น˜ํ•˜์ง€ ์•Š๊ณ  x์ถ•์„ ๋”ฐ๋ผ ์ผ์ •ํ•œ ์ž๋ฃŒ์˜ ๊ฐœ์ˆ˜๋งŒ
ํผ ๋ถ„ํฌ๋œ๋‹ค๋Š” ์ ์ด ๋‹ค๋ฅด๋‹ค.
ใ€‹z=randn(3,3) + randn(3,3)*j
z =
-0.0715 - 0.5081i 0.1798 + 0.6250i 0.8252 + 0.4344i
0.2792 + 0.8564i -0.5420 - 1.0473i 0.2308 - 1.9171i
1.3733 + 0.2685i 1.6342 + 1.5357i 0.6716 + 0.4699i
ใ€‹feather(z)
0 1 2 3 4 5 6 7 8 9 10
-2
-1.5
-1
-0.5
0
0.5
1
1.5
2
โ‘ค fplot(ํ•จ์ˆ˜ ๊ทธ๋ž˜ํ”„) - ํ•จ์ˆ˜์™€ ๊ตฌ๊ฐ„์„ ์ง€์ •ํ•˜๋ฉด ๊ทธ ๊ตฌ๊ฐ„์—์„œ์˜ ํ•จ์ˆ˜๊ฐ’์„ ๊ทธ๋ž˜ํ”„๋กœ ๊ทธ๋ ค์ค€
๋‹ค.
ใ€‹fplot('tanh',[-2 2])
โ‘ฅ hist(๋ง‰๋Œ€ ๊ทธ๋ž˜ํ”„) - 'bar'์™€ ๊ฐ™์€ ํ˜•ํƒœ์˜ ๋ง‰๋Œ€ ๊ทธ๋ž˜ํ”„์ด์ง€๋งŒ ํ†ต๊ณ„์ฒ˜๋ฆฌ์— ์‚ฌ์šฉ๋˜๋Š” ํžˆ์Šค
ํ† ๊ทธ๋žจ(histogram)์„ ๊ทธ๋ ค ์ค€๋‹ค.
ใ€‹x=-2.9:0.1:2.9;
- 82 -
ใ€‹y=randn(10000,1);
ใ€‹hist(y,x)
โ‘ฆ polar(๊ทน์ขŒํ‘œ ๊ทธ๋ž˜ํ”„) - ๊ฐ๋„์™€ ๋ฐ˜๊ฒฝ์„ ๊ฐ–๋Š” ๊ทน์ขŒํ‘œ์˜ ํ˜•ํƒœ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž๋ฃŒ์ ๋“ค์„ ์—ฐ
์†์ ์œผ๋กœ ๋‚˜ํƒ€๋‚ธ๋‹ค.
ใ€‹t=0:0.01:2*pi;
ใ€‹polar(t,sin(2*t).*cos(2*t))
-3 -2 -1 0 1 2 3
0
50
100
150
200
250
300
350
400
450
0.1
0.2
0.3
0.4
0.5
30
210
60
240
90
270
120
300
150
330
โ‘ง fill(๋‹ค๊ฐํ˜• ๊ทธ๋ž˜ํ”„) - ์ผ๋ฐ˜์ ์ธ ํ˜•ํƒœ์˜ ์„ (line) ๊ทธ๋ž˜ํ”„์—์„œ ์ฒซ ๋ฒˆ์งธ ์ž๋ฃŒ์ ๊ณผ ๋งˆ์ง€๋ง‰ ์ž
๋ฃŒ์ ์„ ์—ฐ๊ฒฐํ•˜์—ฌ ๋‹ค๊ฐํ˜•์„ ๋งŒ๋“  ํ›„ ๋‚ด๋ถ€๋ฅผ ์›ํ•˜๋Š” ์ƒ‰์ƒ์œผ๋กœ ์ฑ„์›Œ ์ค€๋‹ค.
ใ€‹t=0:0.1:3*pi;
ใ€‹x=cos(t);
ใ€‹fill(t,x,'r')
ใ€‹colormap(hot)
ใ€‹fill(t,x,x)
ใ€‹colormenu
โ‘จ stairs(๊ณ„๋‹จํ˜• ๊ทธ๋ž˜ํ”„)
ใ€‹x=0:0.25:10;
ใ€‹stairs(x,sin(x))
0 2 4 6 8 10
-1
-0.5
0
0.5
1
โ‘ฉ๊ธฐํƒ€ - quiver(ํ™”์‚ดํ‘œ ๊ทธ๋ž˜ํ”„), rose(์›ํ˜• ๋ง‰๋Œ€ ๊ทธ๋ž˜ํ”„)
- 83 -
2. 3์ฐจ์› ๊ทธ๋ž˜ํ”ฝ
Matlab ํ”„๋กœ๊ทธ๋žจ์—์„œ ์ œ๊ณตํ•˜๋Š” 3์ฐจ์› ๊ทธ๋ž˜ํ”„๋Š” ๊ฒฉ์ž ์ƒ์„ฑ, ๋“ฑ๊ณ ์„ , ์˜์ƒ์ฒ˜๋ฆฌ, ์€์„  ์ œ๊ฑฐ,
๋™ํ™”์ƒ๊ณผ ์ƒ‰ ์ง€์ • ๋ฐ ๊ด€์ฐฐ์ ์˜ ์ด๋™ ๋“ฑ๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ, ์ขŒํ‘œ์ถ•์ด 3๊ฐœ์ธ 3์ฐจ
์›์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋…์ž์ ์ธ ๋„ํ˜•์šฉ ํ•จ์ˆ˜๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
3์ฐจ์› ๊ทธ๋ž˜ํ”„์—์˜ ์ถ”๊ฐ€ ์‚ฌํ•ญ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
zlabel : z์ถ•์— ๋Œ€ํ•œ ์ถ• ์ด๋ฆ„ ์ง€์ •.
clabel : ์œค๊ณฝ์„ (contour) ๊ทธ๋ž˜ํ”„์˜ ๊ฒฝ์šฐ์— ๊ฐ๊ฐ์˜ ์œค๊ณฝ์„ ์— ๋Œ€ํ•œ ๊ธฐํ˜ธ๋ฅผ ๋ถ™์—ฌ ์คŒ.
view : ๋ฐฉ์œ„๊ฐ๊ณผ ๊ณ ๋„๋ฅผ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ ๋ณ€ํ™˜ ํ–‰๋ ฌ์„ ์ง€์ •ํ•จ์œผ๋กœ์จ ๊ด€์ฐฐ ์œ„์น˜ ์„ค์ •.
viewmtx : ์ง๊ฐ ํˆฌ์˜(orthogrphic) ๋ฐ ์›๊ทผ ํˆฌ์˜(perspective) ๋ณ€ํ™˜์— ๋Œ€ํ•˜์—ฌ 4X4์˜ ๋ณ€
ํ™˜ ํ–‰๋ ฌ ๊ณ„์‚ฐ
2.1 ์„  ๊ทธ๋ž˜ํ”„
2์ฐจ์› ๊ทธ๋ž˜ํ”„์˜ โ€˜plot' ๋ช…๋ น์–ด์— ํ•ด๋‹นํ•˜๋Š” ๊ฒƒ์œผ๋กœ 3์ฐจ์› ๊ทธ๋ž˜ํ”„์—์„œ๋Š” โ€™plot3' ๋ช…๋ น์–ด๊ฐ€ ์žˆ
๋‹ค. โ€˜plot3(x,y,z)' ๋ช…๋ น์–ด๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ 3๊ฐœ์˜ ์š”์†Œ๋ฅผ ํ•„์š”๋กœ ํ•˜๋ฉฐ, x์™€ y์˜ ๊ฐ’์— ๋Œ€ํ•ด์„œ z์˜
๊ฐ’์„ ๊ทธ๋ฆฌ๋Š” ๊ฒƒ์œผ๋กœ์จ, ๋ฒกํ„ฐ x, y, z ๋Œ€์‹ ์— ํ–‰๋ ฌ X, Y, Z๋ฅผ ์ง€์ •ํ•ด๋„ ๋œ๋‹ค. ํ–‰๋ ฌ์ผ ๊ฒฝ์šฐ์—
๋Š” ๋Œ€์‘ํ•˜๋Š” ์—ด๋งˆ๋‹ค ๊ทธ๋ž˜ํ”„๊ฐ€ ๊ทธ๋ ค์ง„๋‹ค.
x ,y, z๊ฐ€ ์„œ๋กœ ์ฐจ์›์ด ๊ฐ™์€ ๋ฒกํ„ฐ์ผ ๊ฒฝ์šฐ, x, y, z์— ์˜ํ•˜์—ฌ ํ‘œ์‹œ๋˜๋Š” ์ ๋“ค์„ ์ง€๋‚˜๋Š” 3์ฐจ์›
๊ณต๊ฐ„ ์ƒ์˜ ์„ ์„ ๊ตฌ์„ฑํ•˜๊ฒŒ ๋œ๋‹ค.
ใ€‹t=0:pi/100:5*pi; % t์˜ ์ฐจ์› - 1ร—501
ใ€‹plot3(sin(t),cos(t),t,'.r')
-1
-0.5
0
0.5
1
-1
0
1
0
10
20
๋˜ํ•œ x, y, z๊ฐ€ ์ฐจ์›์ด ๊ฐ™์€ 3๊ฐœ์˜ ํ–‰๋ ฌ์ผ ๊ฒฝ์šฐ, ๊ฐ๊ฐ ํ–‰๋ ฌ x, y, z์˜ ์—ด์˜ ์›์†Œ๋“ค์— ์˜ํ•˜
์—ฌ ํ‘œ์‹œ๋˜๋Š” ์ ๋“ค์„ ํ†ต๊ณผํ•˜๋Š” ์„ ๋“ค์„ ๊ทธ๋ ค์ค€๋‹ค.
ใ€‹x=[1 3;6 5], y=[9 0; 9 2], z=[3 5; 11 16]
ใ€‹plot3(x,y,z)
1
2
3
4
5
6
0
5
10
0
5
10
15
20
- 84 -
2.2 ๊ทธ๋ฌผ ๊ฒฉ์ž ๊ทธ๋ž˜ํ”„(mesh)
x, y ํ‰๋ฉด์—์„œ์˜ ๋ˆˆ๊ธˆ ๊ฒฉ์ž(grid line)์— ๋Œ€ํ•˜์—ฌ z ์ขŒํ‘œ๋ฅผ ์ง€์ •ํ•จ์œผ๋กœ์จ 3์ฐจ์› ํ‘œ๋ฉด์œผ๋กœ
๊ตฌ์„ฑ๋˜๋Š” ๊ทธ๋ฌผ ๊ฒฉ์ž(meshgrid)๊ฐ€ ์žˆ๋Š” ๋ฉด์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ฌผ ํ‘œ๋ฉด(mesh surface)์€ ์ˆ˜
์น˜์ ์ธ ํ˜•ํƒœ๋กœ ํ‘œํ˜„ํ•˜๊ธฐ์—๋Š” ๋„ˆ๋ฌด ํฐ ํ–‰๋ ฌ์„ ๋‚˜ํƒ€๋‚ด๊ฑฐ๋‚˜, ๋‘ ๊ฐœ์˜ ๋ณ€์ˆ˜๋กœ ๊ตฌ์„ฑ๋œ ํ•จ์ˆ˜๋ฅผ ๊ทธ
๋ž˜ํ”„๋กœ ๋‚˜ํƒ€๋‚ด๋Š”๋ฐ ์œ ์šฉํ•˜๋‹ค. 'meshgrid' ๋ช…๋ น์–ด์˜ ์‚ฌ์šฉ๋ฒ•์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.
[X, Y]=meshgrid(x,y)
์ด๊ฒƒ์€, ๋‘ ๋ฒกํ„ฐ x์™€ y์— ์˜ํ•˜์—ฌ ์ง€์ •๋œ ์ •์˜์—ญ์„ ํ–‰๋ ฌ X, Y๋กœ ๋ณ€ํ™˜ํ•˜๊ณ  ํ•˜๋Š”๋ฐ, ์ด๋•Œ ํ–‰๋ ฌ
X์˜ ํ–‰์€ ๋ฒกํ„ฐ x์™€ ๊ฐ™๊ณ  ํ–‰๋ ฌ Y์˜ ์—ด์€ ๋ฒกํ„ฐ y์™€ ๊ฐ™๋‹ค.
์•„๋ž˜์˜ ์˜ˆ๋Š” meshgrid๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ทธ๋ฌผ๊ฒฉ์ž ๊ทธ๋ž˜ํ”„๋ฅผ ๋„์‹œํ•œ ๊ฒƒ์ด๋‹ค.(๋ฉ•๊ณ  ๋ชจ์ž,
sombrero)
ใ€‹x=-10:.5:10;
ใ€‹y=x;
ใ€‹[X,Y]=meshgrid(x,y);
ใ€‹r=sqrt(X.^2+Y.^2)+eps; % eps : Z๋ฅผ ๊ตฌํ•  ๋•Œ ๋ถ„๋ชจ์˜ r๊ฐ’์œผ๋กœ ์ธํ•˜์—ฌ ๋ถˆ๋Šฅ(NaN)์ธ
ใ€‹Z=sin(r)./r; % ๊ฒฝ์šฐ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ํ•œ๋‹ค.
ใ€‹mesh(Z)
์œ„์˜ ํ”„๋กœ๊ทธ๋žจ์— ์•„๋ž˜์™€ ๊ฐ™์ด, 5๊ฐœ์˜ ์›์†Œ๋ฅผ ๊ฐ–๋Š” x๋ฅผ ๊ฐ€์ง€๊ณ  ์˜ˆ๋ฅผ ๋“ค์–ด ๋ณด์•˜๋‹ค.
x =
-2 -1 0 1 2
y =
-2 -1 0 1 2
X =
-2 -1 0 1 2
-2 -1 0 1 2
-2 -1 0 1 2
-2 -1 0 1 2
-2 -1 0 1 2
Y =
-2 -2 -2 -2 -2
- 85 -
-1 -1 -1 -1 -1
0 0 0 0 0
1 1 1 1 1
2 2 2 2 2
r =
2.8284 2.2361 2.0000 2.2361 2.8284
2.2361 1.4142 1.0000 1.4142 2.2361
2.0000 1.0000 0.0000 1.0000 2.0000
2.2361 1.4142 1.0000 1.4142 2.2361
2.8284 2.2361 2.0000 2.2361 2.8284
z =
0.1089 0.3518 0.4546 0.3518 0.1089
0.3518 0.6985 0.8415 0.6985 0.3518
0.4546 0.8415 1.0000 0.8415 0.4546
0.35 18 0.6985 0.8415 0.6985 0.3518
0.1089 0.3518 0.4546 0.3518 0.1089
<plot3_test1.m>
clear all
m=4;n=6;
for i=1:m
for j=1:n
z(i,j)=j/i;
end
end
mesh(z)
1
2
3
4
5
6
1
2
3
4
0
1
2
3
4
5
6
2.3 ์€์„  ์ œ๊ฑฐ
Matlab ํ”„๋กœ๊ทธ๋žจ์—์„œ๋Š” 3์ฐจ์› ๋„ํ˜•์˜ ๊ทธ๋ฌผ ๊ฒฉ์ž์— ๋Œ€ํ•œ ์€์„ (hidden)์„ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด์„œ
โ€˜hidden' ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์ด ๋ช…๋ น์–ด๋Š” โ€™hidden on'๊ณผ โ€˜hidden off'์™€ ๊ฐ™์ด ํ† ๊ธ€ ๋ฐฉ์‹์œผ๋กœ
์‚ฌ์šฉ๋˜๋Š”๋ฐ โ€™hidden off'๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ทธ๋ฌผ ๊ฒฉ์ž๋ฅผ ํˆฌ๊ณผํ•ด์„œ ๋‹ค๋ฅธ ๊ทธ๋ž˜ํ”„์˜ ํ˜•์ƒ์„ ๊ด€์ฐฐํ•  ์ˆ˜
์žˆ๋‹ค.
ใ€‹mesh(peaks+5)
ใ€‹hold on
ใ€‹hidden on
- 86 -
ใ€‹mesh(peaks)
ใ€‹hold off
ใ€‹hidden off
Hidden On Hidden Off
2.4 ํ‘œ๋ฉด ๊ทธ๋ž˜ํ”„(surf )
โ€˜mesh'๊ฐ€ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฉด์—์„œ ์ƒ‰์ƒ์„ ๊ฐ€์ง€์ง€ ์•Š๋Š” ๋ฐ˜๋ฉด, โ€˜surf'๋Š” ์ƒ‰์ƒ์ด ์ง€์ •๋œ ํ‰
๋ฉด(facet)๋“ค๋กœ ๊ตฌ์„ฑ๋œ ํ‘œ๋ฉด์„ ์›๊ทผ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ณด์—ฌ์ค€๋‹ค. ๋Œ€๊ฐœ ์ด๋Ÿฌํ•œ ์ž‘์€ ํ‰๋ฉด๋“ค(facets)
์€ ๊ฒ€์€ ์ƒ‰์˜ ๊ทธ๋ฌผ ๊ฒฉ์ž๋กœ ์™ธ๊ณฝ์„ ์„ ๋‘๋ฅธ ์ผ์ •ํ•œ ์ƒ‰์ƒ์˜ ์‚ฌ๊ฐํ˜•๋“ค์ด์ง€๋งŒ 'shading' ํ•จ์ˆ˜๋ฅผ
์‚ฌ์šฉํ•˜๋ฉด ๊ทธ๋ฌผ ๊ฒฉ์ž๋ฅผ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ž‘์€ ํ‰๋ฉด๋“ค ์‚ฌ์ด์—๋„ ๋‘ ์ƒ‰์ƒ๊ฐ„์˜ ๋‚ด์‚ฝ
(interpolation)์— ์˜ํ•œ ๋ฌ˜์˜๋ฒ•์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. โ€™
ใ€‹surf(peaks(25))
ใ€‹shading flat
ใ€‹shading interp
flat interp
- 87 -
2.5 ์œค๊ณฝ์„  ๊ทธ๋ž˜ํ”„(contour, contour3)
์œค๊ณฝ์„ (contour)์˜ ํ˜•ํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ํ–‰๋ ฌ ์ž…๋ ฅ์œผ๋กœ๋ถ€ํ„ฐ ๊ฐ’์ด ๊ฐ™์€ ์ ๋“ค์„
์—ฐ๊ฒฐํ•˜๋Š” ์„ ์„ ๊ทธ๋ ค์ค€๋‹ค. 2์ฐจ์› ์œค๊ณฝ์„  ๊ทธ๋ž˜ํ”„๋Š” 'contour' ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , 3์ฐจ์› ์œค๊ณฝ
์„  ๊ทธ๋ž˜ํ”„๋Š” โ€˜contour3' ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
์•„๋ž˜์˜ ์˜ˆ๋Š” 'peaks' ํ•จ์ˆ˜์— ์˜ํ•˜์—ฌ ๊ตฌ์„ฑ๋œ ํ–‰๋ ฌ์— ๋Œ€ํ•˜์—ฌ 15๊ฐœ์˜ ์œค๊ณฝ์„ ์„ ๊ฐ–๋Š” ๊ทธ๋ž˜ํ”„
๋ฅผ 2์ฐจ์›๊ณผ 3์ฐจ์›์œผ๋กœ ๊ทธ๋ฆฐ ๊ฒƒ์ด๋‹ค.
ใ€‹contour(peaks,15)
ใ€‹contour3(peaks,15)
5 10 15 20 25 30 35 40 45
5
10
15
20
25
30
35
40
45
10
20
30
40
10
20
30
40
-10
-5
0
5
10
2.6 'surf'์™€ 'mesh'์˜ ๋ณ€ํ˜•๋“ค
ใ€‹surfc(peaks(25)) % 2์ฐจ์› contour ํฌํ•จ
ใ€‹meshc(peaks(25)) % 2์ฐจ์› contour ํฌํ•จ
ใ€‹surfl(peaks(25),[-15 45]) % ๋ช…์•”์„ ๊ฐ–๋Š” ํ‘œ๋ฉด ํ‘œํ˜„(๋ฐฉ์œ„๊ฐ -15๋„, ๊ณ ๋„ 45๋„)
2.7 ๊ด€์ฐฐ์ (View Point)
3์ฐจ์› ๊ทธ๋ž˜ํ”„์˜ ๊ด€์ฐฐ ๋ฐฉํ–ฅ์„ ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ๊ฒฝ์šฐ์— ์–ด๋– ํ•œ ๊ด€์ฐฐ์ ์—์„œ ๊ทธ๋ž˜ํ”„์˜ ํ˜•์ƒ์„
๊ด€์ฐฐํ•˜๋„๋ก ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด์™€ ๊ฐ™์€ ๊ฒƒ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์œผ๋กœ โ€˜view' ๋ช…๋ น์–ด๊ฐ€ ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ
โ€™view' ๋ช…๋ น์–ด์— ๋Œ€ํ•œ ์ผ๋ฐ˜์ ์ธ ํ˜•ํƒœ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
view(azimuth, elevation)
์—ฌ๊ธฐ์„œ ๋ฐฉ์œ„๊ฐ(azimuth)์€ ๋ฐ˜์‹œ๊ณ„ ๋ฐฉํ–ฅ์œผ๋กœ ์–‘์˜ ๊ฐ’์„ ๊ฐ–๊ณ , ๊ณ ๋„(elevation)๋Š” x, y ํ‰๋ฉด
์˜ ์œ„์ชฝ์ด ์–‘์ด ๋˜๊ณ  ์•„๋ž˜์ชฝ์ด ์Œ์ด ๋œ๋‹ค.
- 88 -
z
viewpoint
x
y
elevation
azimuth
origin
ใ€‹colormap(hsv)
ใ€‹subplot(221), surf(peaks(25)), view(-45,45)
ใ€‹subplot(222), surf(peaks(25)), view(-10,60)
ใ€‹subplot(223), surf(peaks(25)), view(-90,0)
ใ€‹subplot(224), surf(peaks(25)), view(-10,-15)
3. Handle Graphics
Mathworks์‚ฌ์—์„œ๋Š” matlab์—์„œ ์ด์šฉ๋˜๋Š” ๊ทธ๋ž˜ํ”„๋“ค์˜ ์ฒด๊ณ„๋ฅผ ์œ„ํ•ด 'Handle Graphics
System'์ด๋ผ๋Š” ์ƒˆ๋กœ์šด ์šฉ์–ด๋ฅผ ๋งŒ๋“ค์–ด ๋ƒˆ๋‹ค. ๋˜ํ•œ ์ปดํ“จํ„ฐ screen์„ ํฌํ•จํ•œ ๊ฐœ๊ฐœ์˜ ๋ชจ๋“  ๊ทธ๋ฆผ
์ฐฝ(figure window)๋“ค๊ณผ ์ขŒํ‘œ์ถ•๋“ค ๊ทธ๋ฆฌ๊ณ  patch(๊ทธ๋ฆผ ์„ฑ๋ถ„)๋“ค์€ โ€˜graphics object'๋ผ๊ณ  ๋ถ€๋ฅธ
๋‹ค. ์•ž์œผ๋กœ ๋ฐฐ์šธ line, text, image, user interface controls, ๊ทธ๋ฆฌ๊ณ  user interface pulldown
menus ๋“ฑ๋“ฑ์€ ๋ชจ๋‘ โ€™graphics object'์ด๋‹ค.
โ€˜Graphics object'๋Š” ๋ชจ๋‘ 9๊ฐ€์ง€๋กœ ๋ถ„๋ฅ˜๋˜๋Š”๋ฐ, Handle graphics system์—์„œ ๋ณต์žกํ•œ ๊ทธ๋ฆผ
์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ์„ฑ๋ถ„๋“ค์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.
figure object
line object
axes object
- 89 -
patch object
surface object
text object
image object
uicontrol object
uimenu ojbect
โ‘  Matlab ๊ทธ๋ž˜ํ”„๋“ค์€ ๊ฐ์ฒด๋“ค์˜ ์กฐํ•ฉ์œผ๋กœ ๋งŒ๋“ค์–ด์ง„๋‹ค.
โ‘ก ๊ฐ์ฒด๋“ค์€ ๊ณ„์ธต๋„์— ์˜ํ•ด ๋ถ„๋ฅ˜๋œ๋‹ค.
โ‘ข ์ƒ์œ„๊ฐ์ฒด๋Š” ํ•˜์œ„ ๊ฐ์ฒด๋“ค์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ•˜์œ„ ๊ฐ์ฒด๋Š” ์ƒ์œ„ ๊ฐ์ฒด์—
์˜ํ–ฅ์„ ์ฃผ์ง€ ๋ชปํ•œ๋‹ค.
โ‘ฃ ๊ฐ์ฒด๋“ค์€ ๊ฐ™์€ level์˜ ๊ฐ์ฒด๋“ค์„ ์†Œ์œ ํ•  ์ˆ˜ ์—†๋‹ค.
1) Handle Graphics
๊ฐ๊ฐ์˜ matlab ๊ทธ๋ž˜ํ”„ ํ•จ์ˆ˜๋Š” ๊ฐ์ฒด๋“ค์„ ์ œ์–ด ํ•  ์ˆ˜ ์žˆ๋„๋ก, ์ƒˆ๋กœ ๋งŒ๋“ค์–ด์ง€๋Š” ๊ฐ์ฒด๋งˆ๋‹ค ๊ณ 
์œ ํ•œ ์ˆซ์ž๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์ด๋“ค ๊ณ ์œ ํ•œ ์ˆซ์ž๋“ค์„ handle์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. handle์€ ๋ณดํ†ต figure
object์ธ ๊ฒฝ์šฐ์—๋Š” ์–‘์˜ ์ •์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , ๋‹ค๋ฅธ ํ•˜์œ„ level์—์„œ๋Š” ๋ถ€๋™์†Œ์ˆ˜์ (floating point
number)์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
ใ€‹h_fig=figure
h_fig = 1
ใ€‹h_fig=figure(3);
- 90 -
์ผ๋‹จ, handle value๊ฐ€ ํ• ๋‹น๋œ ๊ฐ์ฒด๋Š” ์ž์‹ ์˜ handle value๋ฅผ ๋ฐ”๊ฟ€ ์ˆ˜ ์—†์œผ๋ฉฐ, ํ•ด๋‹น ๊ฐ์ฒด๊ฐ€
์‚ฌ๋ผ์งˆ ๋•Œ๊นŒ์ง€ handle value๋Š” ๋ณด์กด๋œ๋‹ค. ๋˜ํ•œ, ๊ฐ™์€ ์ข…๋ฅ˜์˜ ๊ฐ์ฒด๋ผ๋„ handle value๋Š” ์„œ๋กœ
๋‹ค๋ฅด๋‹ค. ๊ทธ๋ž˜์•ผ๋งŒ, ๊ฐ๊ฐ์˜ ๊ฐ์ฒด๋ฅผ ๋…๋ฆฝ์ ์œผ๋กœ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ทธ๋Ÿฌ๋‚˜, root object
๋Š” ์œ ์ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— handle value๋Š” โ€˜0โ€™์˜ ๊ฐ’์„ ๊ฐ–๋Š”๋‹ค.
โ€˜set.m' ํ•จ์ˆ˜๋Š” handle์„ ์ด์šฉํ•˜์—ฌ ๊ฐ๊ฐ์˜ ๊ฐ์ฒด ์„ฑ์งˆ(propertyname)์„ ์กฐ์ •ํ•ด์ฃผ๊ณ 
โ€™get.m' ํ•จ์ˆ˜๋Š” ํ•ด๋‹น ๊ฐ์ฒด์˜ ์„ฑ์งˆ์— ํ• ๋‹น๋œ ๊ฐ’(propertyvalue)์„ ์–ป๊ฒŒ ํ•ด์ฃผ๋Š” ํ•จ์ˆ˜์ด๋‹ค.
ใ€‹set(handle, propertyname, propertyvalue)
ใ€‹propertyvalue=get(handle, propertyname)
ใ€‹close all
ใ€‹h_fig1=figure(1);
ใ€‹set(h_fig1,'numbertitleโ€˜,'off','name','USER')
numbertitle, name : ์ฃผ์–ด์ง„ figure์˜ propertyname
off, USER : ์ฃผ์–ด์ง„ figure์˜ property value
๋งŒ์ผ handle์ด h_fig1์ธ figure์˜ ํฌ๊ธฐ๋ฅผ ์•Œ๊ณ  ์‹ถ๋‹ค๋ฉด, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•˜๋ฉด ๋œ๋‹ค.
ใ€‹h_size=get(h_fig1,'position')
h_size = 360 808 291 126
ใ€‹set(h_fig1)
BackingStore: [ {on} | off ]
CloseRequestFcn
Color
Colormap
CurrentAxes
CurrentObject
CurrentPoint
Dithermap
DithermapMode: [ auto | {manual} ]
DoubleBuffer: [ on | {off} ]
FileName
IntegerHandle: [ {on} | off ]
InvertHardcopy: [ {on} | off ]
KeyPressFcn
MenuBar: [ none | {figure} ]
MinColormap
:
- 91 -
:
:
ButtonDownFcn
Children
Clipping: [ {on} | off ]
CreateFcn
DeleteFcn
BusyAction: [ {queue} | cancel ]
HandleVisibility: [ {on} | callback | off ]
HitTest: [ {on} | off ]
Interruptible: [ {on} | off ]
Parent
Selected: [ on | off ]
SelectionHighlight: [ {on} | off ]
Tag
UIContextMenu
UserData
Visible: [ {on} | off ]
ใ€‹get(h_fig1);
2) Low_level functions
Low_level functions๋Š” ๊ฐ์ฒด(object) ์ง€ํ–ฅ์ ์ธ matlab์˜ graphics ์ฒด๊ณ„๋ฅผ ์˜๋ฏธํ•˜๋Š”๋ฐ, ์ด๋“ค
low_level graphic functions๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ชจ๋“  high_level graphic functions๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์œผ
๋ฉฐ, ๋˜ํ•œ, ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ๋‹ค๋ฅธ graphic functions๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.
โ‘  Root Object
Root object์— ํ•ด๋‹นํ•˜๋Š” ์ง์ ‘์ ์ธ ํ•จ์ˆ˜๋Š” ์—†๋‹ค. ๋˜ํ•œ, ๋‹ค๋ฅธ low_level functions๋ณด๋‹ค ์ƒ๋‹น
ํžˆ ์ ์€ propertyname/propertyvalue pairs๋ฅผ ๊ฐ–๋Š”๋ฐ, matlab command window์—์„œ๋„
โ€˜set.m', 'get.m' ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ ์ง์ ‘ ํ™•์ธ ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.
ใ€‹set(0)
์œ„์™€ ๊ฐ™์ด ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋ฉด root object์— ๋Œ€ํ•œ ์ž๋ฃŒ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
Diary : [ on | off ]
ShowHiddenHandles : [ on | {off} ]
'[ ]'์€ ํ•ด๋‹น propertyname(์—ฌ๊ธฐ์„œ๋Š” diary์™€ showhiddenhandles์„ ์˜๋ฏธํ•œ๋‹ค.)์—์„œ ์ด์šฉํ• 
์ˆ˜ ์žˆ๋Š” ์ง€์ •์–ด (์ฆ‰, property value)์ด๋‹ค. ๋‹ค์‹œ ๋งํ•ด์„œ, ํ•ด๋‹น propertyname์„ ์ œ์–ด ํ•  ์ˆ˜ ์žˆ
๋Š” ์ง€์ •์–ด๋กœ์„œ ๋‹ค๋ฅธ ๋น„์Šทํ•œ ์šฉ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ๋˜๊ณ , ๋ฐ˜๋“œ์‹œ ์ง€์ •ํ•ด์ค€ โ€˜on, off'๋งŒ ์‚ฌ์šฉํ•˜์—ฌ
์•ผ ํ•œ๋‹ค. { }๋Š” default propertyvalue๋ฅผ ์˜๋ฏธํ•˜๋Š”๋ฐ matlab์ด ์ž๋™์œผ๋กœ propertyvalue๋ฅผ ์„ค
์ •ํ•œ ๊ฒฝ์šฐ๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ์ด๊ฒƒ์€ โ€™set.m' ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด์„œ โ€˜default propertyvalue'๋ฅผ ๋ฐ”๊ฟ€ ์ˆ˜๋„
์žˆ๋‹ค.
ใ€‹get(0,'units')
ans = pixels
ใ€‹set(0,'units','nor')
ใ€‹get(0,'units')
Matlab guide
Matlab guide
Matlab guide
Matlab guide
Matlab guide
Matlab guide
Matlab guide
Matlab guide
Matlab guide
Matlab guide
Matlab guide
Matlab guide
Matlab guide
Matlab guide
Matlab guide
Matlab guide
Matlab guide
Matlab guide
Matlab guide
Matlab guide
Matlab guide
Matlab guide
Matlab guide
Matlab guide
Matlab guide
Matlab guide
Matlab guide
Matlab guide
Matlab guide
Matlab guide

More Related Content

Similar to Matlab guide

[SWCON211] LectureCode_13_Matlab Practice.pptx
[SWCON211] LectureCode_13_Matlab Practice.pptx[SWCON211] LectureCode_13_Matlab Practice.pptx
[SWCON211] LectureCode_13_Matlab Practice.pptx
oreo329
ย 
From MSSQL to MySQL
From MSSQL to MySQLFrom MSSQL to MySQL
From MSSQL to MySQL
I Goo Lee
ย 
R ํ”„๋กœ๊ทธ๋žจ์˜ ์ดํ•ด์™€ ํ™œ์šฉ v1.1
R ํ”„๋กœ๊ทธ๋žจ์˜ ์ดํ•ด์™€ ํ™œ์šฉ v1.1R ํ”„๋กœ๊ทธ๋žจ์˜ ์ดํ•ด์™€ ํ™œ์šฉ v1.1
R ํ”„๋กœ๊ทธ๋žจ์˜ ์ดํ•ด์™€ ํ™œ์šฉ v1.1
happychallenge
ย 
์ดํŽ™ํ‹ฐ๋ธŒ C++ (7~9)
์ดํŽ™ํ‹ฐ๋ธŒ C++ (7~9)์ดํŽ™ํ‹ฐ๋ธŒ C++ (7~9)
์ดํŽ™ํ‹ฐ๋ธŒ C++ (7~9)์ต์„ฑ ์กฐ
ย 
Ch.5 Deep Learning
Ch.5 Deep LearningCh.5 Deep Learning
Ch.5 Deep Learning
PartPrime
ย 
Programming java day2
Programming java day2Programming java day2
Programming java day2Jaehoonyam
ย 
Gpg2 2 1_10_๋“œ๋กญ์ธ๋””๋ฒ„๊ทธ๋ฉ”๋ชจ๋ฆฌ๊ด€๋ฆฌ์ž
Gpg2 2 1_10_๋“œ๋กญ์ธ๋””๋ฒ„๊ทธ๋ฉ”๋ชจ๋ฆฌ๊ด€๋ฆฌ์žGpg2 2 1_10_๋“œ๋กญ์ธ๋””๋ฒ„๊ทธ๋ฉ”๋ชจ๋ฆฌ๊ด€๋ฆฌ์ž
Gpg2 2 1_10_๋“œ๋กญ์ธ๋””๋ฒ„๊ทธ๋ฉ”๋ชจ๋ฆฌ๊ด€๋ฆฌ์žYoung-jun Jeong
ย 
แ„‡แ…กแ†ฏแ„‘แ…ญแ„Œแ…กแ„…แ…ญ 11แ„Œแ…กแ†ผ
แ„‡แ…กแ†ฏแ„‘แ…ญแ„Œแ…กแ„…แ…ญ 11แ„Œแ…กแ†ผแ„‡แ…กแ†ฏแ„‘แ…ญแ„Œแ…กแ„…แ…ญ 11แ„Œแ…กแ†ผ
แ„‡แ…กแ†ฏแ„‘แ…ญแ„Œแ…กแ„…แ…ญ 11แ„Œแ…กแ†ผ
Juhui Park
ย 
๋น„๋™๊ธฐ ํŒŒ์ผ ๋กœ๋”ฉ
๋น„๋™๊ธฐ ํŒŒ์ผ ๋กœ๋”ฉ๋น„๋™๊ธฐ ํŒŒ์ผ ๋กœ๋”ฉ
๋น„๋™๊ธฐ ํŒŒ์ผ ๋กœ๋”ฉ
Bongseok Cho
ย 
OpenJigWare(V02.00.04)
OpenJigWare(V02.00.04)OpenJigWare(V02.00.04)
OpenJigWare(V02.00.04)
Jinwook On
ย 
แ„Œแ…กแ„‡แ…กแ„…แ…ฉ Mnist แ„€แ…ฎแ„’แ…งแ†ซแ„’แ…กแ„€แ…ฉ_แ„‰แ…ณแ„‘แ…ณแ„…แ…ตแ†ผแ„‹แ…ฐแ†ธแ„‰แ…ฅแ„‡แ…ฅแ„‡แ…ฎแ‡€แ„‹แ…ตแ„€แ…ต
แ„Œแ…กแ„‡แ…กแ„…แ…ฉ Mnist แ„€แ…ฎแ„’แ…งแ†ซแ„’แ…กแ„€แ…ฉ_แ„‰แ…ณแ„‘แ…ณแ„…แ…ตแ†ผแ„‹แ…ฐแ†ธแ„‰แ…ฅแ„‡แ…ฅแ„‡แ…ฎแ‡€แ„‹แ…ตแ„€แ…ตแ„Œแ…กแ„‡แ…กแ„…แ…ฉ Mnist แ„€แ…ฎแ„’แ…งแ†ซแ„’แ…กแ„€แ…ฉ_แ„‰แ…ณแ„‘แ…ณแ„…แ…ตแ†ผแ„‹แ…ฐแ†ธแ„‰แ…ฅแ„‡แ…ฅแ„‡แ…ฎแ‡€แ„‹แ…ตแ„€แ…ต
แ„Œแ…กแ„‡แ…กแ„…แ…ฉ Mnist แ„€แ…ฎแ„’แ…งแ†ซแ„’แ…กแ„€แ…ฉ_แ„‰แ…ณแ„‘แ…ณแ„…แ…ตแ†ผแ„‹แ…ฐแ†ธแ„‰แ…ฅแ„‡แ…ฅแ„‡แ…ฎแ‡€แ„‹แ…ตแ„€แ…ต
๋ผํ•œ์‚ฌ ์•„
ย 
Linq
LinqLinq
Linq
Ki Won Kim
ย 
Python ํ™œ์šฉ: ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ์™€ ๋ฐ์ดํ„ฐ ๋ถ„์„
Python ํ™œ์šฉ: ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ์™€ ๋ฐ์ดํ„ฐ ๋ถ„์„Python ํ™œ์šฉ: ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ์™€ ๋ฐ์ดํ„ฐ ๋ถ„์„
Python ํ™œ์šฉ: ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ์™€ ๋ฐ์ดํ„ฐ ๋ถ„์„
์šฉ ์ตœ
ย 
์ž๋ฐ” 8 ํ•™์Šต
์ž๋ฐ” 8 ํ•™์Šต์ž๋ฐ” 8 ํ•™์Šต
์ž๋ฐ” 8 ํ•™์Šต
HeeChang Lee
ย 
Effective c++ chapter 1,2 ์š”์•ฝ
Effective c++ chapter 1,2 ์š”์•ฝEffective c++ chapter 1,2 ์š”์•ฝ
Effective c++ chapter 1,2 ์š”์•ฝ
Nam Hyeonuk
ย 
3. stream api
3. stream api3. stream api
3. stream api
ํฅ๋ž˜ ๊น€
ย 
Python
PythonPython
Python
SKKU Library
ย 
R ๊ธฐ์ดˆ : R Basics
R ๊ธฐ์ดˆ : R BasicsR ๊ธฐ์ดˆ : R Basics
R ๊ธฐ์ดˆ : R Basics
Yoonwhan Lee
ย 
Pyconkr2019 features for using python like matlab
Pyconkr2019 features for using python like matlabPyconkr2019 features for using python like matlab
Pyconkr2019 features for using python like matlab
Intae Cho
ย 
MATLAB Programming BASIC @ GIST winter school 2015
MATLAB Programming BASIC @ GIST winter school 2015 MATLAB Programming BASIC @ GIST winter school 2015
MATLAB Programming BASIC @ GIST winter school 2015
Jaewook. Kang
ย 

Similar to Matlab guide (20)

[SWCON211] LectureCode_13_Matlab Practice.pptx
[SWCON211] LectureCode_13_Matlab Practice.pptx[SWCON211] LectureCode_13_Matlab Practice.pptx
[SWCON211] LectureCode_13_Matlab Practice.pptx
ย 
From MSSQL to MySQL
From MSSQL to MySQLFrom MSSQL to MySQL
From MSSQL to MySQL
ย 
R ํ”„๋กœ๊ทธ๋žจ์˜ ์ดํ•ด์™€ ํ™œ์šฉ v1.1
R ํ”„๋กœ๊ทธ๋žจ์˜ ์ดํ•ด์™€ ํ™œ์šฉ v1.1R ํ”„๋กœ๊ทธ๋žจ์˜ ์ดํ•ด์™€ ํ™œ์šฉ v1.1
R ํ”„๋กœ๊ทธ๋žจ์˜ ์ดํ•ด์™€ ํ™œ์šฉ v1.1
ย 
์ดํŽ™ํ‹ฐ๋ธŒ C++ (7~9)
์ดํŽ™ํ‹ฐ๋ธŒ C++ (7~9)์ดํŽ™ํ‹ฐ๋ธŒ C++ (7~9)
์ดํŽ™ํ‹ฐ๋ธŒ C++ (7~9)
ย 
Ch.5 Deep Learning
Ch.5 Deep LearningCh.5 Deep Learning
Ch.5 Deep Learning
ย 
Programming java day2
Programming java day2Programming java day2
Programming java day2
ย 
Gpg2 2 1_10_๋“œ๋กญ์ธ๋””๋ฒ„๊ทธ๋ฉ”๋ชจ๋ฆฌ๊ด€๋ฆฌ์ž
Gpg2 2 1_10_๋“œ๋กญ์ธ๋””๋ฒ„๊ทธ๋ฉ”๋ชจ๋ฆฌ๊ด€๋ฆฌ์žGpg2 2 1_10_๋“œ๋กญ์ธ๋””๋ฒ„๊ทธ๋ฉ”๋ชจ๋ฆฌ๊ด€๋ฆฌ์ž
Gpg2 2 1_10_๋“œ๋กญ์ธ๋””๋ฒ„๊ทธ๋ฉ”๋ชจ๋ฆฌ๊ด€๋ฆฌ์ž
ย 
แ„‡แ…กแ†ฏแ„‘แ…ญแ„Œแ…กแ„…แ…ญ 11แ„Œแ…กแ†ผ
แ„‡แ…กแ†ฏแ„‘แ…ญแ„Œแ…กแ„…แ…ญ 11แ„Œแ…กแ†ผแ„‡แ…กแ†ฏแ„‘แ…ญแ„Œแ…กแ„…แ…ญ 11แ„Œแ…กแ†ผ
แ„‡แ…กแ†ฏแ„‘แ…ญแ„Œแ…กแ„…แ…ญ 11แ„Œแ…กแ†ผ
ย 
๋น„๋™๊ธฐ ํŒŒ์ผ ๋กœ๋”ฉ
๋น„๋™๊ธฐ ํŒŒ์ผ ๋กœ๋”ฉ๋น„๋™๊ธฐ ํŒŒ์ผ ๋กœ๋”ฉ
๋น„๋™๊ธฐ ํŒŒ์ผ ๋กœ๋”ฉ
ย 
OpenJigWare(V02.00.04)
OpenJigWare(V02.00.04)OpenJigWare(V02.00.04)
OpenJigWare(V02.00.04)
ย 
แ„Œแ…กแ„‡แ…กแ„…แ…ฉ Mnist แ„€แ…ฎแ„’แ…งแ†ซแ„’แ…กแ„€แ…ฉ_แ„‰แ…ณแ„‘แ…ณแ„…แ…ตแ†ผแ„‹แ…ฐแ†ธแ„‰แ…ฅแ„‡แ…ฅแ„‡แ…ฎแ‡€แ„‹แ…ตแ„€แ…ต
แ„Œแ…กแ„‡แ…กแ„…แ…ฉ Mnist แ„€แ…ฎแ„’แ…งแ†ซแ„’แ…กแ„€แ…ฉ_แ„‰แ…ณแ„‘แ…ณแ„…แ…ตแ†ผแ„‹แ…ฐแ†ธแ„‰แ…ฅแ„‡แ…ฅแ„‡แ…ฎแ‡€แ„‹แ…ตแ„€แ…ตแ„Œแ…กแ„‡แ…กแ„…แ…ฉ Mnist แ„€แ…ฎแ„’แ…งแ†ซแ„’แ…กแ„€แ…ฉ_แ„‰แ…ณแ„‘แ…ณแ„…แ…ตแ†ผแ„‹แ…ฐแ†ธแ„‰แ…ฅแ„‡แ…ฅแ„‡แ…ฎแ‡€แ„‹แ…ตแ„€แ…ต
แ„Œแ…กแ„‡แ…กแ„…แ…ฉ Mnist แ„€แ…ฎแ„’แ…งแ†ซแ„’แ…กแ„€แ…ฉ_แ„‰แ…ณแ„‘แ…ณแ„…แ…ตแ†ผแ„‹แ…ฐแ†ธแ„‰แ…ฅแ„‡แ…ฅแ„‡แ…ฎแ‡€แ„‹แ…ตแ„€แ…ต
ย 
Linq
LinqLinq
Linq
ย 
Python ํ™œ์šฉ: ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ์™€ ๋ฐ์ดํ„ฐ ๋ถ„์„
Python ํ™œ์šฉ: ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ์™€ ๋ฐ์ดํ„ฐ ๋ถ„์„Python ํ™œ์šฉ: ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ์™€ ๋ฐ์ดํ„ฐ ๋ถ„์„
Python ํ™œ์šฉ: ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ์™€ ๋ฐ์ดํ„ฐ ๋ถ„์„
ย 
์ž๋ฐ” 8 ํ•™์Šต
์ž๋ฐ” 8 ํ•™์Šต์ž๋ฐ” 8 ํ•™์Šต
์ž๋ฐ” 8 ํ•™์Šต
ย 
Effective c++ chapter 1,2 ์š”์•ฝ
Effective c++ chapter 1,2 ์š”์•ฝEffective c++ chapter 1,2 ์š”์•ฝ
Effective c++ chapter 1,2 ์š”์•ฝ
ย 
3. stream api
3. stream api3. stream api
3. stream api
ย 
Python
PythonPython
Python
ย 
R ๊ธฐ์ดˆ : R Basics
R ๊ธฐ์ดˆ : R BasicsR ๊ธฐ์ดˆ : R Basics
R ๊ธฐ์ดˆ : R Basics
ย 
Pyconkr2019 features for using python like matlab
Pyconkr2019 features for using python like matlabPyconkr2019 features for using python like matlab
Pyconkr2019 features for using python like matlab
ย 
MATLAB Programming BASIC @ GIST winter school 2015
MATLAB Programming BASIC @ GIST winter school 2015 MATLAB Programming BASIC @ GIST winter school 2015
MATLAB Programming BASIC @ GIST winter school 2015
ย 

Matlab guide

  • 1. - 1 - ์ œ 1 ์žฅ Matlab ์†Œ๊ฐœ 1. ๊ฐœ์š” Matlab์ด๋ž€ โ€˜Matrix Laboratoryโ€™๋ฅผ ๋œปํ•˜๋Š” ๋ง๋กœ์จ, ์ˆ˜์น˜ ํ•ด์„, ํ–‰๋ ฌ ์—ฐ์‚ฐ, ์‹ ํ˜ธ ์ฒ˜๋ฆฌ ๋ฐ ๊ฐ„ํŽธํ•œ ๊ทธ๋ž˜ํ”ฝ ๊ธฐ๋Šฅ ๋“ฑ์„ ํ†ตํ•ฉํ•˜์—ฌ ๊ณ ์„ฑ๋Šฅ์˜ ์ˆ˜์น˜๊ณ„์‚ฐ ๋ฐ ๊ฒฐ๊ณผ์˜ ๊ฐ€์‹œํ™” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์ด๋‹ค. Matlab์€ ๊ทธ ์ด๋ฆ„์ด ๋งํ•˜๋“ฏ์ด ํ–‰๋ ฌ ๋˜๋Š” ๋ฒกํ„ฐ๋ฅผ ๊ธฐ๋ณธ ์ž๋ฃŒ๋กœ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ๋Šฅ ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ณ„์‚ฐ ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•œ๋‹ค. Matlab์€ ๋ณธ๋ž˜ Cleve Moler๊ฐ€ Fortran์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์„ฑํ•œ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ์„œ Linpack๊ณผ Eispack ํ”„๋กœ์ ํŠธ์— ์ฐธ์—ฌํ•œ ์‚ฌ๋žŒ๋“ค์— ์˜ํ•˜์—ฌ ๊ธฐ๋ณธ์ ์ธ ํ–‰๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๋งŒ๋“ค์–ด์กŒ๋‹ค. ํ˜„์žฌ์˜ Matlab์€ Mathworks์‚ฌ์—์„œ C๋กœ ์ž‘์„ฑํ•˜์˜€์œผ๋ฉฐ, ์ดˆํŒ์€ Steve Bangert, Steve Kleiman, John Little๊ณผ Cleve Moler์— ์˜ํ•ด์„œ ์ž‘์„ฑ๋˜์—ˆ๋‹ค. ๊ทธ ์ดํ›„์—๋Š” Matlab ๊ฐœ๋ฐœํŒ€ ๋ฐ ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ ๋“ค์— ์˜ํ•˜์—ฌ ์‹ค์งˆ์ ์ธ ๊ฐœ๋ฐœ์ด ์ด๋ฃจ์–ด์กŒ๋‹ค. Matlab์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ–‰๋ ฌ ์ž๋ฃŒ๋ฅผ ๋‹ค๋ฃจ๊ธฐ ๋•Œ๋ฌธ์— ์ฐจ์›ํ™”(dimensioning)๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์œผ ๋ฉฐ ํ†ต์ƒ์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋“ค(Fortran, C, Pascal ๋ฐ Basic ๋“ฑ)์„ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘ ์„ฑํ•˜์ง€ ์•Š๊ณ ๋„ ์‰ฝ๊ฒŒ ์ˆ˜์น˜ ๊ณ„์‚ฐ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. Matlab์˜ ๊ฐ€์žฅ ํฐ ํŠน์ง•์€ M-file์„ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ํŠน์ •ํ•œ ํ•ด๋ฅผ ๊ตฌํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ์‘์šฉ ํ”„ ๋กœ๊ทธ๋žจ๋“ค์„ ์†์‰ฝ๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด๋‹ค. M-ํŒŒ์ผ์ด๋ž€ ๋งคํฌ๋กœ ํŒŒ์ผ๋กœ์„œ ํ•ด์„๊ธฐ (interpreter) ๋ฐฉ์‹์œผ๋กœ ์ˆ˜ํ–‰๋˜๋ฉฐ ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ์ด๋‹ค. ๊ธฐ๋ณธ์ ์ธ ๋‚ด ๋ถ€ ๋ช…๋ น๋“ค ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋‹ค๋ฅธ M-ํŒŒ์ผ๋“ค๋„ ๋ถˆ๋Ÿฌ์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํŠน์ •ํ•œ ๋ฌธ์ œ๋ฅผ ํ’€๊ธฐ ์œ„ ํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์†์‰ฝ๊ฒŒ M-ํŒŒ์ผ์„ ์ž‘์„ฑํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด ์ปค๋‹ค๋ž€ ํŠน์ง•์ด๋‹ค. 2. Matlab์˜ ์‹คํ–‰ 2.1 Matlab์˜ ๋ช…๋ น์ฐฝ๊ณผ ๊ทธ๋ฆผ์ฐฝ Matlabํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” Windows๊ฐ€ ๋จผ์ € ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค. ๋‹ค์Œ์œผ๋กœ, Matlab์„ ํ‘œ์‹œํ•˜๊ณ  ์žˆ๋Š” ์•„์ด์ฝ˜(icon)์„ ๋”๋ธ” ํด๋ฆญ(double click)ํ•จ์œผ๋กœ์จ(๊ทธ๋ฆผ 1.1) Matlab ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ทธ๋ฆผ 1.2์™€ ๊ฐ™์€ ๋ช…๋ น์ฐฝ(command window)์ด ์—ด๋ฆฌ๊ฒŒ ๋œ๋‹ค. ์ด ๋•Œ โ‰ซ ๋ชจ์–‘์˜ ํ”„๋กฌํ”„ํŠธ(ํ•œ๊ธ€ Window์ผ ๊ฒฝ์šฐ๋Š” โ–ก๋กœ ํ‘œ์‹œ)๋ฅผ ํ™”๋ฉด์— ํ‘œ์‹œํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ํ”„๋กฌํ”„ํŠธ๊ฐ€ ํ™”๋ฉด์— ๋‚˜ํƒ€๋‚˜๋ฉด ์‚ฌ์šฉ์ž๋Š” Matlab ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. Matlab์„ ๋๋‚ด๊ธฐ ์œ„ํ•ด์„œ๋Š” โ‰ซ quit ํ˜น์€ โ‰ซ exit
  • 2. - 2 - ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ๊ทธ๋ฆผ 1.1 Matlab ํด๋”์˜ ์•„์ด์ฝ˜(Icon) ๊ทธ๋ฆผ 1.2 Matlab ๋ช…๋ น์ฐฝ(Command Window) 2.2 ๊ฒฝ๋กœ(Path) Matlab ํ”„๋กœ๊ทธ๋žจ์—์„œ๋„ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ๋“ค๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ฒฝ๋กœ๊ฐ€ ์ •ํ™•ํ•˜๊ฒŒ ์„ค์ •๋˜์–ด์•ผ๋งŒ ํ”„ ๋กœ๊ทธ๋žจ์„ ์ฐฉ์˜ค ์—†์ด ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. Matlab ํ”„๋กฌํ”„ํŠธ์—์„œ 'path' ๋ผ๊ณ  ์ž…๋ ฅํ•˜๋ฉด Matlab์—์„œ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ชจ๋“  ๊ฒฝ๋กœ๋ฅผ ๋ณด์—ฌ์ค€๋‹ค. โ‰ซpath MATLABPATH D:TOOLMATLABtoolboxmatlabgeneral D:TOOLMATLABtoolboxmatlabops D:TOOLMATLABtoolboxmatlablang D:TOOLMATLABtoolboxsymbolic ๏ผš ๏ผš D:TOOLMATLABtoolboxmapmap D:TOOLMATLABtoolboxmapmapdisp D:TOOLMATLABtoolboxmapmapproj D:TOOLMATLABtoolboxpde D:TOOLMATLABtoolboxfixpoint Matlab 4.2 ๋ฒ„์ ผ์˜ ๊ฒฝ์šฐ ์ž์‹ ์ด ์‚ฌ์šฉํ•˜๋Š” work๋ผ๋Š” ์ด๋ฆ„์˜ subdirectory๋ฅผ ๋“ฑ๋กํ•˜๊ณ  ์‹ถ์„ ๋•Œ๋Š” path ๋ช…๋ น์„ ์ด์šฉํ•ด์„œ ์•„๋ž˜๊ณผ ๊ฐ™์ด ์‹คํ–‰ํ•˜๋ฉด ๋œ๋‹ค. ใ€‹path(path, 'd:toolmatlabwork') ๋˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” Matlab์˜ root directory ๋‚ด์— ์žˆ๋Š” 'matlabrc.m' ์ด๋ฆ„์˜ m-file์„ ํŽธ์ง‘
  • 3. - 3 - ๊ธฐ๋ฅผ ์ด์šฉํ•˜์—ฌ work๋ผ๋Š” subdirectory๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ๋œ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•จ์œผ๋กœ์จ ํ•ญ์ƒ work๋ผ๋Š” ์ž์‹ ์˜ directory๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. Matlab 5.x ๋ฒ„์ ผ์—์„œ๋Š” ๊ทธ๋ฆผ 1.3๊ณผ ๊ฐ™์ด Matlab ๋ช…๋ น์ฐฝ(command window)์˜ ํ’€-๋‹ค์šด ๋ฉ”๋‰ด (Fileโ†’Set Path)๋ฅผ ์ด์šฉํ•œ Path Browser์—์„œ ์‰ฝ๊ฒŒ path๋ฅผ ์ถ”๊ฐ€์‹œํ‚ค๊ฑฐ๋‚˜ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ฆผ 1.3 Matlab์˜ Path Brower 2.3 ๋„์›€๋ง ๊ธฐ๋Šฅ Matlab๊ณผ ๊ด€๋ จ๋œ ๋‚ด์šฉ์— ๋Œ€ํ•˜์—ฌ ๋„์›€๋ง์„ ์ œ๊ณต๋ฐ›๊ณ  ์‹ถ์œผ๋ฉด ใ€‹help ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์ด ๊ฒฝ์šฐ Matlab๊ณผ ๊ด€๋ จ๋œ ํŒŒ์ผ๋“ค์ด ๋“ค์–ด ์žˆ๋Š” ๋””๋ ‰ํ† ๋ฆฌ์˜ ๋ชฉ๋ก๊ณผ ๋””๋ ‰ํ† ๋ฆฌ์˜ ๋‚ด์šฉ์„ ๋ณด์—ฌ์ค€๋‹ค. ํŠน์ •ํ•œ ๋””๋ ‰ํ† ๋ฆฌ์˜ ํ•จ์ˆ˜๋“ค์˜ ๋ชฉ๋ก์— ๊ด€ํ•˜์—ฌ ์•Œ์•„๋ณด๊ณ ์ž ํ•  ๋•Œ์—๋Š” help ๋‹ค์Œ์— ์›ํ•˜๋Š” ๋””๋ ‰ํ† ๋ฆฌ์˜ ์ด๋ฆ„์„ ์ž…๋ ฅํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ใ€‹help elfun ใ€‹help eig ๋“ฑ ์ด๋‹ค. help ๋‹ค์Œ ํ•ญ๋ชฉ์ด Matlab ๋‚ด๋ถ€ ๋ช…๋ น์–ด๊ฐ€ ์•„๋‹ˆ๊ฑฐ๋‚˜ Matlab ๊ฒฝ๋กœ์ƒ์˜ M-ํŒŒ์ผ์ด ์•„ ๋‹ ๊ฒฝ์šฐ, ๊ทธ ํ•ญ๋ชฉ์„ ์ฐพ์„ ์ˆ˜ ์—†๋‹ค. help๋ณด๋‹ค ์ผ๋ฐ˜์ ์ธ ๊ฒ€์ƒ‰ ๋ช…๋ น์–ด๋กœ์„œ lookfor๊ฐ€ ์‚ฌ์šฉ๋œ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž…๋ ฅํ•˜๋ฉด M-ํŒŒ์ผ ๋„ ์›€๋ง ์ฃผ์„์˜ ์ฒซ๋ฒˆ์งธ ์ค„์— 'random'์ด๋ผ๋Š” ๋‹จ์–ด๋ฅผ ํฌํ•จํ•˜๋Š” ๋ชจ๋“  ํ•จ์ˆ˜๋“ค์„ ๋‚˜์—ดํ•ด ์ค€๋‹ค. ใ€‹lookfor random RAND Uniformly distributed random numbers. RANDN Normally distributed random numbers. RANDPERM Random permutation.
  • 4. - 4 - RJR Random Jacobi rotation. SPRAND Sparse uniformly distributed random matrix. SPRANDN Sparse normally distributed random matrix. SPRANDSYM Sparse random symmetric matrix. ๏ผš ๏ผš ๋˜ํ•œ ํ•จ์ˆ˜๊ฐ€ ์–ด๋Š ๋””๋ ‰ํ† ๋ฆฌ์— ์žˆ๋Š”์ง€ ๊ทธ ์œ„์น˜๋ฅผ ์•Œ๊ณ ์ž ํ•  ๋•Œ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด which ๋‹ค์Œ ์— ์ฐพ๊ณ ์ž ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๋œ๋‹ค. ใ€‹which bode D:TOOLMATLABtoolboxcontrolbode.m ์œ„์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ• ์™ธ์—๋„ Matlab ๋ฉ”๋‰ด์—์„œ 'Help'๋ฅผ ์ด์šฉํ•˜์—ฌ Matlab์— ๊ด€๋ จ๋œ ๋‚ด์šฉ์„ ๋„์›€ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค. 2.4 ์ž‘์—…์˜ ์ข…๋ฃŒ์™€ ์ €์žฅ quit๋‚˜ exit๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Matlab์„ ์ข…๋ฃŒํ•˜๋ฉด ์ž‘์—… ๊ณต๊ฐ„์— ์กด์žฌํ•˜๋Š” ๋ชจ๋“  ๋ณ€์ˆ˜๋“ค์„ ์‚ญ์ œํ•œ ๋‹ค. ๋งŒ์ผ ์ข…๋ฃŒ์ง์ „๊นŒ์ง€ ์‚ฌ์šฉํ•œ ๋ณ€์ˆ˜๋‚˜ ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•˜์˜€๋‹ค๊ฐ€ ๋‹ค์‹œ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์œผ๋ฉด ๋‹ค์Œ ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์œผ๋กœ ์‚ฌ์šฉ์ž๊ฐ€ ์ž‘์—…ํ•œ ๋ชจ๋“  ๊ณผ์ •์„ ํ…์ŠคํŠธ ํŒŒ์ผ๋กœ ์ €์žฅํ•˜๊ณ  ์‹ถ์„ ๋•Œ ๋‹ค์Œ ๋ช… ๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ใ€‹diary file_name : ๊ทธ๋ž˜ํ”ฝ์„ ์ œ์™ธํ•œ ๋ชจ๋“  ์ž…๋ ฅ, ์ถœ๋ ฅ์„ ํŒŒ์ผ file_name์— ์ €์žฅ ใ€‹diary off : ์ €์žฅ์„ ์ค‘์ง€ ใ€‹diary on : ํŒŒ์ผ file_name์— ์ €์žฅ์„ ๋‹ค์‹œ ์‹œ์ž‘ ๋‘ ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์œผ๋กœ ์ž‘์—… ์ค‘ ์‚ฌ์šฉํ•œ ๋ณ€์ˆ˜๋ฅผ ์ €์žฅํ•˜์˜€๋‹ค๊ฐ€ ๋‹ค์‹œ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์„ ๋•Œ ๋‹ค์Œ ๋ช…๋ น ์–ด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ใ€‹save : default ํŒŒ์ผ์ธ matlab.mat์— ๋ชจ๋“  ๋ณ€์ˆ˜ ์ €์žฅ ใ€‹save file_name : ์‚ฌ์šฉํ•œ ๋ชจ๋“  ๋ณ€์ˆ˜๋ฅผ ํŒŒ์ผ file_name.mat์— ์ €์žฅ ใ€‹save file_name var_list : ๋ณ€์ˆ˜ var_list๋ฅผ ํŒŒ์ผ file_name.mat์— ์ €์žฅ ใ€‹load file_name : file_name.mat์— ์ €์žฅ๋œ ๋ชจ๋“  ๋ณ€์ˆ˜๋ฅผ ๋ถˆ๋Ÿฌ ๋“ค์ž„. diary๋กœ ์ €์žฅ๋œ ํŒŒ์ผ์€ ํ…์ŠคํŠธ ํŒŒ์ผ์ด๋ฏ€๋กœ ํŽธ์ง‘์ด ๊ฐ€๋Šฅํ•˜๋‚˜ load ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ถˆ๋Ÿฌ ๋“ค์ผ ์ˆ˜ ์—†์œผ๋ฉฐ, save ๋ช…๋ น์–ด๋กœ ์ €์žฅ๋œ ํŒŒ์ผ์€ binaryํ˜•ํƒœ์ด๋ฏ€๋กœ ํŽธ์ง‘ํ•  ์ˆ˜ ์—†์œผ๋‚˜ ๋‹ค์Œ๊ณผ ๊ฐ™์ด save ์˜ต์…˜์— -ascii๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ €์žฅํ•˜๋ฉด ์ €์žฅ๋œ ํŒŒ์ผ์˜ ํŽธ์ง‘์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ใ€‹save file_name.mat -ascii : ์‚ฌ์šฉํ•œ ๋ชจ๋“  ๋ณ€์ˆ˜๋ฅผ ํŒŒ์ผ file_name.mat์— asciiํ˜•ํƒœ๋กœ ์ €์žฅ
  • 5. - 5 - 2.5 Matlab ํ’€-๋‹ค์šด ๋ฉ”๋‰ด์˜ ์‚ฌ์šฉ๋ฒ• 2.5.1 ๋ช…๋ น์ฐฝ ๋ฉ”๋‰ด 1) File โ‘  New M-file Figure Model โ–ถ M-file : ์ƒˆ๋กœ์šด M-ํŒŒ์ผ ์ž‘์„ฑ โ–ถ Figure : ์ƒˆ๋กœ์šด ๊ทธ๋ฆผ์ฐฝ์„ ์ƒ์„ฑ โ–ถ Model : SIMULINK ์„ค์น˜์‹œ ์ƒˆ๋กœ์šด SIMULINK์˜ ๋ชจ๋ธ ์ž‘์„ฑ โ‘ก Open ... : ์–ด๋–ค M-ํŒŒ์ผ์„ ์„ ํƒํ•  ๊ฒƒ์ธ์ง€๋ฅผ ๋ฌป๋Š” ํŒŒ์ผ ์„ ํƒ์šฉ ๋Œ€ํ™”์ƒ์ž โ‘ข Open Selection : ๊ธฐ๋ณธ ํŒŒ์ผ ํŽธ์ง‘๊ธฐ๋ฅผ ์ด์šฉํ•˜์—ฌ, ๋ช…๋ น์ฐฝ์—์„œ ๋ฐ๊ฒŒ ๋ฐ˜์ „๋œ ๋ฌธ์ž์—ด๊ณผ ์ผ์น˜ ํ•˜๋Š” ์ด๋ฆ„์˜ M-ํŒŒ์ผ์„ ์—ด์–ด์ค€๋‹ค. โ‘ฃ Run Script ... : ์‹คํ–‰ํ•˜๊ณ ์ž ํ•˜๋Š” m-file์„ ์„ ํƒ โ‘ค Load WorkSpace : matํŒŒ์ผ์„ loading โ‘ฅ Save WorkSpace As ... : ํ˜„์žฌ ์ž‘์—…๊ณต๊ฐ„ ๋‚ด์˜ ๋ณ€์ˆ˜๋“ค์„ ์ €์žฅ โ‘ฆ Show Graphics Property Editor : Graphics Property Editor ์ฐฝ์„ ํ™œ์„ฑํ™” โ‘ง Show GUI Layout Tool : Guide Control Panel ์ฐฝ์„ ํ™œ์„ฑํ™” โ‘จ Set Path... : Path Browser ์ฐฝ์„ ํ™œ์„ฑํ™” โ‘ฉ Preferences... : ์ˆซ์ž ํ‘œํ˜„ ๋ฐฉ์‹, ์—๋””ํ„ฐ ํ”„๋กœ๊ทธ๋žจ ์„ค์ •, Font ์„ค์ •, Copying Option ์„ค์ • โ‘ช Printer Setup... : ํ”„๋ฆฐํ„ฐ ์„ค์ • โ‘ซ Print... : Matlab์—์„œ ์ž‘์—…ํ•œ ๋‚ด์šฉ์„ ์ถœ๋ ฅ โ‘ฌ Exit MATLAB : Matlab ์ž‘์—… ์ข…๋ฃŒ
  • 6. - 6 - 2) Edit Undo Cut Ctrl + X Copy Ctrl + C Paste Ctrl + V Clear Select All Clear Session โ‘  Undo : ์‹คํ–‰์ทจ์†Œ โ‘ก Cut : ๋ช…๋ น์ฐฝ์—์„œ ์„ ํƒ๋œ ๋ถ€๋ถ„์„ ์˜ค๋ ค๋‚ด์–ด ๊ทธ ๋‚ด์šฉ์„ ํด๋ฆฝ๋ณด๋“œ์— ์ €์žฅ โ‘ข Copy : ์„ ํƒ๋œ ๋ถ€๋ถ„์„ ๊ทธ๋Œ€๋กœ ๋ณด์กดํ•˜๋ฉด์„œ ๊ทธ ๋‚ด์šฉ์„ ํด๋ฆฝ๋ณด๋“œ์— ๋ณต์‚ฌ โ‘ฃ Paste : ํŽธ์žฌ ํด๋ฆฝ๋ณด๋“œ์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๋‚ด์šฉ์„ ๋ช…๋ น์ฐฝ์— ๋ณต์‚ฌ โ‘ค Clear : Prompt ๋‹ค์Œ์— ์˜ค๋Š” ๋ช…๋ น์–ด๋ฅผ ์‚ญ์ œ โ‘ฅ Select All : ๋ช…๋ น์ฐฝ์˜ ๋ชจ๋“  ๋‚ด์šฉ์„ ์„ ํƒ โ‘ฆ Clear Session : ๋ช…๋ น์ฐฝ์˜ ํ™”๋ฉด์„ ์ง€์šด๋‹ค.(๋‹จ, ๋ณ€์ˆ˜๋Š” ๊ทธ๋Œ€๋กœ ์œ ์ง€) 3) View : Toolbar๋ฅผ on-off 4) Window : ์—ด๋ ค์ ธ ์žˆ๋Š” window ์ฐฝ์„ ์„ ํƒ 5) Help : ๊ฐ์ข… ๋„์›€๋ง ์ฐฝ์„ ํ™œ์„ฑํ™” 2.5.2 ๊ทธ๋ฆผ์ฐฝ ๋ฉ”๋‰ด 1) File โ‘  New Figure : ์ƒˆ๋กœ์šด ๊ทธ๋ฆผ์ฐฝ์„ ์ƒ์„ฑ ( >>figure ) โ‘ก Open... : ๊ทธ๋ฆผํŒŒ์ผ(*.fig)์„ ์—ฐ๋‹ค. โ‘ข Close : ๊ทธ๋ฆผ์ฐฝ์„ ๋‹ซ๋Š”๋‹ค. โ‘ฃ Save : ๊ทธ๋ฆผ์ฐฝ์„ ์ €์žฅ โ‘ค Save As... : ๊ทธ๋ฆผ์ฐฝ์„ ๋‹ค๋ฅธ ์ด๋ฆ„์œผ๋กœ ์ €์žฅ โ‘ฅ Export... : ๊ทธ๋ฆผ์ฐฝ์„ ๋‹ค๋ฅธ ํ˜•์‹์˜ ํŒŒ์ผ๋กœ ์ €์žฅ
  • 7. - 7 - โ‘ฆ Property Editor : Graphics Property Editor ์ฐฝ์„ ํ™œ์„ฑํ™” โ‘ง Preferences... : ์ˆซ์ž ํ‘œํ˜„ ๋ฐฉ์‹, ์—๋””ํ„ฐ ํ”„๋กœ๊ทธ๋žจ ์„ค์ •, Font ์„ค์ •, Copying Option ์„ค์ • โ‘จ Page Setup... : ํŽ˜์ด์ง€ ์„ค์ • โ‘ฉ Print Setup : ํ”„๋ฆฐํ„ฐ ์„ค์ • โ‘ช Print Preview... : ๋ฏธ๋ฆฌ๋ณด๊ธฐ โ‘ซ Print : ์ธ์‡„ 2) Edit : ์ž๋ฅด๊ธฐ, ๋ณต์‚ฌ, ๋ถ™์ด๊ธฐ 3) Tools Show Toolbar Enable Plot Editing Axes Properties... Line Properties... Text Properties... Unlock Axes Position Show Legend Add Zoom In Zoom Out Rotate 3D โ‘  Show Toolbar : ํˆด๋ฐ” on-off โ‘ก Enable Plot Editing : ๊ทธ๋ž˜ํ”ฝ ๊ฐ์ฒด์˜ edit ํ™œ์„ฑํ™” ์„ ํƒ โ‘ข Axes Properties... : Edit Axes Properties ์ฐฝ์„ ํ™œ์„ฑํ™” โ‘ฃ Line Properties... : Edit Line Properties ์ฐฝ์„ ํ™œ์„ฑํ™” โ‘ค Text Properties... : Edit Font Properties ์ฐฝ์„ ํ™œ์„ฑํ™” โ‘ฅ Unlock Axes Position : ๊ทธ๋ฆผ์ฐฝ ๋‚ด ๊ฐ์ฒด์˜ ์œ„์น˜ ๋ณ€๊ฒฝ์„ on-off โ‘ฆ Show Legend : ๋ฒ”๋ก€๋ฅผ ํ‘œ์‹œ โ‘ง Add : Axes, Arrow, Line, Text ๊ฐ์ฒด๋ฅผ ์ถ”๊ฐ€ โ‘จ Zoom In : ํ™•๋Œ€ โ‘ฉ Zoom Out : ์ถ•์†Œ โ‘ช Rotate 3D : ๊ฐ์ฒด์˜ ๋ณด๋Š” ๊ด€์ ์„ ๋ณ€ํ™”(๋ฐฉ์œ„๊ฐ, ๊ณ ๋„ ๋ณ€๊ฒฝ) 4) Window : ์—ด๋ ค์ ธ ์žˆ๋Š” window ์ฐฝ์„ ์„ ํƒ 5) Help : ๊ฐ์ข… ๋„์›€๋ง ์ฐฝ์„ ํ™œ์„ฑํ™”
  • 8. - 8 - 3. Matlab ๋„๊ตฌ์ƒ์ž(Toolbox) Matlab์˜ ๊ตฌ์กฐ๋Š” ์ƒ๋‹นํžˆ ์œ ์—ฐ์„ฑ์ด ์žˆ๊ณ , ํŠน์ •ํ•œ ๋ชฉ์ ์„ ์š”๊ตฌํ•˜๋Š” ๋„๊ตฌ์ƒ์ž(toolbox)๋“ค์„ ์ถ”๊ฐ€ํ•จ์œผ๋กœ์จ ๋ณด๋‹ค ๋‹ค์–‘ํ•˜๊ณ  ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋Šฅ์„ ์‰ฝ๊ฒŒ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋˜์–ด ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ toolbox๋“ค์€ ์—ฌ๋Ÿฌ ํ•™๋ฌธ ๋ถ„์•ผ์˜ ๊ฐœ๋…์„ ๋น ๋ฅธ ์ˆ˜ํ•™์  ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ํ•จ์ˆ˜ํ™”ํ•˜์—ฌ ๋ชจ์•„ ๋†“์€ Matlab์˜ ํ•จ์ˆ˜๋“ค๋กœ์„œ ๋‹ค์–‘ํ•œ toolbox๊ฐ€ ์ œ๊ณต๋˜๊ณ  ์žˆ๋Š”๋ฐ ์ด๋“ค์„ ๊ฐ„๋‹จํžˆ ์†Œ๊ฐœํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™ ๋‹ค. ์‹ ํ˜ธ ์ฒ˜๋ฆฌ(Signal Processing) Toolbox : ๋””์ง€ํ„ธ ์‹ ํ˜ธ ์ฒ˜๋ฆฌ ๊ธฐ์ˆ ์„ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜์˜ ํ•จ์ˆ˜๋“ค์ด ๋ชจ์ธ ์ง‘๋‹จ์œผ๋กœ์จ ์‹ ํ˜ธ ๋ฐ ์„ ํ˜• ์‹œ์Šคํ…œ์˜ ๋ชจ๋ธ, ๋””์ง€ํ„ธ ๋ฐ ์•„๋‚ ๋กœ๊ทธ ํ•„ํ„ฐ์˜ ์„ค๊ณ„์™€ ๋ถ„์„ ๋ฐ Power Spectrum ํ‰๊ฐ€๋ฅผ ์œ„ํ•œ ๊ธฐ๋Šฅ(FFT ๋ถ„์„)์„ ํฌํ•จํ•˜๊ณ  ์žˆ๋‹ค. ์˜์ƒ ์ฒ˜๋ฆฌ(Image Processing) Toolbox : 2์ฐจ์›์ ์ธ ์˜์ƒ ์‹ ํ˜ธ์˜ ์ฒ˜๋ฆฌ ๋ฐ ํ•ด์„์„ ์œ„ํ•œ ๊ฐ ์ข… ํ•จ์ˆ˜๋“ค์„ ์ œ๊ณตํ•œ๋‹ค. ์ œ์–ด ์‹œ์Šคํ…œ(Control System) Toolbox : ์‹œ์Šคํ…œ์˜ ๋ถ„์„ ๋ฐ ์ œ์–ด๊ธฐ ์„ค๊ณ„๋ฅผ ์œ„ํ•œ Matlabํ”„ ๋กœ๊ทธ๋žจ๋“ค์˜ ํ•จ์ˆ˜๋“ค์ด ์žˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๋‹ค๋ฃจ์–ด์ง€๋Š” ํ•จ์ˆ˜๋“ค์˜ ์ฃผ์š”ํ•œ ํŠน์ง•์€ ์ „๋‹ฌ ํ•จ์ˆ˜์™€ ์ƒํƒœ ๋ฐฉ์ •์‹์„ ๋Œ€์ƒ์œผ๋กœ ํ•˜์—ฌ ์‹œ์Šคํ…œ์˜ ํ•ด์„ ๋ฐ ์„ค๊ณ„๊ฐ€ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ์ˆ˜์น˜ํ•ด์„์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ƒ๋‹นํ•œ ์ •ํ™•์„ฑ์„ ๊ฐ–๊ณ  ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋Ÿฌํ•œ ๊ฒฐ๊ณผ๋“ค์„ ์‰ฝ๊ฒŒ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋Š” ๊ทธ๋ž˜ํ”„๋ฅผ ํ†ตํ•ด ์ดํ•ด์˜ ํญ ์„ ๋„“๊ฒŒ ํ•œ๋‹ค. ํผ์ง€(Fuzzy Logic) Toolbox : ๋ณต์žกํ•˜๊ณ  ๋น„์„ ํ˜•์ ์ธ ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ์ •ํ™•ํ•œ ๋ชจ๋ธ๋ง์ด ์—†์–ด ๋„ ์ œ์–ด๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ์ด๋Ÿฌํ•œ ํผ์ง€ ๊ธฐ์ˆ ์„ ์‘์šฉ ์‹œ์Šคํ…œ์— ์ ์šฉํ•˜์—ฌ ์ œ ์–ด๊ธฐ ๋””์ž์ธ๊ณผ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๋ฐ ์‹ค์‹œ๊ฐ„ ์ œ์–ด ๋“ฑ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค. ํ†ต์‹ (Communication) Toolbox : ํ†ต์‹  ์‹œ์Šคํ…œ์˜ ํ•ด์„๊ณผ ๋””์ž์ธ ๋ฐ ์‹œ๋ฎฌ๋ ˆ์ด์…˜์„ ์œ„ํ•œ ํ•ด์„ ํ•จ์ˆ˜๋“ค์„ ํฌํ•จํ•˜๊ณ  ์žˆ๋‹ค. ์‹ ๊ฒฝ ํšŒ๋กœ๋ง(Neural Network) Toolbox : ํŒจํ„ด ์ธ์‹์ด๋‚˜ ๋น„์„ ํ˜• ์‹œ์Šคํ…œ์˜ ๋ชจ๋ธ๋ง๊ณผ ์ œ์–ด์™€ ๊ฐ™์€ ํ•ด์„์ด ๊ทนํžˆ ์–ด๋ ค์šด ๊ฒฝ์šฐ์— ์‹ ๊ฒฝํšŒ๋กœ๋ง์„ ์ ์šฉํ•˜์—ฌ ์ข…์ข… ๋งŒ์กฑ์Šค๋Ÿฐ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ ๋‹ค. ์—ฌ๋Ÿฌ ๊ฐ€์ง€์˜ ์‹ ๊ฒฝ๋ง์„ ์ œ๊ณตํ•˜์—ฌ ์‹œ์Šคํ…œ์˜ ๋””์ž์ธ๊ณผ ์ˆ˜ํ–‰ ๋ฐ ์‹œ๋ฎฌ๋ ˆ์ด์…˜์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•˜๊ณ  ์žˆ๋‹ค. ์ตœ์ ํ™”(Optimization) Toolbox : ๋น„์„ ํ˜• ํ•จ์ˆ˜์˜ ์ตœ์ ํ™” ๋ฌธ์ œ, ์„ ํ˜• 2์ฐจ ํ˜•์‹์˜ ์ตœ์ ํ™”, Non-negative least square, ๋น„์„ ํ˜• ๋ฐฉ์ •์‹์˜ ํ•ด ๋“ฑ์„ ์œ„ํ•ด ๋‹ค์–‘ํ•œ ํ•จ์ˆ˜ ํ”„๋กœ๊ทธ๋žจ๋“ค์„ ์ œ๊ณต ํ•œ๋‹ค. ํ†ต๊ณ„(Statistics) Toolbox : ํ™•๋ฅ  ๋ฐ ํ†ต๊ณ„์˜ ์ž๋ฃŒ๋“ค์„ ํ•ด์„, ๋ชจ๋ธ๋ง ๋ฐ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•  ์ˆ˜ ์žˆ ๋Š” ๋‹ค์–‘ํ•œ ํ•จ์ˆ˜๋“ค์„ ์ œ๊ณตํ•œ๋‹ค. ์‹œ์Šคํ…œ ์ถ”์ •(System Identification) Toolbox : ์ž…์ถœ๋ ฅ ๋ฐ์ดํ„ฐ๋กœ๋ถ€ํ„ฐ ๋™์  ์‹œ์Šคํ…œ์˜ ์„ ํ˜•๋ชจ ๋ธ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ, ์ œ์–ด ์„ค๊ณ„ ๋ฐ ์‹ ํ˜ธ์ฒ˜๋ฆฌ์— ์‘์šฉ๋˜๊ณ  ์žˆ์œผ๋ฉฐ, ์ตœ๊ทผ์— ๊ธˆ์œต, ๊ฒฝ์ œ ๋ถ„์•ผ์—์„œ์˜ ๋ชจ๋ธ๋ง ๋ฐฉ๋ฒ•์œผ๋กœ๋„ ๊ฐ๊ด‘์„ ๋ฐ›๊ณ  ์žˆ๋‹ค. ๊ธฐ์ดˆ์ˆ˜ํ•™(Symbolic Math) Toolbox : Maple V.๋ฅผ ๊ธฐ๋ณธ์œผ๋กœ ํ•˜์—ฌ ๊ฐ์ข… ์ˆ˜ํ•™ ๊ณ„์‚ฐ์‹ ๋“ฑ์„ ์‹คํ–‰ํ•œ๋‹ค.
  • 9. - 9 - ์ œ 2 ์žฅ ๊ธฐ๋ณธ์ ์ธ Matlab ์‚ฌ์šฉ๋ฒ• ์ด ์žฅ์—์„œ๋Š” Matlab์„ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ์žˆ์–ด์„œ ์•Œ์•„๋‘์–ด์•ผ ํ•  ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ์‚ฌํ•ญ๋“ค๊ณผ ํ•จ์ˆ˜๋“ค ์˜ ์‚ฌ์šฉ๋ฒ•์— ๋Œ€ํ•˜์—ฌ ๊ฐ„๋‹จํžˆ ์‚ดํŽด๋ณด๊ธฐ๋กœ ํ•œ๋‹ค. ํ–‰๋ ฌ ๋˜๋Š” ๋ฒกํ„ฐ์˜ ์ž…๋ ฅ ๋ฐ ์กฐ์ž‘์— ๋Œ€ํ•˜์—ฌ ์•Œ ์•„๋ณด๊ณ , ์ด๋Ÿฌํ•œ ์ž๋ฃŒ๋“ค์„ ๋‹ค๋ฃจ๋Š” ์ž‘์—… ๊ณต๊ฐ„์— ๋Œ€ํ•œ ์ •๋ณด์˜ ํš๋“ ๋ฐ ์ €์žฅ๊ณผ ์ž‘์—…์˜ ์ค‘์ง€, ์ˆ˜ ์น˜ ์ž๋ฃŒ์˜ ํ‘œํ˜„, ์ถœ๋ ฅ ํ˜•์‹, ๋„์›€๋ง, ํ•จ์ˆ˜ ๋“ฑ์— ๊ด€ํ•˜์—ฌ ์‚ดํŽด๋ณด๊ธฐ๋กœ ํ•œ๋‹ค. 1. ํ–‰๋ ฌ์˜ ์ž…๋ ฅ ๋ฐฉ๋ฒ• Matlab์—์„œ ์‚ฌ์šฉ๋˜๋Š” ํ–‰๋ ฌ ์ž…๋ ฅ๋ฐฉ์‹์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ช‡ ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. โ‘  matlab ๋ช…๋ น ํ–‰(command-line)์—์„œ ์ง์ ‘ ํ–‰๋ ฌ์˜ ์›์†Œ๋“ค์„ ํ•˜๋‚˜์”ฉ ์ž…๋ ฅํ•˜์—ฌ ํ–‰๋ ฌ์„ ๊ตฌ์„ฑ โ‘ก ๋‚ด๋ถ€๋ช…๋ น ๋˜๋Š” ํ•จ์ˆ˜๋“ค์„ ์‚ฌ์šฉํ•˜์—ฌ ํ–‰๋ ฌ์„ ๊ตฌ์„ฑ โ‘ข M-ํŒŒ์ผ ๋‚ด์—์„œ ํ–‰๋ ฌ์„ ๊ตฌ์„ฑ โ‘ฃ ์™ธ๋ถ€์˜ ์ž๋ฃŒ ํŒŒ์ผ๋กœ๋ถ€ํ„ฐ ํ–‰๋ ฌ์„ ๋ถˆ๋Ÿฌ๋“ค์ž„ Maltlab ์–ธ์–ด์—์„œ๋Š” ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋“ค๊ณผ๋Š” ๋‹ฌ๋ฆฌ ์ฐจ์› ์„ ์–ธ์ด๋‚˜ ํ˜• ์„ ์–ธ์ด ์—†๋‹ค. ํ˜„ ์žฌ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ์ปดํ“จํ„ฐ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํฌ๊ธฐ๊นŒ์ง€ ์ž๋™์ ์œผ๋กœ ์ €์žฅ ๊ณต๊ฐ„์„ ํ• ๋‹นํ•ด ์ค€๋‹ค. ์ž‘์€ ํฌ๊ธฐ์˜ ํ–‰๋ ฌ์„ ์ž…๋ ฅํ•˜๋Š” ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ง์ ‘์ ์„ ์›์†Œ๋“ค์„ ๋‚˜์—ดํ•˜ ์—ฌ ์ž…๋ ฅํ•˜๋Š” ๊ฒƒ์ด๋‹ค. โ‘  ์›์†Œ๋“ค์€ ๋นˆ ์นธ(๊ณต๋ฐฑ) ๋˜๋Š” ์‰ผํ‘œ(,)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ถ„๋ฆฌํ•œ๋‹ค. โ‘ก ์ „์ฒด ์›์†Œ๋“ค์€ ๋Œ€๊ด„ํ˜ธ([ ])๋กœ ๊ฐ์‹ผ๋‹ค. โ‘ข ์›์†Œ์˜ ๋์— ์„ธ๋ฏธ์ฝœ๋ก (;, semicolon)์„ ๋ถ™์ด๋ฉด ํ•œ ํ–‰์˜ ์ข…๋ฃŒ๋ฅผ ์˜๋ฏธํ•œ๋‹ค. 2. ํ–‰๋ ฌ์˜ ์›์†Œ๋“ค - matlab์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ž„์˜์˜ ํ‘œํ˜„๋“ค : ์ˆ˜์น˜, ํ•จ์ˆ˜, ์ˆ˜์‹, ๋ฌธ์ž ๋“ฑ ใ€‹A=[1 2 3 ; 4, 5, 6 ; 7, 8 9] A= 1 2 3 4 5 6 7 8 9 ใ€‹ x=[-2.5 exp(2.5) 2*3/4] x= -2.5 12.1825 1.5 ใ€‹y=['abc' ; 'x' 'y' 'z'] y= abc xyz - ํ–‰๋ ฌ์˜ ์›์†Œ๋“ค ์ค‘์—์„œ ์–ด๋Š ํ•œ ๊ฐ’๋งŒ์„ ์ƒˆ๋กœ ์ž…๋ ฅํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ • ใ€‹x(5)=abs(x(1)) x=
  • 10. - 10 - -2.5 12.128 1.5 0 2.5 โ†“ โ€ป ๊ฐ’์ด ์ง€์ •๋˜์ง€ ์•Š์€ ์ƒ‰์ธ์˜ ์›์†Œ๋“ค์€ ์ž๋™์ ์œผ๋กœ 0์œผ๋กœ ์ง€์ •๋œ๋‹ค. - ํ–‰๋ ฌ ์ž์‹ ์„ ๋ถ€ํ–‰๋ ฌ(sub-matrix)๋กœ์„œ ๋ถˆ๋Ÿฌ์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ ใ€‹z=[1 3 5]; ใ€‹A=[A;z] A= 1 2 3 4 5 6 7 8 9 1 3 5 - ํฐ ํ–‰๋ ฌ์˜ ์ผ๋ถ€ ์›์†Œ๋“ค์„ ์„ ํƒํ•ด์„œ ์ž‘์€ ํ–‰๋ ฌ๋กœ ๊ตฌ์„ฑ ใ€‹B=A(1:3, :) B= 1 2 3 4 5 6 7 8 9 ใ€‹C=A(3:4, 2:3) 3. ๋ณต์†Œ์ˆ˜์™€ ๋ณต์†Œ ํ–‰๋ ฌ - ์ˆซ์ž ๋’ค์— 'i' ๋˜๋Š” 'j'๋ฅผ ๋ถ™์ž„์œผ๋กœ์จ ๋ณต์†Œ์ˆ˜ ํ‘œํ˜„ ใ€‹z=1+2*i ๋˜๋Š” z=1+2i ๋˜๋Š” ใ€‹z=1+2*j๋Š” z=1+2j z= 1.0000 + 2.0000i - ๋ณต์†Œ ํ–‰๋ ฌ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ• ใ€‹A=[1 2; 3 4]+i*[4 3; 2 1] ๋˜๋Š” A=[1+4i 2+3i; 3+2i 4+i] ์ฃผ์˜:'+' ๋˜๋Š” '-'๋ถ€ํ˜ธ ์ „ํ›„์— ๊ณต๋ฐฑ์„ ๋‘์–ด์„œ๋Š” ์•ˆ๋œ๋‹ค. ใ€‹x=[1 2; -3 4] ใ€‹i=abs(-x) ใ€‹z=1+2*i z= 3 5 7 9 ====> z๋Š” ๋ณต์†Œ์ˆ˜ '1+2i'๊ฐ€ ์•„๋‹ˆ๋ผ '2|x|+1'์˜ ๊ฐ’์ด ๋œ๋‹ค. 4. ์ „์น˜ ํ–‰๋ ฌ(matrix transpose) - ์ž‘์€ ๋”ฐ์Œํ‘œ(', prime ๋˜๋Š” apostrophe)์‚ฌ์šฉ ใ€‹x= [1 2 3]'
  • 11. - 11 - x= 1 2 3 - ๋ณต์†Œ ํ–‰๋ ฌ์ผ ๊ฒฝ์šฐ ์ฃผ์˜! (๋‹จ์ˆœํ•œ ์ „์น˜ ํ–‰๋ ฌ์ด ์•„๋‹ˆ๋ผ ๊ณต์•ก๋ณต์†Œ ์ „์น˜ ํ–‰๋ ฌ์ด ๊ตฌํ•ด์ง) ใ€‹a=[1+2i 2-3i] ใ€‹b=a' --> ์›ํ•˜๋Š” ๊ฒฐ๊ณผ๊ฐ€ ์•„๋‹ˆ๋‹ค. b = 1.0000 - 2.0000i 2.0000 + 3.0000i ใ€‹c=a.' ๋˜๋Š” d=conj(a') ์‚ฌ์šฉ. c = d = 1.0000 + 2.0000i 1.0000 + 2.0000i 2.0000 - 3.0000i 2.0000 - 3.0000i 5. matlab์— ์‚ฌ์šฉ๋˜๋Š” ์‚ฌ์น™ ์—ฐ์‚ฐ์ž๋“ค + addition / ์˜ค๋ฅธ ๋‚˜๋ˆ„๊ธฐ(right division) - subtraction ์™ผ ๋‚˜๋ˆ„๊ธฐ(left division) * multiplication ^ power * /, : ์‚ฐ์ˆ  ์—ฐ์‚ฐ(1/2, 21)์ธ ๊ฒฝ์šฐ๋Š” ๊ฐ™์€ ๊ฐ’์„ ๊ฐ–๋Š”๋‹ค. ํ–‰๋ ฌ ์—ฐ์‚ฐ์˜ ๊ฒฝ์šฐ a/b, ba๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ–๋Š”๋‹ค. 6. ํ–‰๋ ฌ์˜ ์‚ฌ์น™ ์—ฐ์‚ฐ โ‘  ๋ง์…ˆ ๋ฐ ๋บ„์…ˆ - ๊ฐ ํ–‰๋ ฌ์˜ ๊ฐ™์€ ์œ„์น˜, ์ฆ‰ ํ–‰๋ ฌ์ƒ์˜ ์ƒ‰์ธ(index)์ด ๊ฐ™์€ ์›์†Œ๋ผ๋ฆฌ ์ด๋ฃจ์–ด์ง. x=[x11 x12 y=[y11 y12 x21 x22] y21 y22] ์ผ ๋•Œ x+y=[x11+y11 x12+y12 x21+y21 x22+y22] ๊ฐ€ ๋œ๋‹ค. ใ€‹a=[1 2 3; 4 5 6]; ใ€‹b=[2 4 6; 1 3 5]; ใ€‹c=a+b c= 3 6 9 5 8 11 ใ€‹d=c-5; ----> ?
  • 12. - 12 - โ‘ก ๊ณฑ์…ˆ - '*'๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ‘œ์‹œ, ํ–‰๋ ฌ์˜ ๋‚ด๋ถ€ ์ฐจ์›(inner dimension)์ด ์ผ์น˜ํ•  ๊ฒฝ์šฐ์—๋งŒ ์ •์˜. ใ€‹x=[1 2 3]; ใ€‹y=[3 4 5]; ใ€‹x*y' ans= 26 ใ€‹z=x'*y z= 3 4 5 6 8 10 9 12 15 ใ€‹5*z โ‘ข ๋‚˜๋ˆ—์…ˆ A*X=B --> X=inv(A)*B ---> X=AB (left division) X*A=B --> X=B*inv(A) ---> X=A/B (right division) - x+2y+3z=5 4x+5y+6z=8 7x+8y=7 ์ผ ๋•Œ ๊€Ž ๊€š ๏ธณ๏ธณ๏ธณ ๊€ ๊€› ๏ธณ๏ธณ๏ธณ 1 2 3 4 5 6 7 8 0 * ๊€Ž ๊€š ๏ธณ๏ธณ๏ธณ ๊€ ๊€› ๏ธณ๏ธณ๏ธณ x y z = ๊€Ž ๊€š ๏ธณ๏ธณ๏ธณ ๊€ ๊€› ๏ธณ๏ธณ๏ธณ 5 8 7 โ‡’ x,y,z = ? ใ€‹A=[1 2 3; 4 5 6; 7 8 0]; ใ€‹b=[5 8 7]'; ใ€‹X=Ab X = -2.5556 3.1111 0.4444 โ‘ฃ ํ–‰๋ ฌ์˜ ๊ฑฐ๋“ญ์ œ๊ณฑ ใ€‹a=[1 2; 3 4] a = 1 2 3 4 ใ€‹a^2 ans = 7 10 15 22 ใ€‹a.^2 ans = 1 4
  • 13. - 13 - 9 16 7. ์ผ๋ฐ˜์ ์ธ ๋ช…๋ น์–ด โ‘  help help : matlab์˜ path์—์„œ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์„ค๋ช… help log : log ํ•จ์ˆ˜๋ฅผ ์„ค๋ช… โ‘ก lookfor log : matlab path์— ์žˆ๋Š” ๋ชจ๋“  MํŒŒ์ผ์˜ ์ฒซ ๋ฒˆ์งธ ์ฝ”๋ฉ˜ํŠธ๋ผ์ธ์—์„œ log๋ฅผ ์ฐพ์•„ ์„ค๋ช…ํ•œ๋‹ค. โ‘ข type filename : ํŠน์ •ํ•œ ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ๋ณด์—ฌ์คŒ. โ‘ฃ what : ํ˜„์žฌ์˜ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ํŒŒ์ผ์„ ๋ฆฌ์ŠคํŠธ what dirname : matlab์˜ ๊ฒ€์ƒ‰๊ฒฝ๋กœ์—์„œ dirname์˜ ๋””๋ ‰ํ† ๋ฆฌ์— ์žˆ๋Š” ํŒŒ์ผ์„ ๋ฆฌ์ŠคํŠธํ•œ๋‹ค. โ‘ค which funname : ์ „์ฒด ๊ฒ€์ƒ‰ ๊ฒฝ๋กœ์— ์žˆ๋Š” funname ํ•จ์ˆ˜๋ฅผ ํ™”๋ฉด์— ๋ณด์—ฌ์ค€๋‹ค. โ‘ฅ clear : ์ž‘์—…๊ณต๊ฐ„์˜ ๋ชจ๋“  ๋ณ€์ˆ˜๋“ค์„ ์ง€์šด๋‹ค. clear x y z : ์ž‘์—…๊ณต๊ฐ„์˜ ๋ณ€์ˆ˜ x, y, z๋ฅผ ์ง€์šด๋‹ค. โ‘ฆ length : ๋ฒกํ„ฐ์˜ ๊ธธ์ด ใ€‹x=[ 2 3 4 ] ; ใ€‹length(x) ans =3 ใ€‹max (size(x)) ans =3 โ‘ง save : ๋ชจ๋“  ๋ณ€์ˆ˜๋ฅผ matlab.mat ์— binary ํ˜•ํƒœ๋กœ ์ €์žฅ save filename :๋ชจ๋“  ๋ณ€์ˆ˜๋ฅผ filename์— binary ํ˜•ํƒœ๋กœ ์ €์žฅ (ํ™•์žฅ์ž๋Š” ์ƒ๋žต default --> .mat ) save filename x y z : ๋ณ€์ˆ˜ x, y, z๋ฅผ filename์— binary ํ˜•ํƒœ๋กœ ์ €์žฅ save filename x y z -ascii : ๋ณ€์ˆ˜ x, y, z๋ฅผ filename์— ascii ํ˜•ํƒœ๋กœ ์ €์žฅ โ‘จ load : ๋ณ€์ˆ˜๊ฐ€ ์ €์žฅ๋œ matlab.mat ํŒŒ์ผ์„ ๋กœ๋”ฉ load filename : ๋ณ€์ˆ˜๊ฐ€ ์ €์žฅ๋œ filename์„ ๋กœ๋”ฉ โ‘ฉ size : m x n ํ–‰๋ ฌ์˜ ์ฐจ์› ใ€‹x=[1 2 3 ; 4 5 6] ใ€‹d=size(x)
  • 14. - 14 - d=2 3 ใ€‹[m,n] = size(x) m=2 n=3 โ‘ช format : ์ถœ๋ ฅ์˜ ํ˜•์‹์„ ์ œ์–ดํ•˜๋Š” ๋ช…๋ น ๋ช… ๋ น ์„ค๋ช…๊ณผ ์˜ˆ format short format long format short e format long e format bank format + format rat ์†Œ์ˆ˜์  ์ดํ•˜ 4 ์ž๋ฆฌ์ˆ˜(๊ธฐ๋ณธ) : pi=3.1416 ์†Œ์ˆ˜์  ์ดํ•˜ 14 ์ž๋ฆฌ์ˆ˜ : pi=3.14159265358979 ์†Œ์ˆ˜์  ์•„๋ž˜ 4 ์ž๋ฆฌ์ˆ˜ : pi=3.1416e+000 ์†Œ์ˆ˜์  ์ดํ•˜ 15 ์ž๋ฆฌ์ˆ˜ : pi=3.141592653589793e+000 ์†Œ์ˆ˜์  ์•„๋ž˜ 2 ์ž๋ฆฌ์ˆ˜ : pi=3.14 ์–‘์ˆ˜: +, ์Œ์ˆ˜: -, 0: (blank) ์†Œ์ˆ˜์  ๋Œ€์‹ ์— โ€˜/โ€™๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ถ„์ˆ˜ ํ˜•ํƒœ๋กœ ํ‘œ์‹œ โ‘ซ more on : ํ™”๋ฉด์— ํ•œ ํŽ˜์ด์ง€์”ฉ ์ถœ๋ ฅ (space bar-ํ•œํŽ˜์ด์ง€์”ฉ, enter key-ํ•œ์ค„์”ฉ) more off : ํ™”๋ฉด์— ์ถœ๋ ฅ๋˜๋Š” ํŽ˜์ด์ง€๋ฅผ ์ œ์–ดํ•˜์ง€ ์•Š๋Š”๋‹ค. โ‘ฌ computer : matlab์„ ์‹คํ–‰ํ•˜๊ณ  ์žˆ๋Š” ์ปดํ“จํ„ฐ์˜ ์ข…๋ฅ˜๋ฅผ ๋ถ„๋ณ„ํ•˜์—ฌ ์•Œ๋ ค์ค€๋‹ค. ใ€‹computer ans = PCWIN โ‘ญ clock : ํ˜„์žฌ์˜ ๋‚ ์งœ์™€ ์‹œ๊ฐ„์„ ์‹ญ์ง„์ˆ˜ ํ˜•ํƒœ๋กœ 6๊ฐœ์˜ ์—ด ๋ฒกํ„ฐ์— ๋‚˜ํƒ€๋‚ธ๋‹ค. ใ€‹clock ans = 1.0e+003 * 2.0000 0.0070 0.0040 0.0100 0.0480 0.0133 ใ€‹fix(clock) ans = 2000 7 4 10 49 11 8. ๊ทธ ๋ฐ–์˜ ํ–‰๋ ฌ ํ•จ์ˆ˜ - roots : ๊ณ ์ฐจ ๋ฐฉ์ •์‹์˜ ๊ทผ์„ ๊ตฌํ•จ ใ€‹a=[1 3 2] ใ€‹b=roots(a) b = -2 -1 - poly : ํŠน์„ฑ ๋‹คํ•ญ์‹ ใ€‹poly(b)
  • 15. - 15 - ans = 1 3 2 - det : ํ–‰๋ ฌ์‹(determinant) - trace : ๋Œ€๊ฐํ•ฉ(trace) ใ€‹b=[1 2 3;4 5 6;4 5 6] b = 1 2 3 4 5 6 4 5 6 ใ€‹c=trace(b) c= 12 ใ€‹d=[b(1:2, :); 3 4 5; 3 2 1] d = 1 2 3 4 5 6 3 4 5 3 2 1 ใ€‹trace(d) ans= 11 9. ์ˆ˜ํ•™ ํ•จ์ˆ˜ โ‘  ใ€‹abs(-2) ใ€‹abs(3+4i) ใ€‹abs('Q') : Ascii๋ฌธ์ž์˜ ๊ฐ’์„ ์ถœ๋ ฅ ans = 81 โ‘ก exp(5) โ‘ข sqrt(x) : x์˜ ๊ฐ์›์†Œ์— ๋Œ€ํ•œ ์ œ๊ณฑ๊ทผ์„ ๊ณ„์‚ฐ ์Œ์ˆ˜๋‚˜ ๋ณต์†Œ์ˆ˜์— ๋Œ€ํ•ด์„œ๋Š” ๋ณต์†Œ์ˆ˜์˜ ๊ฒฐ๊ณผ๋ฅผ ์ œ๊ณต ํ–‰๋ ฌ์˜ ์ œ๊ณฑ๊ทผ์—๋Š” sqrtm(x)๋ฅผ ์‚ฌ์šฉ ใ€‹sqrt((-2:2)) ans = 0 + 1.4142i 0 + 1.0000i 0 1.0000 1.4142 โ‘ฃ log(x) : Natural logarithm log10(x) : Common(base 10) logarithm โ‘ค ceil(x) : x๋ณด๋‹ค ํฐ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์ •์ˆ˜ ๊ฐ’์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.
  • 16. - 16 - fix(x) : ๋ถ„์ˆ˜ ๋ถ€๋ถ„์„ ์ž˜๋ผ ๋ฒ„๋ฆฐ ์ •์ˆ˜ ๊ฐ’์„ ๊ฐ–๋Š”๋‹ค. floor(x) : x๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ •์ˆ˜ ๊ฐ’์„ ์ทจํ•œ๋‹ค. round(x) : x์— ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์ •์ˆ˜ ๊ฐ’์„ ์–ป๋Š”๋‹ค. ใ€‹x=[-1.8 -0.3 3.3 5.7 7.0]; ใ€‹ceil(x) ans = -1 0 4 6 7 ใ€‹fix(x) ans = -1 0 3 5 7 ใ€‹floor(x) ans = -2 -1 3 5 7 ใ€‹round(x) ans = -2 0 3 6 7 โ‘ฅ real, imag, conj : ๋ณต์†Œ์ˆ˜์˜ ์‹ค์ˆ˜๋ถ€, ํ—ˆ์ˆ˜๋ถ€, conjugate๋ฅผ ์–ป๋Š”๋‹ค. ใ€‹x=[2+3i ; 4-5i] ; ใ€‹real(x) ใ€‹imag(x) ใ€‹conj(x) angle : ์œ„์ƒ๊ฐ์„ ๊ณ„์‚ฐํ•˜๋Š” ํ•จ์ˆ˜๋กœ, ๋ณต์†Œ์ˆ˜ ํ–‰๋ ฌ์˜ ์œ„์ƒ๊ฐ์„ radian์œผ๋กœ ๊ณ„์‚ฐํ•˜๊ณ  ์ด ๊ฐ์€ -ฯ€์—์„œ ฯ€์‚ฌ์ด์— ๋†“์—ฌ ์žˆ๋‹ค. ใ€‹z=3+4i ; ใ€‹angle(z) ans = 0.9273 (53.1 o ) Mโˆ ฮธ=Mejฮธ =a+bj M= (a2 +b2 ), ฮธ=tan-1 (b/a), a=Mcos(ฮธ), b=Msin(ฮธ) ใ€‹c=1-2i ใ€‹mag_c=abs(c); ใ€‹angle_c=angle(c); ใ€‹deg_c=angle_c*180/pi; ใ€‹real_c=real(c); ใ€‹imag_c=imag(c); โ‘ฆ rem(x,y) : ๋‚˜๋จธ์ง€๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ํ•จ์ˆ˜ rem(x,y)=x-fix(x./y)*y ใ€‹x=[5 6 ; 7 8] ; y=[2 3 ; 4 5] ; ใ€‹rem(x,y) ans = 1 0
  • 17. - 17 - 3 3 sign(x) : x์˜ ๊ฐ ์›์†Œ๊ฐ€ 0๋ณด๋‹ค ํฌ๋ฉด 1, ๊ฐ™์œผ๋ฉด 0, ์ž‘์œผ๋ฉด -1์„ ์›์†Œ๋กœ ํ•˜๋Š” mxn์˜ ์‹ค์ˆ˜ ํ–‰๋ ฌ์„ ๋งŒ๋“ ๋‹ค. ใ€‹x=[ 1 -1 0; 0 1 2]; ใ€‹sign(x) ans = 1 -1 0 0 1 -1 โ‘ง ์‚ผ๊ฐํ•จ์ˆ˜ : ๋ชจ๋“  ๊ฐ์€ radian๋‹จ์œ„์ด๋‹ค. sin(x), cos(x), tan(x), sinh(x), cosh(x), tanh(x), asin(x), acos(x), atan(x), asinh(x), scosh(x), atanh(x) 10. ๋ฒกํ„ฐ์™€ ํ–‰๋ ฌ์˜ ์กฐ์ž‘๋ฒ• โ‘  ๋ฒกํ„ฐ์˜ ์ƒ์„ฑ - โ€œ์‹œ์ž‘๊ฐ’:์ฆ๋ถ„๊ฐ’:์ตœ์ข…๊ฐ’" ํ˜•์‹์œผ๋กœ ์ง€์ • โ€œ์‹œ์ž‘๊ฐ’:์ตœ์ข…๊ฐ’" ํ˜•ํƒœ๋กœ ์ž…๋ ฅ์‹œ ์ฆ๋ถ„๊ฐ’์€ 1๋กœ ์ง€์ • - ์ฝœ๋ก (:)์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฒกํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ ํ–‰๋ฒกํ„ฐ ์ƒ์„ฑ ใ€‹x=1:5 x=1 2 3 4 5 ใ€‹y=0:0.5:3 y = 0 0.5000 1.0000 1.5000 2.0000 2.5000 3.0000 ใ€‹z=5:-1:-5 z = 5 4 3 2 1 0 -1 -2 -3 -4 -5 ใ€‹x=(0:.2:2)'; ใ€‹y=sin(x).*exp(-x); ใ€‹[x,y] ans = 0 0 0.2000 0.1627 0.4000 0.2610 0.6000 0.3099 0.8000 0.3223 1.0000 0.3096 1.2000 0.2807 1.4000 0.2430 1.6000 0.2018 1.8000 0.1610
  • 18. - 18 - 2.0000 0.1231 - ๋Œ€์ˆ˜์ ์œผ๋กœ ๋“ฑ๊ฐ„๊ฒฉ์ธ ๋ฒกํ„ฐ ์ƒ์„ฑ ใ€‹linspace(-5,5,3) ans = -5 0 5 โ‘ก ์ฒจ์ž ๋ถ™์ด๊ธฐ - matlab์—์„œ๋Š” ์ฒจ์ž(subscript)๋ฅผ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ํ–‰๋ ฌ์˜ ๊ฐ ์›์†Œ๋“ค์„ ํ‘œ์‹œ ํ• ์ˆ˜ ์žˆ๋‹ค. ใ€‹a=[0 1 2;4 5 6 ;8 9 10] a = 0 1 2 4 5 6 8 9 10 ใ€‹a(1,1)=a(2,2)-a(2,3) a = -1 1 2 4 5 6 8 9 10 ใ€‹a(1.25*2 , 6/2.5) * 1.25*2 = 2.5 ans = 6/2.5 =2.4 9 ใ€‹a=magic(10) a = 92 99 1 8 15 67 74 51 58 40 98 80 7 14 16 73 55 57 64 41 4 81 88 20 22 54 56 63 70 47 85 87 19 21 3 60 62 69 71 28 86 93 25 2 9 61 68 75 52 34 17 24 76 83 90 42 49 26 33 65 23 5 82 89 91 48 30 32 39 66 79 6 13 95 97 29 31 38 45 72 10 12 94 96 78 35 37 44 46 53 11 18 100 77 84 36 43 50 27 59 ใ€‹a(1:5,5) ใ€‹a(1:5,5:7) ใ€‹a(:,5) ใ€‹a(1:2,:) ใ€‹b=[1 2 3; 4 5 6; 7 8 9] b = 1 2 3 4 5 6
  • 19. - 19 - 7 8 9 ใ€‹c=[9 8 7;6 5 4; 3 2 1] c = 9 8 7 6 5 4 3 2 1 ใ€‹c(:,[1 3])=b(:,2:3) ๋˜๋Š” c(:,[1 3])=b(:,[2 3]) c = 2 8 3 5 5 6 8 2 9 ใ€‹c(3:-1:1,:) โ‰ช=== c์˜ 3๋ถ€ํ„ฐ 1๊นŒ์ง€์˜ ํ–‰๋“ค์„ ์—ญ์ˆœ์œผ๋กœ ๋ฐฐ์—ด ans = 8 2 9 5 5 6 2 8 3 ใ€‹a=[1 2; 3 4] a = 1 2 3 4 ใ€‹b=a(:) <<=== ์—ด๋ฒกํ„ฐ๋กœ ๊ตฌ์„ฑ(vectorize) b = 1 2 3 4 ใ€‹a(:)=10:13 <<=== reshape a = 10 12 11 13 ๋ช…๋ น์–ด ๊ธฐ ๋Šฅ fliplr flipud rot90(A) rot90(A,k) reshape(A,m,n) ํ–‰๋ ฌ์˜ ์™ผ์ชฝ๊ณผ ์˜ค๋ฅธ์ชฝ ์—ด์„ ๋ฐ”๊พธ์–ด ์ค€๋‹ค. ํ–‰๋ น์˜ ์œ„์ชฝ๊ณผ ์•„๋ž˜์ชฝ ๋ฐฉํ–ฅ์„ ๋ฐ”๊พธ์–ด ์ค€๋‹ค. ํ–‰๋ ฌ A๋ฅผ ๋ฐ˜์‹œ๊ณ„ ๋ฐฉํ–ฅ์„ 90ยฐํšŒ์ „์‹œํ‚จ๋‹ค. ํ–‰๋ ฌ A๋ฅผ ๋ฐ˜์‹œ๊ณ„ ๋ฐฉํ–ฅ์œผ๋กœ k*90ยฐํšŒ์ „์‹œํ‚จ๋‹ค. ํ–‰๋ ฌ A๋ฅผ ๊ฐ ์—ด์—์„œ ์›์†Œ๋ฅผ ์ทจํ•˜์—ฌ mร—n ํ–‰๋ ฌ์„ ๋งŒ๋“ ๋‹ค. ใ€‹A=[1 2 3; 4 5 6; 7 8 9]
  • 20. - 20 - A= 1 2 3 4 5 6 7 8 9 ใ€‹fliplr(A) ans = 3 2 1 6 5 4 9 8 7 ใ€‹flipud(A) ans = 7 8 9 4 5 6 1 2 3 ใ€‹rot90(A) ans = 3 6 9 2 5 8 1 4 7 ใ€‹B=[1 4; 2 5; 3 6] B = 1 4 2 5 3 6 ใ€‹reshape(B,2,3) ans = 1 3 5 2 4 6 11. ๊ธฐ๋ณธ์ ์ธ ํ–‰๋ ฌ๋“ค โ‘  ones(n) : ๋ชจ๋“  ์›์†Œ๊ฐ€ 1์ธ n x n ํ–‰๋ ฌ์„ ๋งŒ๋“ ๋‹ค. ones(m,n) : ๋ชจ๋“  ์›์†Œ๊ฐ€ 1์ธ m x n ํ–‰๋ ฌ์„ ๋งŒ๋“ ๋‹ค. ones(size(A)) : ํ–‰๋ ฌ A์™€ ๊ฐ™์€ ํฌ๊ธฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ , ๋ชจ๋“  ์›์†Œ๊ฐ€ 1์ธ ํ–‰๋ ฌ์„ ๋งŒ๋“ ๋‹ค. โ‘ก zeros(n) : ๋ชจ๋“  ์›์†Œ๊ฐ€ 0์ธ n x n ํ–‰๋ ฌ์„ ๋งŒ๋“ ๋‹ค. zeros(m,n) : ๋ชจ๋“  ์›์†Œ๊ฐ€ 0์ธ m x n ํ–‰๋ ฌ์„ ๋งŒ๋“ ๋‹ค. zeros(size(A)) : ํ–‰๋ ฌ A์™€ ํฌ๊ธฐ๊ฐ€ ๊ฐ™๊ณ , ๋ชจ๋“  ์›์†Œ๊ฐ€ 0์ธ ํ–‰๋ ฌ์„ ๋งŒ๋“ ๋‹ค. โ‘ข eye(n) : n x n์˜ ๋‹จ์œ„ํ–‰๋ ฌ์„ ๋งŒ๋“ ๋‹ค. eye(m,n) : m x n์˜ ๋‹จ์œ„ํ–‰๋ ฌ์„ ๋งŒ๋“ ๋‹ค.
  • 21. - 21 - eye(size(A)) : ํ–‰๋ ฌ A์™€ ํฌ๊ธฐ๊ฐ€ ๊ฐ™์€ ๋‹จ์œ„ํ–‰๋ ฌ์„ ๋งŒ๋“ ๋‹ค. โ‘ฃ linspace(x1,x2) : x1๊ณผ x2 ์‚ฌ์ด์— ๊ตฌ๊ฐ„์„ ์„ ํ˜•์ ์œผ๋กœ ๋˜‘๊ฐ™์ด ๋“ฑ๋ถ„ํ•˜์—ฌ 100๊ฐœ์˜ ์›์†Œ๋ฅผ ๊ฐ€์ง„ ๋ฒกํ„ฐ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. linspace(x1,x2,n) : x1๊ณผ x2 ์‚ฌ์ด์— n๊ฐœ์˜ ์›์†Œ๋ฅผ ๊ฐ€์ง€๋„๋ก ๋ฒกํ„ฐ๋ฅผ ๋งŒ๋“ ๋‹ค. โ‘ค logspace(a,b) : 10 a ์™€ 10 b ์˜ ๊ตฌ๊ฐ„ ๋‚ด๋ฅผ ๋Œ€์ˆ˜ํ•จ์ˆ˜์ ์œผ๋กœ ๋˜‘๊ฐ™์ด 50 ๋“ฑ๋ถ„ํ•˜์—ฌ ์—ด ๋ฒกํ„ฐ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ใ€‹logspace(2,4,3) ans = 100 1000 10000 โ‘ฅ rand : 0๊ณผ 1์‚ฌ์ด์˜ ์ž„์˜์˜ ์ˆซ์ž์™€ ๊ท ์ผํ•˜๊ฒŒ ๋ถ„ํฌํ•œ ์›์†Œ๋ฅผ ๊ฐ€์ง€๋Š” ํ–‰๋ ฌ์„ ์ƒ์„ฑ randn : ์ •๊ทœ๋ถ„ํฌ, ์ฆ‰ ํ‰๊ท ์ด 0์ด๊ณ  ํŽธ์ฐจ๊ฐ€ 1์ธ Gaussian ๋ถ„ํฌ๋ฅผ ๊ฐ€์ง€๋Š” ํ–‰๋ ฌ์„ ๋งŒ๋“ ๋‹ค. ใ€‹rand(2,3) : ์ž„์˜์˜ ์ˆซ์ž๋ฅผ ์›์†Œ๋กœ ํ•˜๋Š” 2x3 ํ–‰๋ ฌ์„ ์ƒ์„ฑ 12. ๊ณ„์‚ฐ ์†๋„ ใ€‹format ใ€‹d=pi; ใ€‹d*ones(3,4) โ‘  ใ€‹d+zeros(3,4) โ‘ก ใ€‹d(ones(3,4)) โ‘ข ใ€‹repmat(d,3,4) โ‘ฃ (โ‘ ๏ผœโ‘ก๏ผœโ‘ข๏ผœโ‘ฃ, more fast) ใ€‹tic; plot(rand(5)); toc elapsed_time = 0.8220 13. ๋ฐฐ์—ด์—ฐ์‚ฐ ๋ฐฐ์—ด ์—ฐ์‚ฐ(array operation)์ด๋ž€ *, , /, ^ ๋˜๋Š” โ€˜ ๊ธฐํ˜ธ์— ์˜ํ•˜์—ฌ ์ด๋ฃจ์–ด์ง€๋Š” ์ผ๋ฐ˜์ ์ธ ์„ ํ˜• ํ–‰๋ ฌ ์—ฐ์‚ฐ(linear algerbraic matrix operation)์ด ์•„๋‹Œ ํ–‰๋ ฌ์˜ ์›์†Œ์™€ ์›์†Œ ์‚ฌ์ด์— ์„ฑ๋ฆฝ๋˜๋Š” ์‚ฐ์ˆ  ์—ฐ์‚ฐ(element-by-element operation)์„ ๊ฐ€๋ฆฌํ‚จ๋‹ค. ์—ฐ์‚ฐ์ž ์•ž์— ์ (.)์„ ์ฐ์Œ์œผ๋กœ์จ ๋ฐฐ์—ด ์—ฐ์‚ฐ ๋˜๋Š” ์›์†Œ ๋Œ€ ์›์†Œ์˜ ์—ฐ์‚ฐ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. 1) ๋ฐฐ์—ด์˜ ์‚ฌ์น™ ์—ฐ์‚ฐ โ‘  ๋ฐฐ์—ด์—ฐ์‚ฐ์˜ ๋ง์…ˆ ๋ฐ ๋บ„์…ˆ - ์ผ๋ฐ˜์ ์ธ ํ–‰๋ ฌ ์—ฐ์‚ฐ(matrix operation)๊ณผ ๋™์ผ โ‘ก ๋ฐฐ์—ด์—ฐ์‚ฐ์˜ ๊ณฑ์…ˆ ๋ฐ ๋‚˜๋ˆ—์…ˆ - ๊ณฑ์…ˆ( .* ) : ๋ฐฐ์—ด์—ฐ์‚ฐ์˜ ๊ณฑ์…ˆ์„ ๋‚˜ํƒ€๋‚ด๋ฉฐ, ๋‘ ํ–‰๋ ฌ์˜ ์ฐจ์›์ด ๊ฐ™์€ ๋•Œ ๊ฐ ํ–‰๋ ฌ์˜ ๊ฐ™์€
  • 22. - 22 - ์œ„์น˜์— ์žˆ๋Š” ์›์†Œ๋“ค๋ผ๋ฆฌ ๊ณฑ์…ˆ์„ ํ•˜์—ฌ ์ƒˆ๋กœ์šด ํ–‰๋ ฌ์„ ๊ตฌ์„ฑํ•œ๋‹ค. ใ€‹a=[1 2 3; 4 5 6]; ใ€‹b=[1 3 6; 7 8 9]; ใ€‹a.*b ans = 1 6 18 28 40 54 - ๋‚˜๋ˆ—์…ˆ : './', '.', ใ€‹a./b ans = 1.0000 0.6667 0.5000 0.5714 0.6250 0.6667 ใ€‹a.b ans = 1.0000 1.5000 2.0000 1.7500 1.6000 1.5000 โ‘ข ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•œ ๊ฑฐ๋“ญ์ œ๊ณฑ : '.^' ใ€‹x=[1 2 3]; ใ€‹y=[4 5 6]; ใ€‹x.^y ans = 1 32 729 ใ€‹y.^2 ans = 16 25 36 ใ€‹2.^[x ; y] ans = 2 4 8 16 32 64 2) ๊ธฐํƒ€์˜ ์—ฐ์‚ฐ โ‘  ๊ด€๊ณ„์—ฐ์‚ฐ - ๊ด€๊ณ„ ์—ฐ์‚ฐ์ž . ๋‘ ํ–‰๋ ฌ์˜ ๋Œ€์‘ ์›์†Œ๋“ค์„ ๋น„๊ตํ•˜์—ฌ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ 0๊ณผ 1๋กœ ๊ตฌ์„ฑ๋œ ํ–‰๋ ฌ๋กœ ๋‚˜ํƒ€๋ƒ„ . '0' : ๊ฑฐ์ง“(false) '1' : ์ฐธ(true)
  • 23. - 23 - MATLAB์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ด€๊ณ„์—ฐ์‚ฐ๋“ค ์—ฐ์‚ฐ์ž ์˜ ๋ฏธ < โˆผ ๋ฏธ๋งŒ(less than) <= โˆผ ์ดํ•˜(less than or equal) > โˆผ ์ดˆ๊ณผ(greater than) >= โˆผ ์ด์ƒ(greater than or equal) == โˆผ ์™€ ๊ฐ™์Œ(equal) โˆผ= โˆผ ์™€ ๊ฐ™์ง€ ์•Š์Œ(not equal) ใ€‹a=magic(3); a= 8 1 6 3 5 7 4 9 2 ใ€‹a>=5 a(1)=a(1,1) a(2)=a(2,1) a(3)=a(3,1) ans = a(4)=a(1,2) a(5)=a(2,2) a(6)=a(3,2) 1 0 1 a(7)=a(1,3) a(8)=a(2,3) a(9)=a(3,3) 0 1 1 0 1 0 - find : ์›ํ•˜๋Š” ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์›์†Œ๋“ค์„ ์ฐพ์•„ ์ฃผ๋Š” ํ•จ์ˆ˜ ใ€‹k=find(a>=3) k = 1 1 2 3 5 6 7 8 ใ€‹a(k)=5 a = 5 1 5 5 5 5 5 5 2 โ‘ก ๋…ผ๋ฆฌ ์—ฐ์‚ฐ(Logical operation) '&' - and '|' - or
  • 24. - 24 - '~' - not ใ€‹x=[7 -2 6 3 5 10 8 7] ใ€‹(x>5) & (x<9) ans = 1 0 1 0 0 0 1 1 ใ€‹~(x>5) ans = 0 1 0 1 1 0 0 0 - any(x) : ๋ฒกํ„ฐ x์˜ ์›์†Œ๋“ค ์ค‘ ํ•˜๋‚˜๋ผ๋„ 0์ด ์•„๋‹Œ ์›์†Œ๊ฐ€ ์žˆ์œผ๋ฉด 1์„ ๋Œ๋ ค์ฃผ๊ณ  ๋ชจ๋‘ 0์ผ ๋•Œ์—๋Š” 0์„ ๋Œ๋ ค์ค€๋‹ค. ใ€‹x=[0 1 2 3] ใ€‹any(x) ans = 1 - all(x) : ๋ฒกํ„ฐ x์˜ ์›์†Œ๋“ค์ด ๋ชจ๋‘ 0์ด ์•„๋‹ˆ์–ด์•ผ๋งŒ 1์„, ๊ทธ๋ ‡์ง€ ์•Š๊ณ  ํ•˜๋‚˜๋ผ๋„ 0์ธ ์›์†Œ๊ฐ€ ์žˆ์œผ๋ฉด 0์„ ๋Œ๋ ค์ค€๋‹ค. ใ€‹all(x) ans = 0 - xor(x) ใ€‹a=[1 2 3], b=[0 1 5]; ใ€‹xor(a,b) ans = [1 0 0] Matlab์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ด€๊ณ„ ๋ฐ ๋…ผ๋ฆฌ ํ•จ์ˆ˜๋“ค ํ•จ ์ˆ˜ ๊ธฐ ๋Šฅ any all find exist isnan isinf finite isempty isstr isglobal issparse ๋…ผ๋ฆฌ์  ์กฐ๊ฑด ๋…ผ๋ฆฌ์  ์กฐ๊ฑด ๋…ผ๋ฆฌ๊ฐ’์˜ ๋ฐฐ์—ด ์ง€ํ‘œ๋ฅผ ์ฐพ์•„์คŒ ๋ณ€์ˆ˜์˜ ์กด์žฌ ์—ฌ๋ถ€๋ฅผ ์ ๊ฒ€ NaN์˜ ์กด์žฌ ๊ฒ€์ƒ‰ ๋ฌดํ•œ๋Œ€ ๊ฐ’์˜ ์กด์žฌ ๊ฒ€์ƒ‰ ์œ ํ•œํ•œ ๊ฐ’์˜ ์กด์žฌ ๊ฒ€์ƒ‰ ๋นˆ ํ–‰๋ ฌ์˜ ๊ฒ€์ƒ‰ ๋ฌธ์ž์—ด ๋ณ€์ˆ˜์˜ ๊ฒ€์ƒ‰ ์ „์—ญ๋ณ€์ˆ˜(gloval variable)์˜ ๊ฒ€์ƒ‰ sparse ํ–‰๋ ฌ์˜ ๊ฒ€์ƒ‰
  • 25. - 25 - - Discontinuous signal ใ€‹x=linspace(0,10,100); ใ€‹y=sin(x); ใ€‹z=(y>0).*y; ใ€‹z=z+0.5*(y<0); ใ€‹z=(x<=8).*z; ใ€‹plot(x,z) ใ€‹xlabel('x'), ylabel('z=f(x)'); ใ€‹title('A discontinuous signal'); 0 1 2 3 4 5 6 7 8 9 10 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 14. ์ง‘ํ•ฉ๊ณผ ์ง„์ˆ˜ ๋ณ€์ˆ˜ ํ•จ์ˆ˜ 1) ์ง‘ํ•ฉํ•จ์ˆ˜ - isequal : ํ–‰๋ ฌ์˜ ์ฐจ์›๊ณผ ์›์†Œ๊ฐ€ ๋ชจ๋‘ ๊ฐ™์œผ๋ฉด โ€˜1โ€™์„ ์ถœ๋ ฅ, ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด โ€˜0โ€™์„ ์ถœ๋ ฅ ใ€‹a=rand(2,5); ใ€‹b=rand(2,5); ใ€‹isequal(a,b) ans = 0 ใ€‹isequal(a,a) ans = 1 ใ€‹a=[2:2:8,4:2:10] a=2 4 6 8 4 6 8 10 - unique : ์ค‘๋ณต๋˜๋Š” ์›์†Œ๋ฅผ ์ œ์™ธํ•œ, ์œ ์ผํ•˜๊ฒŒ ์กด์žฌํ•˜๋Š” ์›์†Œ๋“ค์„ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ถœ๋ ฅ ใ€‹unique(a) ans = 2
  • 26. - 26 - 4 6 8 10 - ismember(x,y) : x์˜ ์›์†Œ๊ฐ€ ์ง‘ํ•ฉ y์— ํฌํ•จ๋˜๋ฉด โ€˜1โ€™, ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด โ€˜0โ€™์„ ์ถœ๋ ฅ ใ€‹a=1:9; ใ€‹b=2:2:9; ใ€‹ismember(a,b) ans = 0 1 0 1 0 1 0 1 0 ใ€‹ismember(b,a) ans = 1 1 1 1 ใ€‹A=eye(3); ใ€‹B=ones(3); ใ€‹ismember(A,B); ? ใ€‹ismember(B,A); ? - union(ํ•ฉ์ง‘ํ•ฉ) ใ€‹a=1:9; ใ€‹b=[2 4 6 8 10] ใ€‹union(a,b) ans = [ 1 2 3 4 5 6 7 8 9 10] - intersect(a,b) ใ€‹intersect(a,b) ans = [2 4 6 8] - setdiff(x,y) : x์›์†Œ ์ค‘์—์„œ y์— ํฌํ•จ๋˜์ง€ ์•Š๋Š” ์›์†Œ ใ€‹setdiff(a,b) ans = 1 3 5 7 9 ใ€‹setdiff(b,a) ans = 10 2) ์ง„์ˆ˜๋ณ€ํ™˜ - dec2bin(x) : 10์ง„์ˆ˜ x๋ฅผ 2์ง„์ˆ˜๋กœ ๋ณ€ํ™˜, bin2dec(y) : 2์ง„์ˆ˜ y๋ฅผ 10์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ ใ€‹a=dec2bin(17) a = 10001 ใ€‹class(a) ans = char ใ€‹bin2dec(a) ans = 17 ใ€‹class(ans)
  • 27. - 27 - ans = double - dec2hex(x) : 2์ง„์ˆ˜๋ฅผ 16์ง„์ˆ˜๋กœ ๋ณ€ํ™˜, hex2dec(y) : 16์ง„์ˆ˜๋ฅผ 2์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ ใ€‹a=dec2hex(2047) a = 7FF ใ€‹class(a) ans = char ใ€‹hex2dec(a) ans = 2047 ใ€‹class(ans) ans = double - dec2base(x,y) : ์‹ญ์ง„์ˆ˜ x๋ฅผ y์ง„์ˆ˜์œผ๋กœ ๋ณ€ํ™˜, base2dec(x,y) : y์ง„์ˆ˜ x๋ฅผ 10์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ ใ€‹a=dec2base(26,3) a = 222 ใ€‹class(a) ans = char ใ€‹base2dec(a,3) ans = 26 ใ€‹class(ans) ans = double 15. ๋ฌธ์ž์—ด(character strings) ใ€‹t='How about this character string?' t = How about this character string? ใ€‹size(t) ans = 1 32 ใ€‹whos Name Size Bytes Class ans 1x2 16 double array t 1x32 64 char array Grand total is 34 elements using 80 bytes ใ€‹u=double(t) u = Columns 1 through 12 72 111 119 32 97 98 111 117 116 32 116 104 Columns 13 through 24 105 115 32 99 104 97 114 97 99 116 101 114 Columns 25 through 32 32 115 116 114 105 110 103 63 ใ€‹char(u)
  • 28. - 28 - ans = How about this character string? ใ€‹a=double('a') a = 97 ใ€‹char(a) ans = a ใ€‹u=t(16:24) u = character ใ€‹u=t(24:-1:16) u = retcarahc - int2str : ์ •์ˆ˜๊ฐ’์„ string์œผ๋กœ ๋ณ€ํ™˜ ใ€‹int2str(eye(3)) ans = 1 0 0 0 1 0 0 0 1 ใ€‹size(ans) ans = 3 7 ใ€‹num2str(rand(2,4)); ใ€‹size(ans) ans = 2 43 ใ€‹b='Peter' ใ€‹findstr(b,'t') ans = 3 ใ€‹findstr(b,'e') ans = 2 4 16. Data Analysis temps.dat 12 8 18 15 9 22 12 5 19 14 8 23 12 6 22 11 9 19 15 9 15 8 10 20 19 7 18 12 7 18 14 10 19 11 8 17 9 7 23 8 8 19 15 8 18 8 9 20
  • 29. - 29 - 10 7 17 12 7 22 9 8 19 12 8 21 12 8 20 10 9 17 13 12 18 9 10 20 10 6 22 14 7 21 12 5 22 13 7 18 15 10 23 13 11 24 12 12 22 ใ€‹load temps.dat ใ€‹day=1:31; ใ€‹plot(day,temps); ใ€‹xlabel('๋‚ ์งœโ€˜), ylabel('์˜จ๋„โ€™), ใ€‹title('์˜จ๋„๋ณ€ํ™”โ€˜); ใ€‹avg_temp=mean(temps); %๊ฐ ๋„์‹œ์˜ ์˜จ๋„ ํ‰๊ท ์„ ๊ตฌํ•œ๋‹ค. avg_temp = 11.9677 8.2258 19.8710 ใ€‹avg_avg=mean(avg_temp) %์ „์ฒด ์˜จ๋„ ํ‰๊ท ์„ ๊ตฌํ•œ๋‹ค. avg_avg = 13.3548 โ‘  ใ€‹for c=1:3 %์˜จ๋„์ฐจ๋ฅผ ๊ตฌํ•œ๋‹ค. tdev(:,c)=temps(:,c)-avg_temp(c); end
  • 30. - 30 - โ‘ก ใ€‹tdev=temps-avg_temp(ones(31,1),:) โ‘ข ใ€‹tdev=temps-repmat(avg_temp,31,1) ใ€‹max_temp=max(temps) %๊ฐ ๋„์‹œ์˜ ์ตœ๋Œ€ ์˜จ๋„๋ฅผ ๊ตฌํ•œ๋‹ค. ใ€‹[max_temp, maxday]=max(temps) max_temp = 19 12 24 maxday = 9 23 30 ใ€‹min_temp=min(temps) %๊ฐ ๋„์‹œ์˜ ์ตœ์†Œ ์˜จ๋„๋ฅผ ๊ตฌํ•œ๋‹ค. ใ€‹[min_temp,minday]=min(temps) min_temp = 8 5 15 minday = 8 3 7 ใ€‹s_dev=std(temps) %๊ฐ ๋„์‹œ์˜ ํ‘œ์ค€ํŽธ์ฐจ๋ฅผ ๊ตฌํ•œ๋‹ค. s_dev = 2.5098 1.7646 2.2322 ใ€‹median(temps) %์ค‘๊ฐ„๊ฐ’์„ ํ‘œ์‹œํ•œ๋‹ค. ans = 12 8 20 ใ€‹dail_change=diff(temps) %๋งค์ผ๋งค์ผ์˜ ์˜จ๋„์ฐจ๋ฅผ ๊ตฌํ•œ๋‹ค. 17. ๋‹คํ•ญ์‹์˜ ๊ณ„์‚ฐ 1) ๊ทผ(roots) - x 4 -12x 3 +25x+116์˜ ๊ทผ์„ ๊ตฌํ•˜๊ณ ์ž ํ•œ๋‹ค. ใ€‹p=[1 -12 0 25 116]; ใ€‹r=roots(p) r = 11.7473 2.7028 -1.2251 + 1.4672i -1.2251 - 1.4672i ใ€‹pp=poly(r) pp = 1.0000 -12.0000 -0.0000 25.0000 116.0000 2) ๋‹คํ•ญ์‹์˜ ๊ณฑ - a(x)=x3 +2x2 +3x+4, b(x)= x3 +4x2 +9x+16
  • 31. - 31 - ใ€‹a=[1 2 3 4], b=[1 4 9 16] ใ€‹c=conv(a,b) c = 1 6 20 50 75 84 64 ๋”ฐ๋ผ์„œ ๋‘ ๋‹คํ•ญ์‹์˜ ๊ณฑ์€ c(x)= x 6 +5x 5 +20x 4 +50x 3 +75x 2 +84x+64๊ฐ€ ๋œ๋‹ค. 3) ๋‹คํ•ญ์‹์˜ ํ•ฉ - a(x)=x3 +2x2 +3x+4, b(x)= x3 +4x2 +9x+16 ใ€‹a=[1 2 3 4], b=[1 4 9 16] ใ€‹d=a+b d = 2 6 12 20 ๋”ฐ๋ผ์„œ ๋‘ ๋‹คํ•ญ์‹์˜ ํ•ฉ์€ d(x)= 2x3 +6x2 +12x+20์ด ๋œ๋‹ค. - ์ฐจ์ˆ˜๊ฐ€ ๋‹ค๋ฅธ ๋‹คํ•ญ์‹์˜ ํ•ฉ ใ€‹e=c+[0 0 0 d] e = 1 6 20 52 81 96 84 e(x)= x6 +5x5 +20x4 +52x3 +81x2 +96x+84๊ฐ€ ๋œ๋‹ค. 4) ๋‹คํ•ญ์‹์˜ ๋‚˜๋ˆ—์…ˆ ใ€‹[q,r]=deconv(c,b) q = โ† quotient polynomial 1 2 3 4 r = โ† remainder 0 0 0 0 0 0 0 5) ๋‹คํ•ญ์‹์˜ ๋ฏธ๋ถ„ - g(x)= x 6 +6x 5 +20x 4 +48x 3 +69x 2 +72x+44๋ผ๊ณ  ํ•˜๋ฉด g'(x)= 6x5 +30x4 +80x3 +144x2 +138x+72๊ฐ€ ๋œ๋‹ค. ใ€‹g=[1 6 20 48 69 72 44]; ใ€‹h=polyder(g) h = 6 30 80 144 138 72 6) evaluation ใ€‹x=linspace(-1,3); ใ€‹p=[1 4 -7 -10] p(x)=x 3 +4x 2 -7x-10 ใ€‹v=polyval(p,x);
  • 32. - 32 - ใ€‹plot(x,v),title('x{^3} + 4x{^2} - 7x -10'), xlabel('x') 7) Rational Polynomials n(x) d(x) = N1x m +N2x m - 1 +...+Nm + 1 D1xn +D2xn - 1 +...+Dn + 1 ใ€‹n=[1 -10 100]; % ๋ถ„์ž ใ€‹d=[1 10 100 0]; % ๋ถ„๋ชจ ใ€‹z=roots(n); % Zero of n(x)/d(x) z = 5.0000 + 8.6603i 5.0000 - 8.6603i ใ€‹p=roots(d); % Pole of n(x)/d(x) p = 0 -5.0000 + 8.6603i -5.0000 - 8.6603i ใ€‹[nd,dd]=polyder(n,d) nd = -1 20 -100 -2000 -10000 dd = 1 20 300 2000 10000 0 0 - [R,P,K] = residue(B,A) B(s) A(s) = R(1) s-P(1) + R(2) s-P(2) +....+K(s) ใ€‹[r,p,k]=residue(n,d) r = 0.0000 + 1.1547i 0.0000 - 1.1547i
  • 33. - 33 - 1.0000 p = -5.0000 + 8.6603i -5.0000 - 8.6603i 0 k = [] โˆด n(x) d(x) = 1.1547i x+5-8.6603i + -1.1547i x+5+8.8803i + 1 x ใ€‹[nn,dd]=residue(r,p,k) nn = 1.0000 -10.0000 100.0000 dd = 1.0000 10.0000 100.0000 0 18. ํ“จ๋ฆฌ์— ๋ณ€ํ™˜(fft) ์ฃผ์–ด์ง„ x(t)๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์„ ๋•Œ x(t) = 0 ; t < 0.1s = e - ( t - 0.1) 0.176 sin[ 2ฯ€(t-0.1) 0.160 ] ; 0.1 โ‰ค t < 1.024s t=0:0.001:1.023; T=0.001; k=101:1024; z=zeros(1,100) x=[z exp(-(k*T-0.1)/0.176).*sin(2*pi*(k*T-0.1)/0.160)]; subplot(2,1,1) plot(t,x); grid on; xlabel('Time(s)') ylabel('Amplitude'); title('Waveform') X=fft(x) amp_spect=sqrt(X.*conj(X)) freq=(0:60)/(1024*0.001) subplot(2,1,2); plot(freq,amp_spect(1:61),'r*'); grid on xlabel('Frequency (Hz)') ylabel('Amplitude')
  • 34. - 34 - 19. Curve fitting ใ€‹x=[0 .1 .2 .3 .4 .5 .6 .7 .8 .9 1]; ใ€‹y=[-.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2]; ใ€‹n=2; ใ€‹p=polyfit(x,y,n) p = -9.8108 20.1293 -0.0317 โˆด y=-9.8108x2 +20.1293x-0.0317 ใ€‹xi=linspace(0,1,100); ใ€‹yi=polyval(p,xi); ใ€‹plot(x,y,'-o',xi,yi,'--'); ใ€‹title('Second order Curve fitting')
  • 35. - 35 - ใ€‹pp=polyfit(x,y,10) ใ€‹format short e ใ€‹pp.' ans = -4.6436e+005 2.2965e+006 -4.8773e+006 5.8233e+006 -4.2948e+006 2.0211e+006 -6.0322e+005 1.0896e+005 -1.0626e+004 4.3599e+002 -4.4700e-001 ใ€‹y10=polyval(pp,xi); ใ€‹plot(x,y,'o',xi,yi,'--',xi,y10) ใ€‹xlabel('x'),ylabel('y=f(x)') ใ€‹title('2nd and 10th order curve fitting')
  • 36. - 36 - 19. ์ตœ์†Œ์ž์Šน๋ฒ•(Least Square Method) ํšŒ๊ท€๋ถ„์„(regression analysis)์„ ์œ„ํ•œ matlab ํ•จ์ˆ˜์ค‘์—๋Š” polyfit ๋ช…๋ น์–ด๊ฐ€ ์žˆ๋Š”๋ฐ, polyfit ๋Š” ์ตœ์†Œ์ž์Šน๋ฒ•์— ๊ทผ๊ฑฐ๋ฅผ ํ•˜๊ณ  ์žˆ๋‹ค. ์•„๋ž˜์˜ ๋ฐ์ดํ„ฐ์— ๊ฐ€์žฅ ๊ทผ์ ‘ํ•œ ์ง์„ ์€ y=mx+b์˜ ํ˜•ํƒœ๊ฐ€ ๋œ๋‹ค. x y 0 5 10 2 6 11 ์ตœ์†Œ์ž์Šน์˜ ์ด๋ก ์— ๋”ฐ๋ฅด๋ฉด, ๋ณด๊ฐ„๋œ ์ง์„ ๊ณผ ๋ฐ์ดํ„ฐ ์ ๋“ค ์‚ฌ์ด์—์„œ ์ˆ˜์ง์˜ ์ฐจ์ด๊ฐ’์„ ์ œ๊ณฑํ•˜ ์—ฌ ํ•ฉํ•œ J๊ฐ’์ด ์ตœ์†Œํ™”๋˜๋Š” ๊ฐ€์žฅ ๊ทผ์ ‘ํ•œ ์ง์„ ์„ ๊ธ‹๋Š”๋‹ค. ์ด๋“ค ์ฐจ์ด๊ฐ’๋“ค์€ ๋‚˜๋จธ์ง€์˜ค์ฐจ (residues)๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ์œ„์˜ ๋ฐ์ดํ„ฐ์—์„œ๋Š” 3๊ฐœ์˜ ๋ฐ์ดํ„ฐ ์ ์ด ์กด์žฌํ•˜๋ฉฐ, ์—ฌ๊ธฐ์„œ J๊ฐ’์€ ๋‹ค์Œ ์˜ ์‹์— ์˜ํ•ด ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค. J= โˆ‘ 3 i= 1 (mxi +b-yi)2 ํ‘œ์—์„œ ์ฃผ์–ด์ง„ ์ž๋ฃŒ๊ฐ’(xi, yi)์„ ๋Œ€์ž…ํ•˜์—ฌ ๋‹ค์Œ์˜ ์‹์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค. J = (0*m+b-2)2 +(5*m+b-6)2 +(10*m+b-11)2 ์—ฌ๊ธฐ์„œ, J๊ฐ€ ์ตœ์†Œ๊ฐ’์„ ๊ฐ–๋Š” m, b์˜ ๊ฐ’์€ โˆ‚J/โˆ‚m= 0,โˆ‚J/โˆ‚b= 0์˜ ์กฐ๊ฑด์œผ๋กœ๋ถ€ํ„ฐ ๊ณ„์‚ฐํ•œ๋‹ค. ์ด ์กฐ๊ฑด๋“ค์— ์˜ํ•ด์„œ ์•„๋ž˜์˜ ๋‘ ์‹์œผ๋กœ๋ถ€ํ„ฐ ๋ฏธ์ง€์ˆ˜ m, b๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค. 250m+30b=280, 30m+6b=38 ๊ทธ ๊ฒฐ๊ณผ๋Š” m=0.9, b=11/6์ด๋‹ค. ๋”ฐ๋ผ์„œ, ์ตœ์†Œ์ž์Šน๋ฒ•์— ์˜ํ•œ ์ตœ์ ์˜ ์ง์„ ์„ y=0.9x+11/6์ด ๋œ๋‹ค. ์ด ๋ฐฉ์ •์‹์— x ๋ฐ์ดํ„ฐ 0, 5, 10์„ ์ž…๋ ฅํ•˜๋ฉด y์˜ ๊ฐ’์€ ๊ฐ๊ฐ 1.833, 6.333 10.8333์ด ๋œ ๋‹ค. ๋”ฐ๋ผ์„œ ํ‘œ์˜ y์˜ ๊ฐ’(y=2, 6, 11)๊ณผ๋Š” ์ฐจ์ด๊ฐ€ ์žˆ๋Š”๋ฐ ์ด๊ฒƒ์€ ์ง์„ ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์™„์ „ํ•˜๊ฒŒ ๊ทผ์‚ฌํ™”(fix)๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. J์˜ ๊ฐ’์„ ๊ตฌํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค. J= (1.833-2)2 +(6.333-6)2 +(10.8333-11)2 = 0.16656689 ๋‹ค์Œ์€ ์ฃผ์–ด์ง„ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ 1์ฐจ์—์„œ 4์ฐจ๊นŒ์ง€์˜ ๋‹คํ•ญ์‹์„ ๊ตฌํ•˜๋ฉฐ, ๊ฐ ๋‹คํ•ญ์‹์˜ J๊ฐ’์„ ๊ณ„ ์‚ฐํ•œ๋‹ค. x 1 2 3 4 5 6 7 8 9 y 5 6 10 20 28 33 34 36 42 <curvefit_test.m> close all, clear all x=[1:9]; y=[5,6,10,20,28,33,34,36,42]; xp=[1:0.01:9]; for k=1:4 yp(k,:)=polyval(polyfit(x,y,k),xp); J(k)=sum((polyval(polyfit(x,y,k),x)-y).^2);
  • 37. - 37 - end subplot(2,2,1) plot(xp,yp(1,:),x,y,'o'),axis([0 10 0 50]) xlabel('x'),ylabel('y'),title('First Degree') subplot(2,2,2) plot(xp,yp(2,:),x,y,'o'),axis([0 10 0 50]) xlabel('x'),ylabel('y'),title('Second Degree') subplot(2,2,3) plot(xp,yp(3,:),x,y,'o'),axis([0 10 0 50]) xlabel('x'),ylabel('y'),title('Third Degree') subplot(2,2,4) plot(xp,yp(4,:),x,y,'o'),axis([0 10 0 50]) xlabel('x'),ylabel('y'),title('Fourth Degree') disp(J) ใ€‹curvefit_test J = 71.5389 56.6727 41.8838 4.6566 ex) ๋‹ค์Œ ์ฃผ์–ด์ง„ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•˜์—ฌ 1์ฐจโˆผ4์ฐจ ๋‹คํ•ญ์‹์„ ๊ตฌํ•˜์—ฌ ๋„์‹œํ•˜๊ณ  ๊ทธ๋•Œ์˜ ๊ณ„์ˆ˜๊ฐ’๊ณผ J๊ฐ’์„ ํ™•์ธํ•˜์‹œ์˜ค. x 0 1 2 3 4 5 y 0 1 60 40 41 47
  • 38. - 38 - 20. ๋ณด๊ฐ„๋ฒ•(interpolation) ์ง€์ •ํ•œ ๋ณต์ˆ˜์˜ ์ ์„ ์ง€๋‚˜๋Š” ๊ณก์„ ๊ณผ, ์ด๋“ค์˜ ์  ๊ฐ€๊นŒ์ด๋ฅผ ์ง€๋‚˜๋Š” ๋งค๋„๋Ÿฌ์šด ๊ณก์„ ์„ ๊ตฌํ•˜๋Š” ๊ฒƒ์„ ๋ณด๊ฐ„์ด๋ผ ํ•œ๋‹ค. 1) 1์ฐจ์› ๋ฐ์ดํ„ฐ์˜ ๋ณด๊ฐ„ 1์ฐจ์› ๋ฐ์ดํ„ฐ์˜ ๋ณด๊ฐ„์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์œผ๋กœ์จ ํ•จ์ˆ˜ โ€˜interp1'๋ช…๋ น์ด ์žˆ๋‹ค. ์ด ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉ ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์„ธ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. linear : ์„ ํ˜• ๋ณด๊ฐ„๋ฒ• cubic : 3์ฐจ ๊ณก์„  ๋ณด๊ฐ„๋ฒ• spline : 3์ฐจ ๊ณก์„  ์Šคํ”Œ๋ผ์ธ ๋ณด๊ฐ„๋ฒ• - yi=interp1(x,y,xi) : ๋ฒกํ„ฐ x์™€ ๋ฒกํ„ฐ y์—์„œ ๋ณด๊ฐ„๋ฒ•์— ์˜ํ•ด์„œ ๊ฒฐ์ •๋œ ๊ฒƒ์œผ๋กœ์„œ ๋ฒกํ„ฐ xi์— ํ•ด๋‹น๋˜๋Š” ๋ฒกํ„ฐ yi๋ฅผ ๋˜๋Œ๋ฆฐ๋‹ค. ใ€‹x=0:0.1:1; ใ€‹y=[4 3 2 1 2 3 2 1 2 3 4]; ใ€‹xi=0:0.01:1; ใ€‹yi=interp1(x,y,xi); ใ€‹plot(x,y,'o',xi,yi) ใ€‹title('Graph output using interp1(x,y,xi) function') - yi=interp1(x,y,xi,'method') ใ€‹x=0:0.1:1; ใ€‹y=[4 3 2 1 2 3 2 1 2 3 4]; ใ€‹xi=0:0.01:1.5; ใ€‹yi=interp1(x,y,xi,'spline'); ใ€‹plot(x,y,'o',xi,yi)
  • 39. - 39 - 2) 2์ฐจ์› ๋ฐ์ดํ„ฐ์˜ ๋ณด๊ฐ„ 2์ฐจ์› ๋ฐ์ดํ„ฐ์˜ ๋ณด๊ฐ„์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์œผ๋กœ์จ ํ•จ์ˆ˜ โ€˜interp2'๋ช…๋ น์ด ์žˆ๋‹ค. ์ด ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉ ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‘๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. linear : ์„ ํ˜•๋ณด๊ฐ„๋ฒ• cubic : 3์ฐจ์› ๊ณก์„  ๋ณด๊ฐ„๋ฒ• - zi=interp2(x,y,z,xi,yi) zi=interp2(x,y,z,xi,yi,'method') ใ€‹[x,y]=meshgrid(-5:0.5:5); ใ€‹z=peaks(x,y); ใ€‹[xi,yi]=meshgrid(-5:0.1:5); ใ€‹zi=interp2(x,y,z,xi,yi); ใ€‹mesh(x,y,z) ใ€‹hold on ใ€‹mesh(xi,yi,zi+20) ใ€‹hold off ใ€‹title('Graph output using interp2 fundtion')
  • 40. - 40 - 3) 3์ฐจ ์Šคํ”Œ๋ผ์ธ ๋ณด๊ฐ„ 3์ฐจ ๊ณก์„  ์Šคํ”Œ๋ผ์ธ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๊ฐ„ํ•œ๋‹ค. - yi=spline(x,y,xi) - ์–ด๋–ค ์ง€์—ญ์˜ ์‹œ๊ฐ„(t)์— ๋”ฐ๋ฅธ ์˜จ๋„(y)๋ฅผ ๋‚˜ํƒ€๋‚ธ ํ‘œ์ด๋‹ค. x 7 9 11 12 y 49 57 71 75 <spline1.m> x=[7 9 11 12]; y=[49 57 71 75]; x_int=[7:0.01:12]; y_int=spline(x,y,x_int); plot(x,y,'o',x,y,'--',x_int,y_int); xlabel('Time(hrs)'), ylabel('Temperature(F)') axis([7 12 45 80]) ์˜ค์ „ 8์‹œ์˜ ์˜จ๋„๋ฅผ ์Šคํ”Œ๋ผ์ธ ๋‹คํ•ญ์‹์— ์˜ํ•ด์„œ ์ถ”์ •ํ•˜๋ฉด 51.2ยฐF์ด๋‹ค.(์„ ํ˜•๋ณด๊ฐ„:53ยฐF) <spline2.m> x=0:6; y=[1 0.5403 -0.4161 -0.99 -0.6536 0.2837 0.9602]; xi=0:0.2:6; yi=spline(x,y,xi); plot(x,y,'g') hold on disp('****** ํ‚ค๋ณด๋“œ๋ฅผ ์ž…๋ ฅํ•˜์‹œ์˜ค ********') pause plot(x,y,'ro')
  • 41. - 41 - disp('****** ํ‚ค๋ณด๋“œ๋ฅผ ์ž…๋ ฅํ•˜์‹œ์˜ค ********') pause plot(xi,yi,'r') hold off title('Graph output using spline function')
  • 42. - 42 - ์ œ 3 ์žฅ ํŒŒ์ผ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ Matlab ๋ช…๋ น๋“ค ์ค‘์—์„œ โ€˜save'์™€ โ€˜load'๋ช…๋ น์€ Matlab ์ž‘์—… ๊ณต๊ฐ„์ƒ์˜ ๋‚ด์šฉ์„ ๊ฐ๊ฐ ํŒŒ์ผ๋กœ ์ €์žฅํ•˜๊ณ  ์ €์žฅ๋œ ํŒŒ์ผ์„ ์ž‘์—…๊ณต๊ฐ„์œผ๋กœ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. matlab์€ ์ด ์™ธ์— ํŒŒ์ผ์„ ๊ด€๋ฆฌํ•˜๊ณ  ์™ธ๋ถ€ ํ”„๋กœ๊ทธ๋žจ์„ ์ˆ˜ํ–‰ํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ž๋ฃŒ์˜ ์ž…์ถœ๋ ฅ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. 1. ๊ธฐ๋ณธ์ ์ธ ํŒŒ์ผ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ Matlab ํ”„๋กœ๊ทธ๋žจ์„ ํ™œ์„ฑํ™”์‹œํ‚จ ํ›„์— ์‚ฌ์šฉ์ž๊ฐ€ ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•˜์—ฌ ์ž‘์—…ํ•˜๋Š” ๋ชจ๋“  ๊ณผ์ •์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰, ํ‚ค๋ณด๋“œ์˜ ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ „๋ถ€ ์ €์žฅํ•˜๊ณ ์ž ํ•œ๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด โ€˜diary'๋ช…๋ น์„ ์ด์šฉํ•˜๋ฉด ๋œ๋‹ค. ใ€‹diary file_name ์œ„์™€ ๊ฐ™์ด ํ•˜๋ฉด ์ดํ›„๋ถ€ํ„ฐ์˜ ๋ชจ๋“  ํ‚ค๋ณด๋“œ์˜ ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ์ด ์ „๋ถ€ file_name์— ์ €์žฅ๋œ๋‹ค. ๋˜ํ•œ ๋” ์ด์ƒ์˜ ์ €์žฅ์„ ์›ํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ์—๋Š” โ€˜diary off'๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋œ๋‹ค. ใ€‹diary off ๋˜ํ•œ, 'dir', 'type', 'delete' ๋ฐ โ€˜cd'์™€ ๊ฐ™์€ ๋ช…๋ น๋“ค์€ ์ผ๋ฐ˜์ ์ธ ์šด์˜ ์ฒด์ œ ๋ช…๋ น๋“ค์„ ๊ตฌํ˜„ ํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ๋ช…๋ น๋“ค์€ ๋Œ€๋ถ€๋ถ„ ๊ฒฝ๋กœ๋ช…, ์™€์ผ๋“œ ์นด๋“œ(wildcard; ๋Œ€ํ‘œ๋ฌธ์ž) ๋ฐ ๋“œ๋ผ์ด๋ธŒ ์ง€์ •์ž (drive designator)๋ฅผ ์ผ๋ฐ˜์ ์ธ ๋ฐฉ์‹์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. Matlab Ms-Dos Unix Vax/Vms dir(๋˜๋Š” ls) type delete cd dir type del chdir(๋˜๋Š” cd) ls cat rm cd dir type delete set default matlab์—์„œ๋Š” โ€˜!โ€™๋ฌธ์ž๋ฅผ ์ด์šฉํ•ด์„œ ์™ธ๋ถ€ ํ”„๋กœ๊ทธ๋žจ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋Š๋‚Œํ‘œ(!)๋Š” โ€˜์‰˜ ์ดํƒˆ (shell escape)'์„ ์˜๋ฏธํ•˜๋ฉฐ, ๋Š๋‚Œํ‘œ ์ดํ›„์— ์ž…๋ ฅ๋˜๋Š” ๋ฌธ์ž๋“ค์€ ์šด์˜์ฒด์ œ์— ๋Œ€ํ•œ ๋ช…๋ น์œผ๋กœ ์ธ ์‹๋œ๋‹ค. ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์€ Matlab์„ ์ค‘์ง€ํ•˜์ง€ ์•Š๊ณ  ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ฑฐ๋‚˜ ๊ธฐํƒ€์˜ ๋‹ค๋ฅธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š”๋ฐ ๋Œ€๋‹จํžˆ ์œ ์šฉํ•˜๋‹ค. ใ€‹!copy c:*.bat d: ใ€‹!dir ใ€‹!help 2. ๋‚ด๋ถ€ ํŒŒ์ผ์˜ ์ž…ใ†์ถœ๋ ฅ Matlab ํ”„๋กœ๊ทธ๋žจ์˜ ๊ณ„์‚ฐ ๊ฒฐ๊ณผ๋ฅผ matlab์˜ ๋‚ด๋ถ€ file๋กœ ์ถœ๋ ฅํ•˜๊ฑฐ๋‚˜, ์ด๋ฏธ file์— ๋“ค์–ด์žˆ๋Š”
  • 43. - 43 - ๊ฒฐ๊ณผ๋ฅผ ์ž…๋ ฅํ•˜๊ธฐ ์œ„ํ•œ ๋ช…๋ น์–ด๊ฐ€ ์žˆ๋‹ค. ์ฆ‰ โ€˜save'๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ˜„์žฌ ๋ฉ”๋ชจ๋ฆฌ ์ƒ์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค. ใ€‹x=[1 3 5 7 9]; ใ€‹y=1:0.1:2; ใ€‹save % matlab.mat๋กœ ์ €์žฅ ใ€‹save samp1e1 % sample1.mat๋กœ ์ €์žฅ ใ€‹save sample2.dat x % sample2.dat์— ๋ณ€์ˆ˜ x๊ฐ’์„ ์ €์žฅ ใ€‹save sample3.dat y -ascii % sample3.dat์— ๋ณ€์ˆ˜ y๊ฐ’์„ ascii๊ฐ’์œผ๋กœ ์ €์žฅ ใ€‹save sample4.dat y -ascii -double % sample4.dat์— ๋ณ€์ˆ˜ y๊ฐ’์„ double ascii๋กœ ์ €์žฅ ใ€‹load file_name % file_name์„ ์ž‘์—…๊ณต๊ฐ„์ƒ์œผ๋กœ ๋ถˆ๋Ÿฌ์˜ด โ€˜save.m'ํ•จ์ˆ˜์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์˜ต์…˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒƒ๋“ค์ด ์žˆ๋‹ค. options option์— ๋”ฐ๋ผ ์ €์žฅ๋˜๋Š” ํ˜•์‹ -ascii -ascii -double -ascii -tabs -ascii -double -tabs 8-digit Ascii format์œผ๋กœ ์ €์žฅํ•œ๋‹ค. 16-digit Ascii format์œผ๋กœ ์ €์žฅํ•œ๋‹ค. tab์— ์˜ํ•ด์„œ ๋ถ„๋ฆฌ๋œ ๋ฐ์ดํ„ฐ๋ฅผ 8-digit Ascii ํ˜•์‹์œผ๋กœ ์ €์žฅํ•œ๋‹ค. tab์— ์˜ํ•ด์„œ ๋ถ„๋ฆฌ๋œ ๋ฐ์ดํ„ฐ๋ฅผ 16-digit Ascii ํ˜•์‹์œผ๋กœ ์ €์žฅํ•œ๋‹ค. ใ€‹exist('sample1.mat','file') % ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ์— sample1.mat ํŒŒ์ผ์ด ์žˆ๋Š”๊ฐ€๋ฅผ ๊ฒ€์‚ฌ ans = 2 ใ€‹type sample3.dat; ใ€‹whos -file matlab.mat % sample2.dat ํŒŒ์ผ์— ์ €์žฅ๋œ ๋ณ€์ˆ˜์˜ ์ •๋ณด๋ฅผ ์ฝ์–ด์˜จ๋‹ค. Name Size Bytes Class x 1x5 40 double array y 1x11 88 double array Grand total is 16 elements using 128 bytes 3. ์™ธ๋ถ€ ํŒŒ์ผ์˜ ์ž…ใ†์ถœ๋ ฅ Matlab ํ”„๋กœ๊ทธ๋žจ์˜ ์™ธ๋ถ€ file ์ž…์ถœ๋ ฅ์€ ๋‹ค๋ฅธ ํ˜•์‹์œผ๋กœ ์ €์žฅ๋œ ์ž๋ฃŒ๋“ค์„ ์ฝ์–ด ๋“ค์ด๊ฑฐ๋‚˜ Matlab ํ”„๋กœ๊ทธ๋žจ์—์„œ ์ƒ์„ฑ๋œ ์ž๋ฃŒ๋“ค์„ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์š”๊ตฌํ•˜๋Š” ํ˜•์‹์œผ๋กœ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ ๋„๋ก ํ•ด์ค€๋‹ค. 1) ASCII ๋ฐ์ดํ„ฐ ํŒŒ์ผ์˜ ์ž…ใ†์ถœ๋ ฅ - ์™ธ๋ถ€ ํŒŒ์ผ์„ ๋‹ค๋ฃฐ ๋•Œ๋Š” 'fopen'๋ช…๋ น์–ด์— ์˜ํ•ด์„œ File์„ ์—ฐ๋‹ค. ใ€‹fid=fopen('data.dat','r') fid = 3
  • 44. - 44 - r : ์ž๋ฃŒ๋ฅผ ์ฝ์–ด ๋“ค์ด๋Š” ๊ฒƒ์„ ์ง€์ •(read) w : ์ž๋ฃŒ๋ฅผ ์“ฐ๋Š” ๊ฒƒ์„ ์ง€์ •(write) a : ์ž๋ฃŒ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ ์ง€์ •(appending) r+ : ์ž๋ฃŒ๋ฅผ ์ฝ๊ณ  ์“ฐ๋Š” ๊ฒƒ์„ ์ง€์ • file์ด ์—ด๋ฆฌ๋ฉด fid๋Š” 3์ด์ƒ์˜ ๊ฐ’์ด ๋˜๊ณ , ์—ด๋ฆฌ์ง€ ์•Š์œผ๋ฉด fid๋Š” -1์ธ ๊ฐ’์ด ๋œ๋‹ค. ๋‹ค์‹œ ๋‹ค๋ฅธ file์„ ์—ด๋ฉด fid์˜ ๊ฐ’์€ ์ฆ๊ฐ€ํ•˜์—ฌ 4์˜ ๊ฐ’์ด ๋œ๋‹ค. ์ด์™€ ๊ฐ™์ด File์„ ์—ด ๋•Œ๋งˆ๋‹ค fid์˜ ๊ฐ’์€ ์ฆ ๊ฐ€ํ•œ๋‹ค. file์„ ์—ด์–ด์„œ ์ž‘์—…์„ ์™„๋ฃŒํ•œ ํ›„์—๋Š” โ€˜fclose'๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ fid์— ๊ด€๊ณ„ํ•œ ์™ธ๋ถ€ file์„ ๋‹ซ์•„์•ผ ํ•œ๋‹ค. ํŒŒ์ผ์„ ๋‹ซ์•„ ์ฃผ๋Š”๋ฐ ์„ฑ๊ณตํ•˜๋ฉด โ€™0โ€˜์„ ๋Œ๋ ค์ฃผ๊ณ , ์‹คํŒจํ•˜๋ฉด โ€™-1โ€˜์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ใ€‹status=fclose(fid) : ํŒŒ์ผ์ด ํ•˜๋‚˜๋งŒ ์—ด๋ ค ์žˆ์„ ๋•Œ. status = 0 ใ€‹status=fclose(3) : ํŒŒ์ผ์ด ์—ฌ๋Ÿฌ๊ฐœ ์—ด๋ ค ์žˆ์„ ๋•Œ ์›ํ•˜๋Š” fid๊ฐ’์„ ํ• ๋‹น. status = 0 ใ€‹status=fclose('all') : ์—ด๋ ค์žˆ๋Š” ๋ชจ๋“  ํŒŒ์ผ์„ ๋‹ซ์„ ๋•Œ. status = 0 - ์ด์™€ ๊ฐ™์ด ์™ธ๋ถ€ file์„ ์ด์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ๋ถˆ๋Ÿฌ์˜ฌ ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•˜๋Š” ๋ช…๋ น์–ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. fprintf : ASCII ๋ฐ์ดํ„ฐ์˜ ์ €์žฅ์— ์‚ฌ์šฉ fscanf : ASCII ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ๊ฒฝ์šฐ์— ์‚ฌ์šฉ fwrite : Binary ๋ฐ์ดํ„ฐ์˜ ์ €์žฅ์— ์‚ฌ์šฉ fread : Binary ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ๊ฒฝ์šฐ์— ์‚ฌ์šฉ โ‘  Ascii ๋ฐ์ดํ„ฐ file์˜ ์ถœ๋ ฅ - ์•„๋ž˜์™€ ๊ฐ™์ด ์ž…๋ ฅํ•˜๋ฉด ์ง€์ •ํ•œ ๋””๋ ‰ํ† ๋ฆฌ์— data.dat ํŒŒ์ผ์ด ์ƒ์„ฑ๋œ๋‹ค. fid=fopen('d:toolmatlabr11worklecturedata.dat','w') for i=1:10 a(i)=i^2; fprintf(fid,'%10d',a(i)); end fclose(fid); - fid=fopen('file_name','w') file_name : ์‚ฌ์šฉ์ž๊ฐ€ ์ €์žฅํ•˜๊ณ ์ž ํ•˜๋Š” directory์˜ ๋ช…๊ณผ file์ด๋ฆ„์„ ์ ์–ด ์ค€๋‹ค. - fprintf(fid, 'format', ๋ณ€์ˆ˜) fid : ํ˜„์žฌ ์—ด๋ ค์žˆ๋Š” ํŒŒ์ผ์˜ ์‹๋ณ„์ž๋ฅผ ๋˜๋Œ๋ฆฐ๋‹ค. ๋ณ€์ˆ˜ : ์ €์žฅํ•˜๊ณ ์ž ํ•˜๋Š” ๋ณ€์ˆ˜๋ฅผ ์ž…๋ ฅ format : %d - ์‹ญ์ง„์ˆ˜๋ฅผ ์ €์žฅํ•  ๊ฒฝ์šฐ %f - ๋ถ€๋™ ์†Œ์ˆ˜์  ๊ฐ’์„ ์ €์žฅํ•  ๊ฒฝ์šฐ
  • 45. - 45 - %s - ๋ฌธ์ž์—ด์„ ์ €์žฅํ•  ๊ฒฝ์šฐ %e - ์ง€์ˆ˜(exponential)๋ฅผ ์ €์žฅํ•  ๊ฒฝ์šฐ %- - ์ฃผ์–ด์ง„ field์˜ ์™ผ์ชฝ์œผ๋กœ ์ •๋ ฌ %+ - ๋ถ€ํ˜ธ๋ฅผ ํ‘œ์‹œํ•˜๊ฒŒ ํ•จ. %0 - ์ฃผ์–ด์ง„ field์˜ spaces์— 0์„ ์ฑ„์›€ ๋˜ํ•œ format์— ์‚ฌ์šฉ๋˜๋Š” escape ๋ฌธ์ž๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค. escape ๋ฌธ์ž escape ๋ฌธ์ž์— ๋Œ€ํ•œ ์„ค๋ช… n t b r f '' %% New line Horizontal tab Backspace Carriage return Form feed Backslash๋ฅผ ํ‘œ์‹œ ๋‹จ์ผ ์ธ์šฉ ๋ถ€ํ˜ธ๋ฅผ ํ‘œ์‹œ Percent ๋ฌธ์ž๋ฅผ ํ‘œ์‹œ ์˜ˆ) %-12.5e - ์ฃผ์–ด์ง„ ๊ฐ’์„ ์ง€์ˆ˜ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ, ์ •์ˆ˜๋ถ€๋Š” 12์ž ์ด๋‚ด๋กœ ํ•˜๊ณ , ์†Œ์ˆ˜๋ถ€๋Š” ์†Œ์ˆ˜์  ์ดํ•˜ 5์ž๋ฆฌ๊นŒ์ง€ ์ฃผ์–ด์ง„ field์•ˆ์—์„œ ์™ผ์ชฝ์œผ๋กœ ์ •๋ ฌํ•ด์„œ ์ถœ๋ ฅํ•˜๋ผ. โ‘ก Ascii ๋ฐ์ดํ„ฐ file์˜ ์ž…๋ ฅ - ์•ž์—์„œ ์ €์žฅํ•œ data.dat ํŒŒ์ผ์„ ๋ถˆ๋Ÿฌ์˜ค๊ณ ์ž ํ•œ๋‹ค. fid=fopen('d:toolmatlabr11worklecturedata.dat','r') x=fscanf(fid,'%10d'); fclose(fid); ใ€‹x x=1 4 ๏ผš 100 - fscanf(fid, 'format') format : %d - ์‹ญ์ง„์ˆ˜๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ๊ฒฝ์šฐ %f - ๋ถ€๋™์  ์†Œ์ˆ˜๊ฐ’์„ ๋ถˆ๋Ÿฌ์˜ฌ ๊ฒฝ์šฐ %s - ๋ฌธ์ž์—ด์„ ๋ถˆ๋Ÿฌ์˜ฌ ๊ฒฝ์šฐ %e - ์ง€์ˆ˜(exponential)๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ๊ฒฝ์šฐ
  • 46. - 46 - 2) Binary ๋ฐ์ดํ„ฐ ํŒŒ์ผ์˜ ์ž…์ถœ๋ ฅ โ‘  Binary ๋ฐ์ดํ„ฐ file์˜ ์ถœ๋ ฅ - Binary ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๊ฒฝ์šฐ์˜ ์˜ˆ๋กœ์„œ, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž…๋ ฅํ•ด๋ณด์ž fid=fopen('d:toolmatlabr11worklecturebinary.dat','w') for i=1:10 a(i)=i^2; fwrite(fid,a(i),'int'); end fclose(fid); - fwrite(fid, ๋ณ€์ˆ˜, โ€˜์ •๋ฐ€๋„โ€™) char ๋˜๋Š” uchar : 8bit์˜ ๋ถ€ํ˜ธ๊ฐ€ ์žˆ๋Š” ๋ฌธ์ž์™€ ๋ถ€ํ˜ธ๊ฐ€ ์—†๋Š” ๋ฌธ์ž short ๋˜๋Š” ushort : 16bit์˜ ๋ถ€ํ˜ธ๊ฐ€ ์žˆ๋Š” ์ •์ˆ˜์™€ ๋ถ€ํ˜ธ๊ฐ€ ์—†๋Š” ์ •์ˆ˜ int ๋˜๋Š” uint : 16bit ๋˜๋Š” 32bit์˜ ๋ถ€ํ˜ธ๊ฐ€ ์žˆ๋Š” ์ •์ˆ˜์™€ ๋ถ€ํ˜ธ๊ฐ€ ์—†๋Š” ์ •์ˆ˜ long ๋˜๋Š” ulong : 32bit ๋˜๋Š” 64bit์˜ ๋ถ€ํ˜ธ๊ฐ€ ์žˆ๋Š” ์ •์ˆ˜์™€ ๋ถ€ํ˜ธ๊ฐ€ ์—†๋Š” ์ •์ˆ˜ float : 32bit์˜ ๋ถ€๋™ ์†Œ์ˆ˜๊ฐ’ double : 64bit์˜ ๋ฐฐ์ •๋„ ๋ถ€๋™ ์†Œ์ˆ˜๊ฐ’ โ‘ก Binary ๋ฐ์ดํ„ฐ file์˜ ์ž…๋ ฅ - ์œ„์˜ ํ”„๋กœ๊ทธ๋žจ์—์„œ binary ๋ฐ์ดํ„ฐ๋กœ ์ €์žฅ๋˜์–ด ์žˆ๋Š” 'binary.dat'๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ณ ์ž ํ•œ๋‹ค. fid=fopen('d:toolmatlabr11worklecturebinary.dat','r') x=fread(fid,inf,'int'); fclose(fid); - fread(fid, ํฌ๊ธฐ, โ€˜์ •๋ฐ€๋„โ€™) ํฌ๊ธฐ : inf - ๋ฐ์ดํ„ฐ์˜ ๊ฐœ์ˆ˜๋ฅผ ์•Œ ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ์— ์‚ฌ์šฉ 5 - ๋ฐ์ดํ„ฐ ํŒŒ์ผ์—์„œ 5๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋งŒ ๋ถˆ๋Ÿฌ์˜จ๋‹ค. 3) ํŒŒ์ผ ๋‚ด์—์„œ์˜ ์œ„์น˜์ œ์–ด ํ•จ์ˆ˜ โ€˜fseek' ๋ฐ โ€™ftell'์€ ํŒŒ์ผ ๋‚ด์—์„œ ๋‹ค์Œ ๋ฒˆ์— ๋‚˜ํƒ€๋‚  ์ž…๋ ฅ ๋˜๋Š” ์ถœ๋ ฅ์˜ ์œ„์น˜๋ฅผ ์„ค์ •ํ•˜ ๊ณ  ์กฐํšŒ(query)ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค. ํ•จ์ˆ˜ โ€˜ftell'์€ ๋ณ€์œ„(offset)๋ฅผ ์ฃผ๋Š”๋ฐ, ์—ฌ๊ธฐ์„œ ๋ณ€์œ„๋Š” ์ง€์ •๋œ ํŒŒ์ผ์— ๋Œ€ํ•œ ํŒŒ์ผ ์œ„์น˜ ์ง€์‹œ์ž ์˜ ๋ฐ”์ดํŠธ ์ˆ˜๋กœ ์ฃผ์–ด์ง„๋‹ค. ํ•จ์ˆ˜ โ€™fseek'๋Š” ์ž๋ฃŒ๋“ค์„ ๊ฑด๋„ˆ๋›ฐ๊ฑฐ๋‚˜ ํŒŒ์ผ์˜ ์•ž ๋ถ€๋ถ„์œผ๋กœ ๋˜๋Œ์•„ ๊ฐˆ ์ˆ˜ ์žˆ๋„๋ก ํŒŒ์ผ ์œ„์น˜ ์ง€์‹œ์ž๋ฅผ ์žฌ์œ„์น˜ ์‹œํ‚จ๋‹ค(reposition). ใ€‹A=[1 2 3 4 5]; ใ€‹fid=fopen('5.dat','w'); ใ€‹fwrite(fid,A,'short'); ใ€‹fclose(fid); ใ€‹fid=fopen('5.dat','r');
  • 47. - 47 - ใ€‹fseek(fid,6,'bof'); % cof:ํ˜„์žฌ ์œ„์น˜, bof:์‹œ์ž‘ ์œ„์น˜, eof:๋ ์œ„์น˜ ใ€‹fread(fid,1,'short') ans = 4 ใ€‹ftell(fid) ans = 8 ใ€‹fseek(fid,-4,'cof'); ใ€‹fread(fid,1,'short') ans = 3 ใ€‹fclose(fid) 4) ํŒŒ์ผ ์ž…ใ†์ถœ๋ ฅ์—์„œ dialog box ์ด์šฉํ•˜๊ธฐ Matlab์—์„œ๋Š” ํŒŒ์ผ ์ž…ใ†์ถœ๋ ฅ์„ ๋”์šฑ ์™„์„ฑ๋„ ์žˆ๊ฒŒ ๋ณด์ด๊ธฐ ์œ„ํ•ด์„œ โ€˜uiputfile.m','uigetfile.m' ๊ณผ ๊ฐ™์€ ํ•จ์ˆ˜๋ฅผ ์ œ๊ณตํ•œ๋‹ค. - [fname, pname]=uigetfile('file_name','dialogtitle',x,y) : pixel ๋‹จ์œ„๋กœ x,y ์œ„์น˜์— โ€˜dialogtitle'์ด๋ฆ„์˜ ์—ด๊ธฐ window๋ฅผ ๋งŒ๋“ค์–ด ์ค€๋‹ค. ์ž„์˜์˜ ํŒŒ์ผ์„ ์„ ํƒํ•˜๋ฉด, โ€™fname'์—๋Š” ์„ ํƒํ•œ ํŒŒ์ผ์˜ ์ด๋ฆ„์ด ๋ฐ˜ํ™˜๋˜๊ณ , โ€˜pname'์—๋Š” ์„ ํƒํ•œ ํŒŒ์ผ์ด ์œ„์น˜ํ•˜๋Š” ๊ฒฝ๋กœ๊ฐ€ ํ• ๋‹น๋œ๋‹ค. ใ€‹x=0:0.1:1; ใ€‹y=[x ; exp(x)]; ใ€‹fid=fopen('exp.dat','w') fid = 3 ใ€‹count=fprintf(fid, '%6.2f %12.8fn',y) count = 220 ใ€‹fclose('all') ใ€‹[fname, pname]=uigetfile('*.dat','ํŒŒ์ผ์˜ ์„ ํƒ') fname = exp.dat pname = D:ToolMATLABR11worklecture ใ€‹fid=fopen(fname, 'r'); ใ€‹[a, count]=fscanf(fid,โ€˜%f %fn',[2 inf]); ใ€‹fclose('all')
  • 48. - 48 - ์ œ 4 ์žฅ Matlab ํ”„๋กœ๊ทธ๋ž˜๋ฐ 1. ํ๋ฆ„ ์ œ์–ด๋ฌธ Matlab์—๋Š” ๋ช…๋ น์˜ ํ๋ฆ„์„ ์ œ์–ดํ•˜๋Š” 4๊ฐ€์ง€ ๋ฐฉ๋ฒ•, ์ฆ‰, โ€œif๋ฌธ, for๋ฌธ, while๋ฌธ, switch๋ฌธโ€๋“ค์ด ์žˆ๋‹ค. 1) IF ๋ฌธ โ€˜if'๋ฌธ์— ๋Œ€ํ•œ ๋ช…๋ น์€ ์ฃผ๋กœ ์กฐ๊ฑด๋ถ€ ์ˆ˜ํ–‰์„ ํ•˜๊ณ ์ž ํ•  ๊ฒฝ์šฐ์— ์‚ฌ์šฉ๋œ๋‹ค. ์ผ๋ฐ˜์ ์ธ ํ˜•ํƒœ๋Š” ๋‹ค ์Œ๊ณผ ๊ฐ™๋‹ค. if ๋…ผ๋ฆฌ์‹ ๋ช…๋ น์–ด ๋ฌธ์žฅ elseif ๋…ผ๋ฆฌ์‹ ๋ช…๋ น์–ด ๋ฌธ์žฅ else ๋ช…๋ น์–ด ๋ฌธ์žฅ end ๋งŒ์ผ, โ€˜if๋ฌธโ€™์˜ ๋…ผ๋ฆฌ์ ์ธ ์‹์ด โ€˜nonzero(์ฆ‰, true)'์ด๋ฉด, matlab์€ ๋ช…๋ น์–ด ๋ฌธ์žฅ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜, ๋…ผ๋ฆฌ์ ์ธ ์‹์˜ ๊ฐ’์ด โ€™zero(์ฆ‰, false)'์ด๋ฉด ๋ช…๋ น์–ด ๋ฌธ์žฅ์„ skipํ•œ๋‹ค. ์œ„์—์„œ โ€˜elseif'์™€ โ€™else' ๋ช…๋ น์–ด์˜ ์ฐจ์ด์ ์€ ๋…ผ๋ฆฌ์‹์„ ๊ฐ–๋Š”๊ฐ€ ๊ฐ–์ง€ ์•Š๋Š”๊ฐ€ ํ•˜๋Š” ์ ์ด๋‹ค. ๋งŒ์ผ, ๋…ผ๋ฆฌ์ ์ธ ์‹์˜ ๊ฐ’์ด scalar๊ฐ€ ์•„๋‹ˆ๋ผ ๋ฐฐ์—ด(array)๋กœ ์ฃผ์–ด์ง„๋‹ค๋ฉด, ๊ทธ ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์› ์†Œ๊ฐ€ โ€˜nonzero'์ด์–ด์•ผ โ€™์ฐธ(true)'์ด ๋œ๋‹ค. ใ€‹x=200; ใ€‹if x>100 a='Large' elseif x>50 a='Middle' else a='Small' end - ์ •์ˆ˜ n์˜ ๋ถ€ํ˜ธ์™€ ์งโ€งํ™€์ˆ˜ ์—ฌ๋ถ€(parity)์— ๋”ฐ๋ผ์„œ ๊ณ„์‚ฐ ๋ฐฉ๋ฒ•์ด ์„ธ๊ฐ€์ง€๋กœ ๋ถ„๋ฅ˜ ใ€‹if n < 0 (์Œ์ˆ˜ n์— ๋Œ€ํ•œ ์‹คํ–‰๋ฌธ) elseif rem(n,2) == 0 (์ง์ˆ˜์— ๋Œ€ํ•œ ์‹คํ–‰๋ฌธ) else (ํ™€์ˆ˜์— ๋Œ€ํ•œ ์‹คํ–‰๋ฌธ) end
  • 49. - 49 - 2) FOR ๋ฌธ 'for๋ฌธโ€˜์€ ์ผ๋ จ์˜ ์ž‘์—…์„ ์ •ํ•ด์ง„ ํšŸ์ˆ˜๋งŒํผ ๋ฐ˜๋ณตํ•˜์—ฌ ์ˆ˜ํ–‰ํ•œ๋‹ค. for๋ฌธ์— ๋Œ€ํ•œ ์ผ๋ฐ˜์ ์ธ ํ˜•ํƒœ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. for ๋ณ€์ˆ˜ =์ดˆ๊ธฐ์น˜:์ฆ๋ถ„:์ตœ์ข…์น˜ ๋ช…๋ น์–ด ๋ฌธ์žฅ๋“ค end ๊ธฐ๋ณธ์ ์œผ๋กœ ์ฆ๋ถ„๋Ÿ‰์„ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด, ๋งค๋ฒˆ ๋ฐ˜๋ณตํ•  ๋•Œ๋งˆ๋‹ค ์ฆ๋ถ„ํ•˜๋Š” ์–‘์€ โ€˜1โ€™์ด ๋œ๋‹ค. - ๋ฒกํ„ฐ x์— 1๋ถ€ํ„ฐ 10๊นŒ์ง€์˜ ์ˆซ์ž๋ฅผ ์ฑ„์šฐ๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ใ€‹for i=1:10 , x(i)=i ; end ๋˜๋Š” ใ€‹for i=1:10 ; x(i)=i ; end ๋˜๋Š” ใ€‹for i=1:10 x(i) = i end ใ€‹x x = 1 2 3 4 5 6 7 8 9 10 - ํ–‰๋ ฌ์˜ ์ธ์ˆ˜(ํ–‰๊ณผ ์—ด) ๋ชจ๋‘๋ฅผ ๋ณ€ํ™” : ์ค‘์ฒฉ๋œ(nested loop) ์‚ฌ์šฉ ใ€‹for i=1:3 for j=1:4 A(i,j)=i+j; end end ใ€‹A; ใ€‹for i = 1:4 for j=1:5 a(i,j)=1/(i+j); end end ใ€‹a a = 0.5000 0.3333 0.2500 0.2000 0.1667 0.3333 0.2500 0.2000 0.1667 0.1429 0.2500 0.2000 0.1667 0.1429 0.1250 0.2000 0.1667 0.1429 0.1250 0.1111 ใ€‹x='1/(i+j)';
  • 50. - 50 - ใ€‹for i = 1:3 for j = 2:4 a(i,j) = eval(x); end end ใ€‹a a = 0.5000 0.3333 0.2500 0.2000 0.3333 0.2500 0.2000 0.1667 0.2500 0.2000 0.1667 0.1429 ex) 1. x=[1 0 3 0 5 0 7 0 9]๋ฅผ for๋ฌธ์„ ์ด์šฉํ•ด์„œ ๋งŒ๋“œ์‹œ์˜ค. 2. y=[9 0 7 0 5 0 3 0 1]๋ฅผ for๋ฌธ์„ ์ด์šฉํ•ด์„œ ๋งŒ๋“œ์‹œ์˜ค. - vandermonde ํ–‰๋ ฌ :์ž„์˜์˜ ์—ด๋ฒกํ„ฐ์˜ ๊ฐ ์›์†Œ๋“ค์— ๋Œ€ํ•œ n ๊ฑฐ๋“ญ์ œ๊ณฑ์„ ์—ด์˜ ์›์†Œ๋กœ ๊ฐ–๋Š” ํ–‰๋ ฌ ใ€‹x=[-3 0 1 2 5]' v = ๊€Ž ๊€š ๏ธณ๏ธณ๏ธณ๏ธณ๏ธณ๏ธณ๏ธณ๏ธณ๏ธณ๏ธณ๏ธณ๏ธณ๏ธณ ๊€ ๊€› ๏ธณ๏ธณ๏ธณ๏ธณ๏ธณ๏ธณ๏ธณ๏ธณ๏ธณ๏ธณ๏ธณ๏ธณ๏ธณ 81 -27 9 -3 1 0 0 0 0 1 1 1 1 1 1 16 8 4 2 1 625 125 25 5 1 ใ€‹n=length(x) ใ€‹for k=1:n for i=1:n v(i,k)=x(i)^(n-k); end end ๋˜๋Š” ใ€‹n=length(x); ใ€‹v( : , n) = ones(n,1); ใ€‹for i=n-1:-1:1 v(:,i) = x.*v( : , i+1) ; end - break ๋ฌธ for k=0:9 for m=0:9 if m==5 [k m] break end
  • 51. - 51 - end end 3) WHILE ๋ฌธ for๋ฌธ์ผ ๊ฒฝ์šฐ๋Š” ๋ฐ˜๋ณต ํšŸ์ˆ˜๊ฐ€ ์ง€์ •๋œ๋‹ค. ๊ทธ๋ ‡์ง€๋งŒ ๋ฐ˜๋ณต์ฒ˜๋ฆฌ๋ฅผ ํ•  ๊ฒฝ์šฐ, ํšŸ์ˆ˜๋ฅผ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๊ณ  ์ข…๋ฃŒ ์กฐ๊ฑด์ด ์ผ์น˜ํ•  ๋•Œ ๋ฐ˜๋ณต์„ ๋๋‚ด๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ์ฆ‰, ์กฐ๊ฑด์ด ๋งŒ์กฑ๋  ๋•Œ ๊นŒ์ง€ ๊ณ„์†ํ•ด์„œ ๋ฐ˜๋ณตํ•œ๋‹ค. while๋ฌธ์˜ ์ผ๋ฐ˜์ ์ธ ํ˜•ํƒœ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. while ๋…ผ๋ฆฌ์‹ ๋ช…๋ น์–ด ๋ฌธ์žฅ๋“ค end - 2์˜ ๊ฑฐ๋“ญ์ œ๊ณฑ์„ ๊ณ„์‚ฐํ•˜์—ฌ ๊ทธ ๊ฐ’์ด 10์„ ๋„˜๋Š” n์˜ ๊ฐ’์„ ๊ตฌํ•˜๊ณ ์ž ํ•œ๋‹ค. ใ€‹n=0 ใ€‹while 2^n <= 10 n=n+1; end ใ€‹n n = 4 - n!์˜ ๊ฐ’์ด ์ฒ˜์Œ์œผ๋กœ ์‹ญ์ง„์ˆ˜ 10000๋ณด๋‹ค ์ปค์ง€๋Š” n์˜ ๊ฐ’์„ ๊ตฌํ•  ๋•Œ ใ€‹n=1; ใ€‹while prod(1:n) <= 10000 % <= : ๊ด€๊ณ„ ์—ฐ์‚ฐ์ž n=n+1 ; end ใ€‹n n = 8 - ์ž„์˜์˜ ์–‘์˜ ์ •์ˆ˜๋ฅผ ์ทจํ•˜์—ฌ, ๋งŒ์•ฝ ๊ทธ ์ˆ˜๊ฐ€ ์ง์ˆ˜์ด๋ฉด 2๋กœ ๋‚˜๋ˆ„๊ณ  ํ™€์ˆ˜์ด๋ฉด 3์„ ๊ณฑํ•œ ํ›„์— 1์„ ๋”ํ•œ๋‹ค. ์ •์ˆ˜๊ฐ€ 1์ด ๋  ๋•Œ๊นŒ์ง€ ์ด ๊ณผ์ •์„ ๊ณ„์† ๋ฐ˜๋ณต โ†’ ์ด ๊ณ„์‚ฐ ๊ณผ์ •์ด ์ค‘๋‹จ๋˜์ง€ ์•Š ๊ณ  ๊ณ„์†๋˜๋Š” ์ •์ˆ˜๊ฐ€ ์กด์žฌํ•  ๊ฒƒ์ธ๊ฐ€? ใ€‹while 1 n=input('Enter positive integer, n! '); if n <= 0, break, end while n > 1 if rem(n,2) == 0 n=n/2; else n=3*n+1;
  • 52. - 52 - end end 4) SWITCH ๋ฌธ C์–ธ์–ด์—์„œ์˜ switch ๋ฌธ๊ณผ๋Š” ๋‹ฌ๋ฆฌ, matlab์—์„œ์˜ switch๋ฌธ์€ ๋ณ€์ˆ˜ ๋˜๋Š” ์‹์˜ ๊ฐ’๊ณผ ๋งž๋Š” (equal) โ€˜case ๋ฌธโ€™์˜ ๋ช…๋ น์–ด๋งŒ ์ˆ˜ํ–‰ํ•˜๋ฏ€๋กœ C์–ธ์–ด์—์„œ ์ฒ˜๋Ÿผ โ€˜break'๋ช…๋ น์–ด๊ฐ€ ๋”ฐ๋กœ ํ•„์š”์—†๋‹ค. ๋˜ํ•œ, C์–ธ์–ด์—์„œ์˜ โ€™switch ๋ฌธโ€˜์— ์žˆ๋Š” โ€™default' ๋ช…๋ น์–ด๋Š” matlab์—์„œ โ€˜otherwise'์— ํ•ด๋‹นํ•œ ๋‹ค. switch ๋ฌธ์˜ ์ผ๋ฐ˜์ ์ธ ํ˜•ํƒœ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. switch ๋ณ€์ˆ˜ ๋˜๋Š” ์‹ case ๊ฐ’ 1 ๋ช…๋ น์–ด ๋ฌธ์žฅ case ๊ฐ’ 2 ๋ช…๋ น์–ด ๋ฌธ์žฅ . . . ์ž„์˜์˜ ์ˆ˜์˜ case ๋ฌธ๋“ค . . . otherwise ๋ช…๋ น์–ด ๋ฌธ์žฅ end - ๋‹ค์Œ์€ ์ง์ˆ˜์™€ ํ™€์ˆ˜๋ฅผ ํŒ๋ณ„ํ•˜๋Š” ๋ฌธ์žฅ์ด๋‹ค. ใ€‹if x ~= abs(x) error ('์ž…๋ ฅ ๊ฐ’์ด ์‹ค์ˆ˜๊ฐ€ ์•„๋‹ˆ๋‹ค.โ€˜); elseif x ~= fix(x) error('์ •์ˆ˜๊ฐ€ ์•„๋‹ˆ๋‹ค.โ€˜); elseif x < 0 error('์–‘์ˆ˜์—ฌ์•ผ ํ•œ๋‹ค.โ€˜); end y=rem(x,2) switch y case 0 disp(โ€˜์ž…๋ ฅ ๊ฐ’์€ ์ง์ˆ˜!โ€™); otherwise disp(โ€˜์ž…๋ ฅ ๊ฐ’์€ ํ™€์ˆ˜!โ€™); end 2. M-file ์ž‘์„ฑ ์ผ๋ฐ˜์ ์œผ๋กœ matlab์€ ๋ช…๋ น๊ตฌ๋™๋ฐฉ์‹(command-driven mode)์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค. ์ฆ‰, ์‚ฌ์šฉ์ž๊ฐ€
  • 53. - 53 - ํ•œ ์ค„์งœ๋ฆฌ ๋ช…๋ น์„ ์ž…๋ ฅํ•˜๋ฉด matlab์€ ๊ทธ ๋ช…๋ น์„ ์ฆ‰์‹œ ์ฒ˜๋ฆฌํ•˜์—ฌ ๊ฒฐ๊ณผ๋ฅผ ๋ชจ๋‹ˆํ„ฐ ํ™”๋ฉด์— ํ‘œ์‹œ ํ•œ๋‹ค. matlab์—์„œ๋Š” ๋˜ํ•œ ์ผ๋ จ์˜ ๋ช…๋ น๋“ค์„ ํŒŒ์ผ ๋‚ด์— ์ €์žฅํ–ˆ๋‹ค๊ฐ€ ํ•œ๊บผ๋ฒˆ์— ์‹คํ–‰ํ•  ์ˆ˜๋„ ์žˆ ๋‹ค. ์•„์šธ๋Ÿฌ ์ด๋Ÿฌํ•œ ๋‘ ๊ฐ€์ง€ ๋ฐฉ์‹์€ ํ•ด์„๊ธฐ ๋ฐฉ์‹์˜ ํ™˜๊ฒฝ(interpertive environment)์„ ๊ตฌ์„ฑํ•œ ๋‹ค. matlab์˜ ์‹คํ–‰ ๋ฌธ์žฅ๋“ค์„ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š” ํŒŒ์ผ๋“ค์„ m-file์ด๋ผ๊ณ  ๋ถ€๋ฅด๋Š”๋ฐ, ๊ทธ ์ด์œ ๋Š” ํŒŒ์ผ ์ด๋ฆ„์˜ ํ™•์žฅ์ž๊ฐ€ โ€˜m'์ด๊ธฐ ๋•Œ๋ฌธ์ด๋ฉฐ ํ™•์žฅ์ž โ€™m'์€ ๋งคํฌ๋กœ ํŒŒ์ผ(macro file)์„ ์˜๋ฏธํ•˜๊ธฐ๋„ ํ•œ ๋‹ค. m-file์€ ์ผ๋ จ์˜ ์ •์ƒ์ ์ธ matlab ์‹คํ–‰ ๋ฌธ์žฅ๋“ค๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์œผ๋ฉฐ, ์‹คํ–‰ ๋ฌธ์žฅ๋“ค ์ค‘์—๋Š” ๋‹ค๋ฅธ m-file์„ ์ฐธ์กฐํ•˜๋Š” ๋ฌธ์žฅ๋„ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ m-file์€ ์ž์ฒด m-file ๋‚ด์—์„œ ๊ทธ ์ž์‹ ์„ ๋ถ€๋ฅผ ์ˆ˜๋„ ์žˆ๋‹ค(recursive call). matlab์˜ m-file์€ โ€˜์Šคํฌ๋ฆฝํŠธ(script)โ€™์™€ โ€˜ํ•จ์ˆ˜(function)โ€™์˜ ๋‘ ๊ฐ€์ง€ ์œ ํ˜•์œผ๋กœ ๋ถ„๋ฅ˜ํ•  ์ˆ˜ ์žˆ ๋‹ค. ๋จผ์ € โ€˜์Šคํฌ๋ฆฝํŠธ(script)'ํŒŒ์ผ์ด๋ž€ ์ผ๋ จ์˜ ๊ธด ๋ช…๋ น๋“ค์„ ํ•œ๊บผ๋ฒˆ์— ์ž๋™์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•ด ์ฃผ๋Š” ํŒŒ์ผ์„ ๊ฐ€๋ฆฌํ‚ค๋ฉฐ, โ€™ํ•จ์ˆ˜(function)' ํŒŒ์ผ์ด๋ž€ ๋‹ค๋ฅธ ์ „๋ฌธ์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์— ๋ฒ„๊ธˆ๊ฐ€๋„๋ก matlab์˜ ๊ธฐ๋Šฅ์„ฑ์„ ํ™•์žฅ์‹œ์ผœ ์ฃผ๋Š” ํŒŒ์ผ์ด๋‹ค. 1) ์Šคํฌ๋ฆฝํŠธ(Script) ํ™”์ผ - ๋‹จ์ˆœํžˆ ํŒŒ์ผ ๋‚ด์— ๋“ค์–ด ์žˆ๋Š” ๋ช…๋ น๋“ค์„ ์ฐจ๋ก€๋Œ€๋กœ ์‹คํ–‰ - ์Šคํฌ๋ฆฝํŠธ ๋‚ด์˜ ๋ณ€์ˆ˜๋“ค์€ ์ „์—ญ๋ณ€์ˆ˜(global variable)๋กœ ์ทจ๊ธ‰ - ์ •ํ˜„ํŒŒ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ๋กœ ์ž‘์„ฑ %sine ๊ทธ๋ž˜ํ”„ ์ถœ๋ ฅ ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ %M-file Program sin_plot.m t=[0:0.001:0.1] freq=60 y=sin(2*pi*freq*t); plot(t,y),grid xlabel('Time[sec]โ€˜),ylabel('y(t)') - Fibonacci์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” fibon2.m ํŒŒ์ผ ์ž‘์„ฑ % Script file to calculate fibonacci numbers
  • 54. - 54 - i=1 ; f=[1 1]; / ์ƒ‰์ธ๊ณผ ํ•จ์ˆ˜๊ฐ’์˜ ์ดˆ๊ธฐํ™” while f(i)+f(i+1) < 10000 f(i+2) = f(i) + f(i+1); i = i + 1 ; end plot(f) ํ•จ์ˆ˜ โ€˜menuโ€™๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ™”๋ฉด์— ๋ฉ”๋‰ด๋ฅผ ์ถœ๋ ฅํ•˜๊ณ , ๋ฉ”๋‰ด์˜ ์›ํ•˜๋Š” ํ•ญ๋ชฉ์„ ์„ ํƒํ•˜๋Š” ๊ฒƒ ์— ์˜ํ•ด์„œ ํ”„๋กœ๊ทธ๋žจ ์ค‘์— ์ด ๋ฒˆํ˜ธ์— ๋Œ€์‘ํ•œ ์ฒ˜๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค. s=menu('Choose a Color','Red','Blue','Green'); 'if_test.m' close all t=0:0.1:10; while 1 s=menu(' choose a color ','red','blue','green','STOP'); if s==1 plot(t,sin(t),'r') elseif s==2 plot(t,sin(t),'b') elseif s==3 plot(t,sin(t),'g') else
  • 55. - 55 - close all;break end end - dialogํ˜•(type) ํ•จ์ˆ˜๋“ค โ‘  R=questdlg('qstring','title','str1','str2','default') : ์งˆ๋ฌธํ˜• dialog box๋ฅผ ๋งŒ๋“ค๊ณ , ๋‘ ๊ฐœ์˜ โ€˜str1','str2' label๋ฅผ ๊ฐ€์ง„ push ๋ฒ„ํŠผ์„ ๋งŒ๋“ ๋‹ค. 'default' ๋ฒ„ํŠผ์€ default ์ƒํƒœ๋ฅผ ์ง€์ •ํ•˜๊ฒŒ ํ•ด ์ค€๋‹ค. ์„ ํƒ๋œ str์ด ์ถœ๋ ฅ๋ณ€์ˆ˜ R๋กœ ๋ฐ˜ํ™˜๋œ๋‹ค. close all line_color=['r','g','b']; str='Yes'; t=0:0.1:10; while 1 if strcmp(str,'Yes') s=menu(' ์„ ์˜ ์ƒ‰์„ ๊ฒฐ์ • ','red','blue','green'); plot(t,sin(t),line_color(s)); str=questdlg('๊ณ„์†ํ•˜๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๊นŒ?','์„ ํƒ์‚ฌํ•ญ','Yes','No','No'); else close all, break end end โ‘ก msgbox(โ€˜messageโ€™, โ€˜titleโ€™, 'icon') : โ€˜titleโ€™์„ box์ด๋ฆ„์œผ๋กœ ํ•˜๊ณ , โ€˜messageโ€™๋ฅผ ํ‘œ์‹œํ•˜๋Š” box๋ฅผ ๋งŒ๋“ ๋‹ค. โ€˜icon'์€ messgae box์•ˆ์— ํ‘œํ˜„ํ•  icon๋ชจ์–‘์„ ๊ฒฐ์ •ํ•œ๋‹ค.('error', 'help','warn') function PM_cb(x) if x~=abs(x) msgbox('์ž…๋ ฅ๊ฐ’์€ ์–‘์˜ ์‹ค์ˆ˜์ด์–ด์•ผ ํ•œ๋‹ค.','์—๋Ÿฌ','error'); return; elseif x~=fix(x) msgbox('์ •์ˆ˜๊ฐ€ ์•„๋‹ˆ๋‹ค','์—๋Ÿฌ','error'); return; end
  • 56. - 56 - y=rem(x,2); switch y case 0 disp('์ž…๋ ฅ๊ฐ’์€ ์ง์ˆ˜!') otherwise disp('์ž…๋ ฅ๊ฐ’์€ ํ™€์ˆ˜!') end 2) ํ•จ์ˆ˜(Function) ํŒŒ์ผ ์Šคํฌ๋ฆฝํŠธ file ์™ธ์— ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•ด์„œ m-file๋กœ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. matlab ํ”„๋กœ๊ทธ๋žจ์—์„œ ์‚ฌ์šฉ ๋˜๋Š” ๋ช…๋ น์–ด๋“ค์€ ์ฃผ๋กœ ์—ฌ๊ธฐ์„œ ์„ค๋ช…ํ•˜๋Š” ํ•จ์ˆ˜๋กœ์จ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค. ์ด์™€ ๊ฐ™์€ ์„ฑ์งˆ์„ ์ด์šฉํ•˜ ๋ฉด ์‚ฌ์šฉ์ž์˜ ํ•„์š”์— ์˜ํ•ด์„œ ์ž์‹ ๋งŒ์˜ ๊ณ ์œ ์˜ ํ•จ์ˆ˜ file์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ์ผ์ ์ ์ธ ํ•จ์ˆ˜ file ํ˜•ํƒœ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค. function[output1, output2, ... ] = filename(input1, input2, ...) % ์ฃผ์„๋ฌธ(ํ•จ์ˆ˜์˜ ์ผ๋ฐ˜์ ์ธ ์„ค๋ช…) Matlab ๋ช…๋ น์–ด ๋‹ค์Œ์€ ํ‰๊ท ๊ฐ’์„ ๊ณ„์‚ฐ ํ•จ์ˆ˜ โ€˜average.mโ€™์„ ์ž‘์„ฑํ•œ ๊ฒƒ์ด๋‹ค. function y=average(x) % Average Average or Mean value % ์˜ˆ์ œ ํŒŒ์ผ [m,n]=size(x); if m == 1 m =n; end y=sum(x)/m; ใ€‹t=1:100; ใ€‹average(t) ans = 50.5000 โ‘  ํŒŒ์ผ์˜ ์ฒซ ๋ฒˆ์งธ ์ค„์— ํ•จ์ˆ˜์˜ ์ด๋ฆ„, ์ž…๋ ฅ ์ธ์ˆ˜ ๋ฐ ์ถœ๋ ฅ ์ธ์ˆ˜๊ฐ€ ์„ ์–ธ๋˜๋ฉฐ, ์ด ๋ถ€๋ถ„์ด โ€˜ํ•จ์ˆ˜ ํŒŒ์ผโ€™๊ณผ โ€˜์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผโ€™์˜ ๊ฐ€์žฅ ํฐ ์ฐจ์ด์ ์ด๋‹ค.
  • 57. - 57 - โ‘ก โ€˜%โ€™ ๊ธฐํ˜ธ์˜ ๋’ค์— ๋‚˜์˜ค๋Š” ๋ฌธ์žฅ๋“ค์€ ์ฃผ์„(comment)์œผ๋กœ ์ธ์‹๋˜์–ด ๋ฌด์‹œ๋œ๋‹ค. โ‘ข โ€˜%โ€™ ๊ธฐํ˜ธ์™€ ํ•จ๊ป˜ ์ ์–ด ๋†“์€ ์„ค๋ช… ๋ถ€๋ถ„์€ matlab ํ”„๋กฌํ”„ํŠธ์—์„œ โ€˜help average'์ด๋ผ๊ณ  ์ž…๋ ฅํ–ˆ์„ ๋•Œ ๋ชจ๋‹ˆํ„ฐ ํ™”๋ฉด์ƒ์— ํ‘œ์‹œ๋œ๋‹ค. โ‘ฃ matlab ํ”„๋กฌํ”„ํŠธ์—์„œ โ€˜lookfor average'์ด๋ผ๊ณ  ์ž…๋ ฅํ•˜๋ฉด average๊ฐ€ ํฌํ•จ๋œ ํ•ญ๋ชฉ๋“ค์„ ๋ชจ๋‘ ์ฐพ์•„ ์ค€๋‹ค.(์ฃผ์„์˜ ์ฒซ ๋ฒˆ์งธ ์ค„๋งŒ ํ•ด๋‹น๋จ) โ‘ค ํŒŒ์ผ์˜ ์ฒซ ๋ฒˆ์งธ ์ค„์— ๋‚˜ํƒ€๋‚˜๋Š” ๋ณ€์ˆ˜๋“ค y, m ๋ฐ n์€ ํ•จ์ˆ˜ โ€˜average'์— ๊ตญํ•œ๋œ ๋ณ€์ˆ˜๋“ค ๋กœ์จ โ€™average'์ด ์‹คํ–‰๋˜๊ณ  ๋‚œ ํ›„์—๋Š” ์ž‘์—… ๊ณต๊ฐ„์ƒ์— ์กด์žฌํ•˜์ง€ ์•Š๊ฒŒ ๋œ๋‹ค. โ‘ฅ ํ•จ์ˆ˜ ํŒŒ์ผ์˜ ๋ณ€์ˆ˜๋“ค์€ ์ง€์—ญ ๋ณ€์ˆ˜๋“ค์ด๊ธฐ ๋•Œ๋ฌธ์—, ํ•จ์ˆ˜ โ€˜average'์— ์‚ฌ์šฉ๋˜๋Š” ์ž…๋ ฅ ์ธ์ˆ˜ ์˜ ์ด๋ฆ„์ด ๋ฐ˜๋“œ์‹œ m-file ๋‚ด์˜ ๋ณ€์ˆ˜์ธ โ€™x'์™€ ๊ฐ™์„ ํ•„์š”๋Š” ์—†๋‹ค. ์ •ํ˜„ํŒŒ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ํ•จ์ˆ˜ ํŒŒ์ผ๋กœ ์ž‘์„ฑํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค. function a=sin_plot2(freq) %Sine ๊ทธ๋ž˜ํ”„๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ•จ์ˆ˜ ํŒŒ์ผ %M-file program sin_plot2 t=[0:0.001:0.1]; y=sin(2*pi*freq*t); plot(t,y),grid xlabel('Time[sec]'),ylabel('y(t)') ใ€‹sin_plot(30) ๋‹ค์Œ์˜ ์˜ˆ๋Š” ํ‘œ์ค€ํŽธ์ฐจ๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” โ€˜stat.mโ€™ ํŒŒ์ผ์„ ์ž‘์„ฑํ•œ ๊ฒƒ์ด๋‹ค. function [mean, stdev] = stat(x) [m,n] = size(x); if m == 1 m=n; end mean = sum(x)/m stdev=sqrt((sum((x-mean).^2))/(m-1))
  • 58. - 58 - - ์ „์—ญ๋ณ€์ˆ˜ ๋Œ€๊ฐœ์˜ m-file๋กœ ์ •์˜๋œ matlab ํ•จ์ˆ˜๋“ค์€ ์ž์ฒด์ ์œผ๋กœ ์ง€์—ญ๋ณ€์ˆ˜๋“ค์„ ์‚ฌ์šฉํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ์ง€ ์—ญ ๋ณ€์ˆ˜๋“ค์€ ๋‹ค๋ฅธ ํ•จ์ˆ˜์˜ ๋ณ€์ˆ˜๋“ค, ๊ธฐ๋ณธ ์ž‘์—… ๊ณต๊ฐ„์˜ ๋ณ€์ˆ˜๋“ค ๋ฐ ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์˜ ๋ณ€์ˆ˜๋“ค๊ณผ ๋ถ„๋ฆฌํ•˜์—ฌ ์ทจ๊ธ‰ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜, ๋งŒ์•ฝ ๋ช‡ ๊ฐœ์˜ ํ•จ์ˆ˜๋“ค์—์„œ ํŠน์ •ํ•œ ์ด๋ฆ„์˜ ๋ณ€์ˆ˜๋ฅผ ์ „์—ญ๋ณ€์ˆ˜๋กœ ์„  ์–ธํ–ˆ๋‹ค๋ฉด, ๊ทธ ๋ณ€์ˆ˜๋ฅผ ์ „์—ญ ๋ณ€์ˆ˜๋กœ ์„ ์–ธํ•œ ํ•จ์ˆ˜๋“ค๊ณผ matlab ์ž‘์—… ๊ณต๊ฐ„์€ ๊ทธ ๋ณ€์ˆ˜๋ฅผ ๊ณต์œ ํ•˜๊ฒŒ ๋œ๋‹ค. โ‘  function workspace์™€ base workspace๊ฐ„์˜ ๋ฐ์ดํ„ฐ ๊ตํ™˜์‹œ <plot_sin.m> function y=plot_sin(t) global a_deg y1=sin(t) y2=sin(t+a_deg*pi/180); plot(t,y1,'r-',t,y2,'g.') grid on ใ€‹x=0:0.1:10; ใ€‹global a_deg; ใ€‹a_deg=45; ใ€‹plot_sin(x) ใ€‹whos global Name Size Bytes Class a_deg 1x1 8 double array (global) Grand total is 1 elements using 8 bytes Your variables are: โ‘ก function workspace๊ฐ„์˜ ๋ฐ์ดํ„ฐ ๊ตํ™˜์‹œ <newstats1.m> function [avg,med]=newstats1(in) %newstats ์„œ๋ธŒํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ ํ‰๊ท ๊ณผ ์ค‘๊ฐ„๊ฐ’์„ ๊ตฌํ•˜๋Š” ํ•จ์ˆ˜ % global n; n=length(in); avg=newmean(in);
  • 59. - 59 - med=newmedian(in); %์„œ๋ธŒํ•จ์ˆ˜1 function a=newmean(in) global n; a=sum(in)/n; %์„œ๋ธŒํ•จ์ˆ˜2 function m=newmedian(v) global n; w=sort(v); if rem(n,2)==1 m=w((n+1)/2); else m=(w(n/2)+w(n/2+1))/2; end - ์„œ๋ธŒ ํ•จ์ˆ˜(subfunction) Matlab 5.0์ดํ›„ ๋ฒ„์ „๋ถ€ํ„ฐ๋Š” ๋‹ค๋ฅธ High_level ์–ธ์–ด์—์„œ์ฒ˜๋Ÿผ ์„œ๋ธŒํ•จ์ˆ˜(subfunctions)๋ฅผ ์ •์˜ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค. function mode m-file์˜ ์ฒซ ๋ฒˆ์งธ ํ•จ์ˆ˜๋ฅผ โ€˜primary function'์ด๋ผ ํ•˜๊ณ , ๋˜ํ•œ, primary function์˜ ์ด๋ฆ„์ด ํ•ด๋‹น m-file์˜ ํŒŒ์ผ ์ด๋ฆ„์ด ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ , primary function ์•ˆ์— ์ƒˆ๋กญ๊ฒŒ ์ •์˜๋œ ํ•จ์ˆ˜๋“ค์„ โ€™subfunction'๋ผ๊ณ  ํ•œ๋‹ค. subfunction์€ ํ•ด๋‹น primary function์•ˆ์—์„œ, ๋˜๋Š” ๊ฐ™์€ ํŒŒ์ผ ์•ˆ์— ์žˆ๋Š” subfunction์—์„œ ๋งŒ ์ฐธ์กฐ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค. ๊ฐ๊ฐ์˜ subfunction ์—ญ์‹œ, ์ž์‹ ๋งŒ์˜ ํ•จ์ˆ˜ ์ •์˜๋ถ€๋ฅผ ์†Œ์œ ํ•ด์•ผ ํ•œ๋‹ค. ๋‹ค์Œ์€ ๋ฒกํ„ฐ์˜ ํ‰๊ทœ(average)์™€ ์ค‘๊ฐ„๊ฐ’(median value)๋ฅผ ๊ตฌํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค. function [avg,med]=newstats(in) %newstats ์„œ๋ธŒํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ ํ‰๊ท ๊ณผ ์ค‘๊ฐ„๊ฐ’์„ ๊ตฌํ•˜๋Š” ํ•จ์ˆ˜ % n=length(in); avg=newmean(in,n); med=newmedian(in,n); %์„œ๋ธŒํ•จ์ˆ˜1 function a=newmean(in,n) a=sum(in)/n; %์„œ๋ธŒํ•จ์ˆ˜2 function m=newmedian(v,n) w=sort(v); if rem(n,2)==1 m=w((n+1)/2); else m=(w(n/2)+w(n/2+1))/2; end
  • 60. - 60 - ใ€‹x=[1 4 2 10 3 2 7]; ใ€‹[avg,med]=newstats(x) avg = 4.5000 med = 3.5000 - ์ž…ใ†์ถœ๋ ฅ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ฐœ์ˆ˜๋ฅผ ์ œ์–ดํ•˜๋Š” โ€˜nargin, nargout'ํ•จ์ˆ˜ function mode m-file์—์„œ โ€˜nargin(number of function input argument), nargout(number of function output argument)' ํ•จ์ˆ˜๋“ค์€ ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ์ž…ใ†์ถœ๋ ฅ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋Š”์ง€ ๋ฅผ ์•Œ๋ ค์ค€๋‹ค. ์•ž์—์„œ ์‚ดํŽด๋ณธ โ€˜newstats1.m'ํŒŒ์ผ์„ ์ถœ๋ ฅ๋ณ€์ˆ˜๊ฐ€ ํ•˜๋‚˜ ์ผ ๋•Œ๋Š” ํ‰๊ท ์„ ์ถœ๋ ฅํ•˜๊ณ , ๋‘˜ ์ผ ๋•Œ ๋Š” ํ‰๊ท ๊ณผ ์ค‘๊ฐ„๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜๋กœ ๋ฐ”๊พธ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. <messtats2.m> function [avg,med]=newstats2(in) %newstats ์„œ๋ธŒํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ ํ‰๊ท ๊ณผ ์ค‘๊ฐ„๊ฐ’์„ ๊ตฌํ•˜๋Š” ํ•จ์ˆ˜ % global n; n=length(in); if nargout ==1 avg=newmean(in); else avg=newmean(in); med=newmedian(in); end %์„œ๋ธŒํ•จ์ˆ˜1 function a=newmean(in) global n; a=sum(in)/n; %์„œ๋ธŒํ•จ์ˆ˜2 function m=newmedian(v) global n; w=sort(v); if rem(n,2)==1 m=w((n+1)/2); else m=(w(n/2)+w(n/2+1))/2; end 3. ๊ธฐํƒ€ ์‚ฌํ•ญ 1) matlab ๋ช…๋ น์–ด ์ž…๋ ฅ์‹œ ๊ฒ€์ƒ‰ ๋‹จ๊ณ„
  • 61. - 61 - matlab์—์„œ ์–ด๋–ค ์ด๋ฆ„, ์˜ˆ๋ฅผ ๋“ค์–ด โ€˜test'์™€ ๊ฐ™์€ ์ด๋ฆ„์ด ์ž…๋ ฅ๋˜๋ฉด, ์ผ๋ฐ˜์ ์œผ๋กœ matlab ํ•ด์„ ๊ธฐ(interpreter)๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‹จ๊ณ„๋ฅผ ๊ฑฐ์ณ ๊ทธ ์ด๋ฆ„์„ ์ฒ˜๋ฆฌํ•œ๋‹ค. โ‘  โ€˜test'๋ฅผ ๋ณ€์ˆ˜๋กœ ์ทจ๊ธ‰ํ•˜์—ฌ ๊ฒ€์ƒ‰ํ•œ๋‹ค. โ‘ก โ€˜test'๋ฅผ ๋‚ด์žฅํ•จ์ˆ˜(built-in function)๋กœ ์ทจ๊ธ‰ํ•˜์—ฌ ์ ๊ฒ€ํ•œ๋‹ค. โ‘ข ํ˜„์žฌ ์‚ฌ์šฉ์ค‘์ธ ๋””๋ ‰ํ† ๋ฆฌ์— โ€˜test.m'์ด๋ผ๋Š” ์ด๋ฆ„์˜ ํŒŒ์ผ์ด ์กด์žฌํ•˜๋Š”์ง€ ์ฐพ์•„๋ณธ๋‹ค. โ‘ฃ matlab์˜ ๊ฒ€์ƒ‰ ๊ฒฝ๋กœ์— ์ง€์ •๋œ ๋””๋ ‰ํ† ๋ฆฌ๋“ค ์ค‘์— โ€˜test.m'์ด๋ผ๋Š” ์ด๋ฆ„์˜ ํŒŒ์ผ์ด ์กด์žฌ ํ•˜๋Š”์ง€ ๊ฒ€์ƒ‰ํ•œ๋‹ค. ์œ„์˜ ๊ฒ€์ƒ‰ ๋‹จ๊ณ„๋“ค๋กœ๋ถ€ํ„ฐ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด matlab์—์„œ๋Š” ์–ด๋–ค ์ด๋ฆ„์ด ์ž…๋ ฅ๋˜๋ฉด ๊ทธ๊ฒƒ์„ ํ•จ์ˆ˜ ๋กœ ์ทจ๊ธ‰ํ•˜๊ธฐ ์ „์— ๋จผ์ € ๋ณ€์ˆ˜๋กœ์จ ์ทจ๊ธ‰ํ•œ๋‹ค. 2) echo, input, keyboard, pause โ‘  echo ์ •์ƒ์ ์œผ๋กœ matlab์˜ m-ํŒŒ์ผ์ด ์ˆ˜ํ–‰๋˜๋Š” ๋™์•ˆ์—๋Š” ๊ทธ ํŒŒ์ผ ๋‚ด์˜ ๋ช…๋ น๋“ค์ด ๋ชจ๋‹ˆํ„ฐ ํ™”๋ฉด ์— ํ‘œ์‹œ๋˜์ง€ ์•Š๋Š”๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ โ€˜echo' ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜๋ฉด m-ํŒŒ์ผ์ด ์‹คํ–‰๋  ๋•Œ ๊ฐ๊ฐ์˜ ๋ช…๋ น๋“ค์ด ๋ชจ๋‹ˆํ„ฐ ํ™”๋ฉด์— ๋‚˜ํƒ€๋‚œ๋‹ค. โ‘ก input m-file์ด ์‹คํ–‰๋  ๋•Œ ์‚ฌ์šฉ์ž๊ฐ€ ์ž๋ฃŒ๋ฅผ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค. 'input'๋ฅผ ์‹คํ–‰์‹œํ‚ค๋ฉด, ์ž ๋ฃŒ๊ฐ€ ์ž…๋ ฅ๋  ๋•Œ๊นŒ์ง€ ๋” ์ด์ƒ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ  ๋Œ€๊ธฐ ์ƒํƒœ๋กœ ๋จธ๋ฌด๋ฅด๊ฒŒ ๋œ๋‹ค. ใ€‹input('how old are you?') how old are you? 25 ans = 25 โ‘ข keyboard ์ปดํ“จํ„ฐ ์žํŒ์„ ๋งˆ์น˜ ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜๋„๋ก ํ•ด์ค€๋‹ค. m-file ๋‚ด๋ถ€์— ์ด ํ•จ์ˆ˜๋ฅผ ์‚ฝ ์ž…ํ•ด ๋†“์œผ๋ฉด, ํŒŒ์ผ์˜ ์ž˜๋ชป๋œ ๊ณณ์„ ๊ณ ์น˜๊ฑฐ๋‚˜ ํŒŒ์ผ์ด ์ˆ˜ํ–‰๋˜๋Š” ๋™์•ˆ์— ๋ณ€์ˆ˜๋ฅผ ์ˆ˜์ •ํ•˜๋Š”๋ฐ ์œ  ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. โ‘ฃ pause ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰์„ ์ผ์‹œ์ ์œผ๋กœ ์ค‘์ง€ ์‹œํ‚ค๋Š” ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. 3) profile profile ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•œ ํ›„, M-file์„ ์‹คํ–‰ํ•˜๋ฉด ๊ฐ๊ฐ์˜ ํ•จ์ˆ˜๋“ค์˜ ์ฒ˜๋ฆฌ์†๋„๋ฅผ ๊ณ„์‚ฐํ•œ ํ›„ web browser๋ฅผ ์ด์šฉํ•ด์„œ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์—ฌ์ค€๋‹ค. ใ€‹profile on ใ€‹sinc1 ใ€‹profile report
  • 62. - 62 - ใ€‹profile plot ใ€‹profile off 4) P-code ํŒŒ์ผ M-file์€ ๋ชจ๋“  ์†Œ์Šค๋ฅผ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ์‰ฝ๊ฒŒ ๋ณผ ์ˆ˜๊ฐ€ ์žˆ์–ด์„œ ํ”„๋กœ๊ทธ๋žจ์„ ๋ณดํ˜ธ ํ•  ์ˆ˜๊ฐ€ ์—†์—ˆ ๋‹ค. 'pcode.m'์€ matlab์˜ ๋ชจ๋“  m-file์„ parsingํ•˜์—ฌ pseudocode๋กœ ๋ณ€ํ™˜ํ•œ ํ›„ ํ™•์žฅ์ž๊ฐ€ โ€˜.p'
  • 63. - 63 - ์ธ ํŒŒ์ผ๋กœ ์ €์žฅํ•˜๋ฏ€๋กœ ์—๋””ํ„ฐ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ์†Œ์Šค ์ฝ”๋“œ(source code)๋ฅผ ๋ณผ ์ˆ˜ ์—†๊ฒŒ ํ•œ๋‹ค. ๋˜ํ•œ, ํŒŒ์ผ์ด๋ฆ„์ด ๊ฐ™์€ m-file๊ณผ p-ํŒŒ์ผ์ด ์žˆ๋‹ค๋ฉด, matlab์€ ์šฐ์„  p-ํŒŒ์ผ์„ ์‹คํ–‰ํ•˜๊ฒŒ ๋œ ๋‹ค. ใ€‹type stat.m ใ€‹pcode stat.m ใ€‹!notepad stat.p 4. Matlab ํ”„๋กœ๊ทธ๋žจ์˜ ๋””๋ฒ„๊ฑฐ(debugger) 1) ๋””๋ฒ„๊ฑฐ ๋ช…๋ น์–ด Matlab 5 ๋ฒ„์ „์˜ ๋””๋ฒ„๊ฑฐ์—์„œ๋Š” matlab 4 ๋ฒ„์ „์—์„œ ์‚ฌ์šฉํ•œ ๋””๋ฒ„๊น…์˜ ๋ช…๋ น์–ด๋“ค์„ ๋ชจ๋‘ ์ˆ˜ ์šฉํ•˜๊ณ  ์žˆ์ง€๋งŒ, matlab 5 ๋ฒ„์ „์— ์ž์ฒด ๋‚ด์žฅ๋˜์–ด ์žˆ๋Š” m-file editor/debugger version์„ ์ด ์šฉํ•˜์—ฌ ๋งค์šฐ ํŽธ๋ฆฌํ•˜๊ฒŒ ๋””๋ฒ„๊ฑฐ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. m-file editor/debugger์— ํฌํ•จ๋˜์–ด ์žˆ๋Š” ์ƒˆ๋กœ์šด ๋””๋ฒ„๊น… ๋ช…๋ น์–ด๋“ค์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. continue : ํ˜„์žฌ์˜ ์ค‘์ง€์ ์—์„œ๋ถ€ํ„ฐ ๊ณ„์†ํ•˜์—ฌ ์‹คํ–‰
  • 64. - 64 - set/clear breakpoint : ์„ ํƒ๋œ ์ค„์˜ ์ค‘์ง€์  ์„ค์ • ๋ฐ ํ•ด์ œ clear all breakpoint : ์„ค์ •๋˜์–ด ์žˆ๋Š” ๋ชจ๋“  ์ค‘์ง€์ ์˜ ํ•ด์ œ single step : ํ˜„์žฌ์˜ ์ค„์„ ์‹คํ–‰ step in : ํ˜„์žฌ์˜ ์ค„์— ์žˆ๋Š” ๋ช…๋ น์–ด๋กœ ์‹คํ–‰์„ ์˜ฎ๊น€ quit bebugging : ๋””๋ฒ„๊ฑฐ ์ค‘๋ฃŒ stop if error : ์‹คํ–‰์‹œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์‹คํ–‰ ์ •์ง€ stop if warning : ์‹คํ–‰์‹œ ๊ฒฝ๊ณ ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์‹คํ–‰ ์ •์ง€ stop in nan or inf : Nan ํ˜น์€ Inf์ด๋ฉด ์‹คํ–‰ ์ •์ง€ ์œ„์˜ ๋ช…๋ น์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” matlab 5.3 ๋ฒ„์ „์— ์ž์ฒด ๋‚ด์žฅ๋˜์–ด ์žˆ๋Š” m-file editor/debugger version์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ๋””๋ฒ„๊ฑฐ ์ž‘์—…์„ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ๋จผ์ € ๋””๋ฒ„๊น…ํ•  ๋‘ ๊ฐœ์˜ m-file์„ โ€˜deb_test.m'๊ณผ 'deb_test1.m' ์ด๋ฆ„์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ•œ๋‹ค. ๋จผ์ €, ๋ฐฉ์ •์‹์˜ ๊ทผ์„ ๊ตฌํ•˜๋Š” ๊ฒƒ์œผ๋กœ์„œ ์•„๋ž˜ ์™€ ๊ฐ™์ด ์ž…๋ ฅํ•˜์—ฌ โ€™deb_test.m'์ด๋ฆ„์œผ๋กœ m-file์„ ์ž‘์„ฑํ•œ๋‹ค. function a=deb_test(s) % ๋ฐฉ์ •์‹์˜ ๊ทผ์„ ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ• % ๋””๋ฒ„๊ฑฐ ์ž‘์—…์„ ์œ„ํ•œ ์˜ˆ % Program File - name deb_test.m r=roots(s) deb_test1(r); ๊ณ„์†ํ•ด์„œ, ์œ„์—์„œ ๊ตฌํ•œ ๊ทผ์„ ์ด์šฉํ•˜์—ฌ ๋ฐ˜๋Œ€๋กœ ๋ฐฉ์ •์‹์„ ๊ตฌํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์•„๋ž˜์™€ ๊ฐ™์ด ์ž…๋ ฅํ•˜์—ฌ โ€˜deb_test1.m' ์ด๋ฆ„์œผ๋กœ m-file์„ ๋งŒ๋“ ๋‹ค. function p=deb_test1(r) % ๊ทผ์„ ์ด์šฉํ•ด์„œ ๋ฐฉ์ •์‹์„ ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ• % ๋””๋ฒ„๊ฑฐ ์ž‘์—…์„ ์œ„ํ•œ ์˜ˆ % Program File - name deb_test1.m
  • 65. - 65 - p=poly(r) ์šฐ์„ , ๋ฐฉ์ •์‹ y= x2 -3x+2์— ๋Œ€ํ•ด์„œ ์œ„์˜ ์˜ˆ์ œ ํ”„๋กœ๊ทธ๋žจ์ธ โ€˜deb_test.m'์„ ์‹คํ–‰ํ•˜๋ฉด ๋ฐฉ์ •์‹์˜ ๊ทผ๊ณผ ํ•จ๊ป˜ ๊ทผ์„ ์ด์šฉํ•œ ๋ฐฉ์ •์‹์ด ๊ตฌํ•ด์ง„๋‹ค. ใ€‹s=[1 -3 2]; ใ€‹deb_test(s) r = 2 1 p = 1 -3 2 2) ์ค‘์ง€์  ์„ค์ •
  • 66. - 66 - 3) M-file์˜ ์‹คํ–‰๊ณผ ์Šคํƒ์˜ ํ‘œ์‹œ ์ค‘์ง€์ ์„ ์„ค์ •ํ•œ ํ›„์— ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ช…๋ น(โ€˜deb_test([1 -3 2])'์„ ์‹คํ–‰ํ•˜๋ฉด ใ€‹deb_test([1 -3 2]) Kใ€‹ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ๋‹ค์Œ ์ค„์— โ€˜Kใ€‹'์˜ ๋ชจ์–‘์œผ๋กœ ํ˜„์žฌ ๋””๋ฒ„๊ฑฐ ์ž‘์—… ์ค‘์ž„์„ ๋‚˜ํƒ€๋‚ด๋Š” ํ”„๋กฌํ”„ํŠธ ๊ฐ€ ๋‚˜ํƒ€๋‚จ๊ณผ ๋™์‹œ์— m-file editor/debugger๊ฐ€ ํ™œ์„ฑํ™”๋˜๋ฉด์„œ โ€™deb_test.mโ€˜ ์ด๋ฆ„์˜ m-file์— ์„ค์ •ํ•ด ๋†“์€ ์ค‘์ง€์ ์ธ 5๋ฒˆ์งธ ์ค„์— ๋…ธ๋ž€์ƒ‰์˜ ํ™”์‚ดํ‘œ๊ฐ€ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๋‚˜ํƒ€๋‚˜๊ณ  ์‹คํ–‰์„ ์ •์ง€ํ•˜๊ฒŒ ๋œ๋‹ค. ๊ณ„์†ํ•˜์—ฌ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ โ€˜continue'๋ช…๋ น์„ ํด๋ฆญํ•˜๋ฉด ๋‘ ๋ฒˆ์งธ๋กœ ์„ค์ •ํ•ด ๋†“์€ ์ค‘์ง€ ์ ์ธ โ€™poly'ํ•จ์ˆ˜์˜ 37๋ฒˆ์งธ ์ค„์—์„œ ์‹คํ–‰์„ ์ผ์‹œ ์ •์ง€ํ•˜๊ฒŒ ๋˜๋ฉฐ ๋…ธ๋ž€์ƒ‰์˜ ํ™”์‚ดํ‘œ๋กœ ํ˜„์žฌ์˜ ์œ„ ์น˜๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€ ์‹คํ–‰ํ•œ ํ•จ์ˆ˜ ํ˜ธ์ถœ์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ํ™•์ธํ•˜๊ฒŒ ์œ„ํ•ด์„œ stack์˜ ์˜†์— ์žˆ๋Š” ์„ ํƒ ํ™”์‚ด ํ‘œ๋ฅผ ํด๋ฆญํ•˜๋ฉด ์‹คํ–‰ํ•œ ํ•จ์ˆ˜์— ๋Œ€ํ•œ ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋‚˜ํƒ€๋‚˜๊ฒŒ ๋œ๋‹ค.
  • 67. - 67 - 4) ์ž‘์—…๊ณต๊ฐ„ ๋ณ€๊ฒฝ๊ณผ ๋ณ€์ˆ˜์˜ ๋‚ด์šฉ ํ˜ธ์ถœ๋œ ๊ฐ๊ฐ์˜ ํ•จ์ˆ˜์— ๋Œ€ํ•œ ์ž‘์—… ๊ณต๊ฐ„์—์„œ์˜ ๋ณ€์ˆ˜๋ฅผ ํ™•์ธํ•˜๊ณ ์ž ํ•  ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ์— m-file editor/debugger์˜ ์Šคํƒ์„ ์ด์šฉํ•˜์—ฌ ๊ฐ๊ฐ์˜ ํ•จ์ˆ˜์— ๋Œ€ํ•œ ์ž‘์—… ๊ณต๊ฐ„์œผ๋กœ ์ด๋™ ์„ ํ•˜์—ฌ ํ˜„์žฌ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋Š” ๋ณ€์ˆ˜๋ฅผ ํ™•์ธํ•˜๊ฒŒ ๋œ๋‹ค. ์Šคํƒ์„ ์ด์šฉํ•˜์—ฌ โ€˜deb_test.m' ํ•จ์ˆ˜๋ฅผ ์„ ํƒํ•˜์—ฌ ์ž‘์—… ๊ณต๊ฐ„์„ ์˜ฎ๊ธด ํ›„์— matlab ๋ช…๋ น์ฐฝ์— ์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‹คํ–‰ํ•˜๋ฉด โ€™deb_test.m'ํ•จ์ˆ˜์—์„œ ํ˜„์žฌ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๋ณ€์ˆ˜๋ช…๋“ค์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค. Kใ€‹whos Name Size Bytes Class r 2x1 16 double array s 1x3 24 double array Grand total is 5 elements using 40 bytes ๋˜ํ•œ, โ€˜deb_test1.m' ํ•จ์ˆ˜๋ฅผ ์„ ํƒํ•˜์—ฌ ๋ณ€์ˆ˜๋ฅผ ํ™•์ธํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. Kใ€‹whos Name Size Bytes Class r 2x1 16 double array Grand total is 2 elements using 16 bytes ๋งˆ์ง€๋ง‰์œผ๋กœ ์‚ฌ์šฉ๋œ โ€˜poly.m'ํ•จ์ˆ˜๋กœ ์ž‘์—… ๊ณต๊ฐ„์„ ์ด์šฉํ•˜์—ฌ ๋ณ€์ˆ˜๋ฅผ ํ™•์ธํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. Kใ€‹whos Name Size Bytes Class c 1x3 24 double array e 2x1 16 double array m 1x1 8 double array n 1x1 8 double array x 2x1 16 double array Grand total is 9 elements using 72 bytes 5) ๋‹ค์Œ ์ค„ ์‹คํ–‰๊ณผ ๋ณ€์ˆ˜ ์ง€๊ธˆ๊นŒ์ง€ ์‹คํ–‰๋œ ๊ฒƒ์€ ์ค‘์ง€์ ์— ์˜ํ•ด์„œ โ€˜poly.m' ํ•จ์ˆ˜์˜ 37๋ฒˆ์งธ ์ค„์—์„œ ์ •์ง€๋œ ์ƒํƒœ์ด๋‹ค. ๋”ฐ๋ผ์„œ, ๊ณ„์†ํ•ด์„œ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•  ํ•„์š”์„ฑ์ด ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ์— โ€™single step'์„ ํด๋ฆญํ•จ ์œผ๋กœ์จ ๋‹ค์Œ ์ค„์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.
  • 68. - 68 - Kใ€‹whos Name Size Bytes Class c 1x3 24 double array e 2x1 16 double array j 1x1 8 double array m 1x1 8 double array n 1x1 8 double array x 2x1 16 double array Grand total is 10 elements using 80 bytes 6) ๋””๋ฒ„๊น…์˜ ๊ณ„์† ์‹คํ–‰ 'poly.m' ํ•จ์ˆ˜๊ฐ€ ์ข…๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๊ณ„์†ํ•˜์—ฌ โ€˜single step' ๋ช…๋ น์„ ์‹คํ–‰ํ•œ๋‹ค. ์ด์™€ ๊ฐ™์ด, ๊ณ„์† ํ•ด์„œ ์‹คํ–‰ํ•˜๋‹ค ๋ณด๋ฉด ํ•จ์ˆ˜๊ฐ€ ์ข…๋ฃŒ๋˜๋Š” ์‹œ์ ์—์„œ๋Š” ๋…ธ๋ž€์ƒ‰์˜ ํ™”์‚ดํ‘œ๊ฐ€ ์•„๋ž˜์ชฝ์œผ๋กœ ํ–ฅํ•˜๊ฒŒ ๋œ ๋‹ค. ๊ณ„์†ํ•ด์„œ โ€˜single step'๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•˜๋ฉด, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ๋ช…๋ น์ฐฝ์— ๋‚˜ํƒ€๋‚จ๊ณผ ๋™์‹œ์— โ€™deb_test1.m'ํ•จ์ˆ˜๊ฐ€ ํ™œ์„ฑํ™” ๋œ๋‹ค.
  • 69. - 69 - Kใ€‹ p= 1 -3 2 7) ๋””๋ฒ„๊น…์˜ ์ข…๋ฃŒ ๋””๋ฒ„๊น…์„ โ€˜single step' ๋ช…๋ น์„ ์ด์šฉํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ์„ ๋๊นŒ์ง€ ๊ณ„์†ํ•ด์„œ ์‹คํ–‰ํ•˜์—ฌ ๊ฒฐ๊ณผ๋ฅผ ํ™• ์ธํ•˜๊ฑฐ๋‚˜, ๊ทธ๋ ‡์ง€ ์•Š๊ณ  ์ค‘์ง€์ ์ด๋‚˜ ํ”„๋กœ๊ทธ๋žจ์˜ ์ค‘๊ฐ„์—์„œ ๋””๋ฒ„๊น…์˜ ์ข…๋ฃŒ์‹œ๊นŒ์ง€ ํ•จ์ˆ˜๋ฅผ ๊ณ„์† ํ•ด์„œ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” โ€™continue' ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. โ€˜continue' ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋ฉด ๋””๋ฒ„ ๊ฑฐ ํ”„๋กฌํ”„ํŠธ (โ€™Kใ€‹')์—์„œ matlab ํ”„๋กฌํ”„ํŠธ(โ€˜ใ€‹')๊ฐ€ ๋‚˜ํƒ€๋‚˜๊ฒŒ ๋œ๋‹ค. ๋˜๋Š” ๋””๋ฒ„๊น…์„ ๋ฒ—์–ด๋‚˜๊ธฐ ์œ„ํ•ด์„œ๋Š” โ€™quit debugging'๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ๋””๋ฒ„๊น…์„ ์ข…๋ฃŒํ•  ์ˆ˜ ์žˆ๋‹ค. โ€˜quit debugging' ๋ช…๋ น์— ์˜ํ•œ ๋””๋ฒ„๊น… ์ข…๋ฃŒ๋Š” ์ค‘์ง€์ ์„ ์ œ๊ฑฐํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— โ€™set/clear breakpoint'์™€ โ€˜clear all breakpoint'๋ฅผ ์ด์šฉํ•ด์„œ ์ค‘์ง€์ ์„ ์ œ๊ฑฐ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • 70. - 70 - ์ œ 5 ์žฅ 2์ฐจ์› ๋ฐ 3์ฐจ์› ๊ทธ๋ž˜ํ”„ 1. 2์ฐจ์› ๊ทธ๋ž˜ํ”„ 1.1 ๊ธฐ๋ณธ์ ์ธ ๊ทธ๋ž˜ํ”„ ํ•จ์ˆ˜๋“ค Matlab์—์„œ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ฆฌ๋Š”๋ฐ ์žˆ์–ด์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ํ•จ์ˆ˜๋“ค์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค. ๊ฐ๊ฐ ์˜ ๊ฒฝ์šฐ์— ๊ทธ๋ž˜ํ”„์˜ ์ถ•์— ๋Œ€ํ•œ ํ‘œ์‹œ ๋ฐฉ๋ฒ•๋งŒ ๋‹ค๋ฅผ ๋ฟ์ด๋ฉฐ, ์ด ํ•จ์ˆ˜๋“ค์€ ์ž…๋ ฅ์„ ํ–‰๋ ฌ ๋˜๋Š” ๋ฒก ํ„ฐ์˜ ํ˜•ํƒœ๋กœ ๋ฐ›์•„๋“ค์ด๋ฉฐ, ์ž…๋ ฅ ์ž๋ฃŒ์— ๋”ฐ๋ผ ์ž๋™์ ์œผ๋กœ ์ถ•์˜ ๋ฐฐ์œจ์„ ์„ค์ •ํ•ด์„œ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ ๋ ค ์ค€๋‹ค. plot - ๋ฒกํ„ฐ ๋˜๋Š” ํ–‰๋ ฌ์˜ ์—ด(column)์— ๋Œ€ํ•˜์—ฌ ์„ ํ˜• ๋ฐฐ์œจ(linear scale)์˜ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ ค ์ค€๋‹ค. loglog - x์™€ y์ถ• ๋ชจ๋‘๋ฅผ ๋Œ€์ˆ˜ ๋ฐฐ์œจ(log scale)์— ๋งž์ถ”์–ด ๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ ค ์ค€๋‹ค. semilogx - x์ถ•์€ ๋Œ€์ˆ˜ ๋ฐฐ์œจ์—, y์ถ•์€ ์„ ํ˜• ๋ฐฐ์œจ์— ๋งž์ถ”์–ด ๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ ค ์ค€๋‹ค. semilogy - y์ถ•์€ ๋Œ€์ˆ˜ ๋ฐฐ์œจ์—, x์ถ•์€ ์„ ํ˜• ๋ฐฐ์œจ์— ๋งž์ถ”์–ด ๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ ค ์ค€๋‹ค. ์œ„์˜ ํ•จ์ˆ˜ ๋ช…๋ น๋“ค๋กœ ์ถ•์˜ ํ˜•ํƒœ๋ฅผ ์„ค์ •ํ•œ ํ›„์—, ๋‹ค์Œ์˜ ํ•จ์ˆ˜๋“ค์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ทธ๋ž˜ํ”„์˜ ์ œ๋ชฉ, ์ถ•์˜ ์ด๋ฆ„, ๋ˆˆ๊ธˆ ๊ฒฉ์ž ๋ฐ ๊ทธ๋ž˜ํ”„์— ๋Œ€ํ•œ ์„ค๋ช… ๋“ฑ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค. title - ๊ทธ๋ž˜ํ”„์— ์ œ๋ชฉ์„ ๋ถ™์ธ๋‹ค. xlabel - x์ถ•์— ์ถ•์˜ ์ด๋ฆ„์„ ๋ถ™์—ฌ ์ค€๋‹ค. ylabel - y์ถ•์— ์ถ•์˜ ์ด๋ฆ„์„ ๋ถ™์—ฌ ์ค€๋‹ค. text - ์ง€์ •ํ•œ ์œ„์น˜์— ์›ํ•˜๋Š” ๋ฌธ๊ตฌ๋ฅผ ํ‘œ์‹œํ•ด ์ค€๋‹ค. gtext - ๋งˆ์šฐ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ทธ๋ž˜ํ”„ ์ƒ์— ๋‚˜ํƒ€๋‚ด๊ณ ์ž ํ•˜๋Š” ๋ฌธ๊ตฌ์˜ ์œ„์น˜๋ฅผ ์ง€์ •ํ•œ๋‹ค. grid - ๋ˆˆ๊ธˆ ๊ฒฉ์ž(grid line)๋“ค์„ ๊ทธ๋ž˜ํ”„์— ๋‚˜ํƒ€๋‚ผ ๊ฒƒ์ธ์ง€๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค. 1.2 ๊ทธ๋ž˜ํ”„ ๊ทธ๋ฆฌ๊ธฐ โ€˜plot(y)' ๋ช…๋ น์–ด๋Š” y์˜ ์š”์†Œ๋“ค์„ y์ถ•์˜ ๊ฐ’์œผ๋กœ ์„ ์ •ํ•˜๊ณ , x์ถ•์€ y์˜ ์š”์†Œ๋“ค์˜ ์ƒ‰์ธ(index) ์„ x์ถ•์œผ๋กœ ์„ ์ •ํ•˜์—ฌ ๊ทธ๋ž˜ํ”„๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ๋˜ํ•œ, โ€™plot(x,y)' ๋ช…๋ น์–ด๋Š” x์˜ ์š”์†Œ๋“ค์„ x์ถ•์˜ ๊ฐ’ ์œผ๋กœ, y์˜ ์š”์†Œ๋“ค์„ y์ถ•์˜ ๊ฐ’์œผ๋กœ ์„ ์ •ํ•˜์—ฌ ๊ทธ๋ž˜ํ”„๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ๋‹ค์Œ์€ โ€˜y=cos(2x)log10(x+4)'๋ฅผ ๊ทธ๋ž˜ํ”„๋กœ ์ถœ๋ ฅํ•˜๋Š” ๊ณผ์ •์ด๋‹ค. <plot_test1.m> x=-03:0.05:3; y=cos(2*x).*log10(x+4); plot(x,y) xlabel('x์ถ•'),ylabel('y์ถ•'); title('y=cos(2x)log(x+4)'); grid
  • 71. - 71 - 1.3 ์„ ์˜ ํ˜•ํƒœ์™€ ๊ธฐํ˜ธ ๋ฐ ์ƒ‰์ƒ โ€˜plot' ๋ช…๋ น์—์„œ ์ผ๋ จ์˜ ๋ฌธ์ž๋“ค์„ ์ž…๋ ฅํ•จ์œผ๋กœ์จ ์„ ์˜ ์ข…๋ฅ˜์™€ ์ƒ‰์ƒ์„ ์‚ฌ์šฉ์ž๊ฐ€ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์€ โ€™plot' ๋ช…๋ น์—์„œ ใ€‹ plot(x,y,s) x์™€ y๋Š” ๊ฐ๊ฐ ๊ทธ๋ž˜ํ”„์˜ x์ถ• ๋ฐ y์ถ• ์ž๋ฃŒ๋ฅผ ์ง€์ •ํ•˜๋ฉฐ, s๋Š” ํ•˜๋‚˜, ๋‘˜ ๋˜๋Š” ์„ธ ๊ฐœ์˜ ๋ฌธ์ž๋กœ ๊ตฌ์„ฑ๋œ ์ธ์ˆ˜๋กœ์„œ ์ž‘์€๋”ฐ์˜ดํ‘œ(')๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ๋ถ„๋˜๋Š”๋ฐ, ๊ฐ๊ฐ์˜ ๊ธฐํ˜ธ๋“ค์ด ์˜๋ฏธํ•˜๋Š” ๋ฐ”๋ฅผ ์•„ ๋ž˜์˜ ํ‘œ์—์„œ ๋‚˜ํƒ€๋‚ด์—ˆ๋‹ค. Matlab ๊ทธ๋ž˜ํ”„์— ์‚ฌ์šฉ๋˜๋Š” ์ƒ‰์ƒ ๋ฐ ๊ธฐํ˜ธ๋“ค ๊ธฐ ํ˜ธ ์ƒ‰ ์ƒ ๊ธฐ ํ˜ธ ์„ ์˜ ํ˜•ํƒœ ๊ธฐ ํ˜ธ ์„ ์˜ ํ˜•ํƒœ b blue(ํŒŒ๋ž€์ƒ‰) . point(์ ) > triangle(right) g green(๋…น์ƒ‰) o circle(์›) p pentagram r red(๋นจ๊ฐ„์ƒ‰) x x-mark(x ํ‘œ์‹œ) h hexagram c cyan(ํ•˜๋Š˜์ƒ‰) + plus(๋ง์…ˆ ๊ธฐํ˜ธ) - solid line m magenta(์žํ™์ƒ‰) * star(๋ณ„ํ‘œ) : dotted(์ ์„ ) y yellow(๋…ธ๋ž€์ƒ‰) s square solid(์‹ค์„ ) -. dashdot(์ผ์  ์‡„์„ ) k black(๊ฒ€์ •์ƒ‰) v triangle(down) -- dashed(๋‹จ์„ ) w white(ํฐ์ƒ‰) ^ triangle(up) d diamond < triangle(left) 'plot'์€ ๋˜ํ•œ ์•„๋ž˜์™€ ๊ฐ™์ด x๊ฐ’, y๊ฐ’, ์˜ต์…˜์„ ์—ฌ๋Ÿฌ๊ฐœ ๋ฐ˜๋ณตํ•ด์„œ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฒฝ ์šฐ ์˜ต์…˜์—์„œ ์ƒ‰์ƒ์„ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด, ์œ„์˜ ์ƒ‰์ƒํ‘œ์— ์—ด๊ฑฐ๋œ ํŒŒ๋ž€์ƒ‰๋ถ€ํ„ฐ ๊ฒ€์ •์ƒ‰๊นŒ์ง€์˜ ์ˆœ์„œ ๋กœ ๊ทธ๋ž˜ํ”„๋ฅผ ๋„์‹œํ•œ๋‹ค. ใ€‹plot(x1,y1,s1,x2,y2,s2,x3,y3,s3,...) 1.4 ๊ธฐ์กด์˜ ๊ทธ๋ž˜ํ”„์— ์ƒˆ๋กœ์šด ์„ ์„ ์ถ”๊ฐ€. - hold ์‚ฌ์šฉ
  • 72. - 72 - โ€˜hold' ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋ฏธ ์ž‘์„ฑ๋˜์–ด ์žˆ๋Š” ๊ทธ๋ž˜ํ”„์— ์ƒˆ๋กœ์šด ์„ ๋“ค์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค. โ€™hold' ๋ช…๋ น์„ โ€˜on' ์ƒํƒœ๋กœ ์„ค์ •ํ•˜๋ฉด, matlab์—์„œ๋Š” ๊ธฐ์กด์˜ ๊ทธ๋ž˜ํ”„๋ฅผ ์ œ๊ฑฐํ•˜์ง€ ์•Š์€ ์ƒํƒœ์—์„œ ๊ฐ™์€ ๊ทธ๋ž˜ํ”„ ์ƒ์— ์ƒˆ๋กœ์šด ์„ ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ๊ทธ๋ ค์ค€๋‹ค. ์ƒˆ๋กœ ๊ทธ๋ ค์ง€๋Š” ์„ ์˜ ๋ฐฐ์œจ์ด ๋‹ค๋ฅผ ๊ฒฝ์šฐ์— ๋Š” ์ž๋™์ ์œผ๋กœ ๋ฐฐ์œจ์„ ์žฌ์„ค์ •ํ•ด์„œ ๊ทธ๋ ค ์ค€๋‹ค. ใ€‹plot(x) ใ€‹hold on ใ€‹plot(y1) ใ€‹plot(y2) ใ€‹hold off 1.5 ๋ณต์†Œ์ˆ˜ ์ž๋ฃŒ์˜ ๋„์‹œ Z๊ฐ€ ํ•˜๋‚˜์˜ ๋ณต์†Œ ๋ฒกํ„ฐ ๋˜๋Š” ๋ณต์†Œ ํ–‰๋ ฌ์ผ ๋•Œ ๋‹ค์Œ์˜ ๋ช…๋ น์€ ์‹ค์ˆ˜๋ถ€์™€ ํ—ˆ์ˆ˜๋ถ€๋ฅผ ๋ถ„๋ฆฌํ•ด์„œ ๊ทธ๋ž˜ํ”„๋กœ ๋„์‹œํ•˜๊ฒŒ ๋œ๋‹ค. ใ€‹plot(Z) ์ด๊ฒƒ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋™์ž‘์„ ํ•˜๊ฒŒ ๋œ๋‹ค. ใ€‹plot(real(Z), imag(Z)) ๋‹ค์Œ์˜ ์˜ˆ๋Š” 50ร—50์ธ ๋‚œ์ˆ˜ ํ–‰๋ ฌ์˜ ๊ณ ์œ ์น˜(eigenvalue)๋“ค์˜ ๋ถ„ํฌ๋ฅผ ๊ทธ๋ž˜ํ”„๋กœ ๋‚˜ํƒ€๋‚ธ ๊ฒƒ์ด ๋‹ค. ใ€‹Z=eig(randn(50,50)); ใ€‹plot(Z,'*') ํ•˜์ง€๋งŒ ์—ฌ๋Ÿฌ ๊ฐ€์ง€์˜ ๋ณต์†Œ์ˆ˜๋“ค(Z1, Z2, Z3)์„ ํ•œ๊บผ๋ฒˆ์— ๋„์‹œํ•˜๊ณ ์ž ํ•  ๊ฒฝ์šฐ์—๋Š” plot(Z1,Z2,Z3)์™€ ๊ฐ™์ด ์“ธ ์ˆ˜ ์—†์œผ๋ฉฐ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž…๋ ฅํ•˜์—ฌ์•ผ ํ•œ๋‹ค. ใ€‹plot(real(Z1), imag(Z1),'*', real(Z2), imag(Z2), 'd', real(Z3), imag(Z3),'^') 1.6 ํ…์ŠคํŠธ(text)์˜ ์‚ฝ์ž… ํ…์ŠคํŠธ ์‚ฝ์ž…์„ ์œ„ํ•œ ๋ช…๋ น์—๋Š” โ€˜text'์™€ โ€™gtext' ๋ช…๋ น์–ด๊ฐ€ ์žˆ๋‹ค. โ€˜text' ๋ช…๋ น์–ด๋Š” x์ถ•๊ณผ y์ถ• ์œผ๋กœ ์ง€์ •๋œ ์ถœ๋ ฅ ์œ„์น˜๋งˆ๋‹ค ํ…์ŠคํŠธ๋ฅผ ์‚ฝ์ž…ํ•œ๋‹ค. โ€™gtext' ๋ช…๋ น์–ด๋Š” ๋งˆ์šฐ์Šค๋ฅผ ์ด์šฉํ•˜์—ฌ ์ž„์˜์˜ ์œ„์น˜๋ฅผ ์„ ์ •ํ•˜๋ฉด ๊ทธ ์œ„์น˜์— ํ…์ŠคํŠธ๋ฅผ ์‚ฝ์ž…ํ•œ๋‹ค. <plot_test1.m>
  • 73. - 73 - t=0:0.05:6*pi; y1=sin(t); y2=cos(t); plot(y1,'r-') hold on plot(y2,'b.') text(50,0.8 ,'sin ํ•จ์ˆ˜'); gtext('cos ํ•จ์ˆ˜') hold off ์ˆ˜์ง๋ฐฉํ–ฅ์œผ๋กœ ํ…์ŠคํŠธ๋ฅผ ์‚ฝ์ž…ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์œ„์˜ m-ํŒŒ์ผ์—์„œ plot ๋ช…๋ น ์œ— ์ค„์— set(gcf, 'defaulttextrotation,90) ์„ ์ถ”๊ฐ€ํ•˜๋ฉด ๋œ๋‹ค. ๊ฐ๊ฐ์˜ ๋ฐ์ดํ„ฐ ๊ทธ๋ž˜ํ”„๋กœ ๊ทธ๋ฆฐ ํ›„, ๋ฐ์ดํ„ฐ ์ ์˜ index๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค. ใ€‹y=rand(1,20); ใ€‹x=1:length(y); ใ€‹n=num2str(x'); ใ€‹plot(x,y,'dr') ใ€‹text(x+0.2,y,n)
  • 74. - 74 - 1.7 axis ํ•จ์ˆ˜ ํ•จ์ˆ˜ โ€˜axis'๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ๋Œ€๋กœ ๊ทธ๋ž˜ํ”„์˜ ์ข…ํšก๋น„, ๋ฐฉํ–ฅ ๋ฐ ๋ฐฐ์œจ ๋”ฐ์œ„๋ฅผ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ ๋„๋ก ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์„ ํƒ ์‚ฌํ•ญ๋“ค์„ ๊ฐ–์ถ”๊ณ  ์žˆ๋‹ค. ๋Œ€๊ฐœ์˜ ๊ฒฝ์šฐ์— matlab์€ ๋„์‹œํ•  ์ž๋ฃŒ์˜ ์ตœ๋Œ€ ๋ฐ ์ตœ์†Œ๊ฐ’์„ ์ฐพ์•„ ์ค„๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ ๋‹นํ•œ ๊ทธ๋ž˜ํ”„ ์ƒ์ž์™€ ์ถ•์˜ ์ด๋ฆ„์„ ์„ ํƒํ•ด ์ฃผ์ง€๋งŒ, ์‚ฌ์šฉ์ž ๊ฐ€ ์›ํ•  ๋•Œ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ถ•์˜ ํ•œ๊ณ„ ๊ฐ’์„ ์ƒˆ๋กœ์ด ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. 2์ฐจ์› : axis([xmin xmax ymin ymax]) 3์ฐจ์› : axis([xmin xmax ymin ymax zmin zmax]) ใ€‹t=[0:10:360]*(pi/180); ใ€‹x=2*cos(t); ใ€‹plot(t,x) ใ€‹axis equal ใ€‹axis image ใ€‹axis square default equal image square
  • 75. - 75 - 1.8 Peaks M-ํŒŒ์ผ Matlab์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด 3๊ฐœ์˜ ๊ทน๋Œ€์ ๊ณผ 2๊ฐœ์˜ ๊ทน์†Œ์ ์„ ๊ฐ€์ง€๋ฉด์„œ ๋‘ ๊ฐœ์˜ ๋ณ€์ˆ˜๋กœ ๊ตฌ ์„ฑ๋œ ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ, ์›ํ•˜๋Š” ํฌ๊ธฐ์˜ ํ–‰๋ ฌ์„ ๊ตฌ์„ฑํ•˜์—ฌ ์ฃผ๋Š” โ€˜peaks'๋ผ๋Š” m-ํŒŒ์ผ์„ ์ œ๊ณตํ•˜ ๊ณ  ์žˆ๋‹ค. f(x,y)=3( 1-x)2 e - x 2 -(y+1) 2 -10( x 5 -x3 -y5 )e - x 2 -y 2 - 1 3 e - ( x + 1) 2 -y 2 ์ด 'peaks' m-ํŒŒ์ผ์€ -3๋ถ€ํ„ฐ 3 ์‚ฌ์ด์˜ x ๋ฐ y ๊ฐ’์„ ์‚ฌ์šฉํ•˜์—ฌ ์œ„์˜ ํ•จ์ˆ˜๋กœ๋ถ€ํ„ฐ ๊ตฌํ•ด์ง€๋Š” ๊ฐ’๋“ค์„ ์›์†Œ๋กœ ํ•˜๋Š”, ์ง€์ •ํ•œ ์ฐจ์›๋งŒํผ์˜ ์ •๋ฐฉํ–‰๋ ฌ์„ ๊ตฌ์„ฑํ•ด ์ค€๋‹ค. ใ€‹peaks(10); ์ด๋ผ๊ณ  ์ž…๋ ฅํ•˜๋ฉด 10ร—10์˜ ์ •๋ฐฉํ–‰๋ ฌ์„ ๊ตฌ์„ฑํ•˜์—ฌ ํ‘œ์‹œํ•ด ์ค€๋‹ค. ๋งŒ์•ฝ ์ž…๋ ฅ ์ธ์ˆ˜๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๊ธฐ๋ณธ๊ฐ’์ธ 49๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ 49ร—49์˜ ์ •๋ฐฉํ–‰๋ ฌ์„ ์ƒ์„ฑํ•œ๋‹ค. 1.9 ํ–‰๋ ฌ์˜ ๋„์‹œ๋ฒ• ์ฐจ์›์ด mร—n์ธ ์ž„์˜์˜ ํ–‰๋ ฌ X๋ฅผ plot ๋ช…๋ น์œผ๋กœ ๋„์‹œํ•˜๋ฉด, X์˜ ๊ฐ ์—ด์˜ ์›์†Œ๋“ค์„ ์ž๋ฃŒ๋กœ ํ•˜๋Š” ์„ ์„ ๊ทธ๋ฆฌ๋Š”๋ฐ, ์ด๋•Œ x์ถ•์˜ ์ขŒํ‘œ๋Š” 1๋ถ€ํ„ฐ n๊นŒ์ง€ ๊ฐ ์—ด์˜ ๋ฒˆํ˜ธ๋กœ ์ฃผ์–ด์ง€๋ฉฐ ๊ฐ ์„ ์˜ ์ž ๋ฃŒ์ ์€ m๊ฐœ๊ฐ€ ๋œ๋‹ค. ใ€‹X=[1 2 3; 4 5 3] X= 1 2 3 4 5 3 ใ€‹plot(X) ใ€‹Y=[2 6 4 ;3 8 6;4 9 8; 5 7 3] Y = 2 6 4 3 8 6 4 9 8 5 7 3 ใ€‹plot(peaks)
  • 76. - 76 - 1.10 ๊ทธ๋ž˜ํ”„์˜ ๋ถ„ํ•  ํ™”๋ฉด์— ๋ช‡ ๊ฐœ์˜ ๊ทธ๋ž˜ํ”„๋ฅผ ์ถœ๋ ฅํ•˜๊ณ ์ž ํ•  ๊ฒฝ์šฐ์—๋Š” โ€˜subplot(m,n,k)'๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. m ์€ ๊ทธ๋ ค์งˆ ๊ทธ๋ž˜ํ”„์˜ ํ–‰์˜ ๊ฐœ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๊ณ , n์€ ์—ด์˜ ๊ฐœ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ๋˜ํ•œ k๋Š” subplotํ•  ์ธ๋ฑ์Šค๋ฅผ ์ง€์ •ํ•˜๋Š”๋ฐ 1๋ถ€ํ„ฐ m*n๊นŒ์ง€์˜ ํฌ๊ธฐ๋ฅผ ๊ฐ™๊ฒŒ ๋œ๋‹ค. <plot_test3> t=0:0.1:10; y=sin(t); subplot(2,3,1), plot(t,y),title('plot1') subplot(2,3,2), plot(t,y+1),title('plot2') subplot(2,3,3), plot(t,y+2),title('plot3') subplot(2,3,4), plot(t,y+3),title('plot4') subplot(2,3,5), plot(t,y+4),title('plot5') subplot(2,3,6), plot(t,y+5),title('plot6') ํฌ๊ธฐ๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅธ ๊ทธ๋ž˜ํ”„๋ฅผ ํ•œ ํ™”๋ฉด์— ์ถœ๋ ฅํ•˜๊ณ  ํ•  ๊ฒฝ์šฐ์—๋Š” โ€˜axes'๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. 'axes'๋ช…๋ น์–ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ขŒํ‘œ๋ฅผ ์„ค์ •ํ•˜๊ฒŒ ๋œ๋‹ค. axes('position',[left bottom width height]) ์—ฌ๊ธฐ์„œ ๊ทธ๋ฆผ์ฐฝ์˜ ๊ธฐ๋ณธ๊ฐ’์€ ์™ผ์ชฝ ์•„๋ž˜์˜ ์ขŒํ‘œ๊ฐ’์€(0,0)์ด๊ณ , ์˜ค๋ฅธ์ชฝ ์œ„์˜ ์ขŒํ‘œ๊ฐ’์€ (1,1)๋กœ ์„ค ์ •๋˜์–ด ์žˆ๋‹ค.
  • 77. - 77 - <plot_test4.m> clf t=0:0.05:4*pi; y=sin(t); c=cos(t); axes('position',[0.1 0.7 0.8 0.2]); plot(y,'r-'); hold on plot(c,'g'); axes('position',[0.1 0.1 0.8 0.5]) mesh(sphere) 1.11 ์ˆ˜ํ•™์  ํ•จ์ˆ˜์˜ ๋„์‹œ 'y = f(x)'์™€ ๊ฐ™์€ ํ•จ์ˆ˜๋ฅผ ๋„์‹œํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๋Š”๋ฐ, ๊ฐ€์žฅ ๋‹จ์ˆœํ•˜์ง€ ๋งŒ ํšจ๊ณผ์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” ์›ํ•˜๋Š” ๊ตฌ๊ฐ„์„ ์ˆ˜์ฒœ ๊ฐœ์˜ ์ž‘์€ ๊ตฌ๊ฐ„์œผ๋กœ ๋ถ„ํ• ํ•˜์—ฌ ๊ฐ ์ ๋งˆ๋‹ค ํ•จ์ˆ˜ ๊ฐ’์„ ๊ตฌํ•œ ํ›„์— ๊ทธ ๊ฐ’๋“ค์„ ๋„์‹œํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ•จ์ˆ˜๋Š” 0โ‰คxโ‰ค1์—์„œ ๋ฌดํ•œ๋Œ€๋กœ ์ง„๋™ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ใ€‹x=(0:1/1500:1)'; ใ€‹plot(x,sin(tan(pi*x))) ใ€‹x=(0:1/150:1)'; ใ€‹plot(x,sin(tan(pi*x)))
  • 78. - 78 - ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Ÿฌํ•œ ๋ฐฉ๋ฒ•์€ ๊ตฌ๊ฐ„์„ ์–ผ๋งˆ๋‚˜ ๋งŽ์ด ์ž‘๊ฒŒ ์ชผ๊ฐœ์–ด ๊ณ„์‚ฐํ•˜๋Š๋ƒ์— ๋”ฐ๋ผ ๊ฐ’์˜ ์ •ํ™•๋„์— ํฐ ์ฐจ์ด๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜๋ฉฐ, ๋˜ํ•œ ์œ„์˜ ๊ฒฝ์šฐ์™€ ๊ฐ™์ด ๋ถ€๋ถ„์ ์œผ๋กœ ๋งŽ์€ ์ ๋“ค์ด ๋ฐ€์ง‘๋˜์–ด ์žˆ๋Š” ๊ฒ…์šฐ์—๋Š” ์ƒ๋‹นํžˆ ๋น„ํšจ์œจ์ ์ด๋‹ค. ์ด๋Ÿฌํ•œ ๋‹จ์ ์— ๋Œ€ํ•œ ๋ณด์™„์ฑ…์œผ๋กœ ํ•จ์ˆ˜ โ€˜fplot'์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. โ€™fplot' ํ•จ์ˆ˜๋Š” ์„ ํƒ ์ ์œผ๋กœ ํ•จ์ˆ˜์˜ ๊ฐ’์˜ ์ทจํ•˜๋Š”๋ฐ, ํ•จ์ˆ˜ ๊ฐ’์˜ ๋ณ€ํ™”๊ฐ€ ์‹ฌํ•œ ๋ถ€๋ถ„์—์„œ๋Š” ๋งŽ์€ ์ ๋“ค์„ ์„ ํƒํ•˜์—ฌ ๊ณ„ ์‚ฐ์„ ํ•˜๊ณ  ํ•จ์ˆ˜ ๊ฐ’์˜ ๋ณ€ํ™”๊ฐ€ ์ ์€ ๋ถ€๋ถ„์—์„œ๋Š” ๋ช‡ ๊ฐœ์˜ ์ ๋งŒ์„ ์„ ํƒํ•˜์—ฌ ๊ณ„์‚ฐ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. <sin_tan.m> function y=sin_tan(x) y=sin(tan(pi*x)); ใ€‹fplot('sin_tan',[0 1]) 1.12 ๊ทธ๋ž˜ํ”ฝ ์ž…๋ ฅ Matlab์—์„œ๋Š” โ€˜ginput' ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ๋งˆ์šฐ์Šค๋‚˜ ๋ฐฉํ–ฅํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ทธ๋ž˜ํ”„ ์ƒ์˜ ํ•œ ์ ์„ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์ด ํ•จ์ˆ˜๋Š” ์ง€์‹œ์ž(pointer)์˜ ํ˜„์žฌ ์œ„์น˜ ๋˜๋Š” ๋งˆ์šฐ์Šค๋‚˜ ํ‚ค๋ณด ๋“œ์˜ ํ‚ค๊ฐ€ ๋ˆŒ๋ ค์กŒ์„ ๋•Œ์˜ ์œ„์น˜๋ฅผ ์ขŒํ‘œ๊ฐ’์œผ๋กœ ๋˜๋Œ๋ ค ์ค€๋‹ค. ๋‹ค์Œ์˜ ์˜ˆ๋Š” 2์ฐจ์›์—์„œ ๋‚ด์‚ฝ์— ์˜ํ•˜์—ฌ ๋งค๋„๋Ÿฌ์šด ๊ณก์„ ์„ ๊ตฌ์„ฑํ•˜๋Š” โ€˜spline' ํ•จ์ˆ˜๋ฅผ ํ†ตํ•˜์—ฌ โ€™ginput'์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•˜์—ฌ ์„ค๋ช…ํ•˜๊ณ  ์žˆ๋‹ค. ๋จผ์ € ํ•จ์ˆ˜ โ€˜ginput'์„ ํ†ตํ•˜์—ฌ ํ‰๋ฉด์ƒ์˜ ์ผ๋ จ์˜ ์ ๋“ค (x,y)๋ฅผ ์ง€์ •ํ•˜๋ฉด, ์›๋ž˜์˜ ๋‘ ์  ์‚ฌ์ด ์˜ ๊ฐ„๊ฒฉ์— ๋Œ€ํ•˜์—ฌ 1/5์˜ ๊ฐ„๊ฒฉ์œผ๋กœ ๋‚ด์‚ฝ๋œ ๊ฐ๊ฐ์˜ ์ ๋“ค์„ ํ†ต๊ณผํ•˜๋Š” ์šดํ˜•๊ณก์„ (spline)์ด ๊ทธ๋ ค ์ง„๋‹ค. <mouse_test.m>
  • 79. - 79 - % ๊ทธ๋ฆผ์ฐฝ์„ ์ง€์šฐ๊ณ  ๊ทธ๋ž˜ํ”„์˜ ํฌ๊ธฐ๋ฅผ ์ง€์ • clf % ๊ทธ๋ฆผ์ฐฝ์„ ์ง€์›€ axis([0 10 0 10]) hold on % ์ ์˜ ์ขŒํ‘œ์— ๋Œ€ํ•œ ๋ชฉ๋ก์„ ๋นˆ ์ƒํƒœ๋กœ ์ง€์ • x = [ ]; % x ์ขŒํ‘œ๊ฐ’์˜ ์ฐจ์› y = [ ]; % y ์ขŒํ‘œ๊ฐ’์˜ ์ฐจ์› n = 0; % ์ ์ด ์ฐํžŒ ์ˆœ์„œ์˜ ์ดˆ๊ธฐ๊ฐ’ % ์˜ค๋ฅธ์ชฝ ๋งˆ์šฐ์Šค ๋ฒ„ํŠผ์ด ๋ˆŒ๋ฆฌ๊ธฐ ์ „๊นŒ์ง€ ๊ณ„์†์ ์œผ๋กœ ๊ทธ๋ž˜ํ”„ ์ƒ์— ์ฐํžˆ๋Š” ์ ์„ ๊ธฐ๋ก leftright = 1; % ์™ผ์ชฝ ๋˜๋Š” ์˜ค๋ฅธ์ชฝ ๋งˆ์šฐ์Šค ๋ฒ„ํŠผ์˜ ๋ˆŒ๋ฆผ ์—ฌ๋ถ€ while leftright == 1 [xi,yi,leftright] = ginput(1); % ๋งˆ์šฐ์Šค ๋ฒ„ํŠผ ์ž…๋ ฅ plot(xi,yi,'go') % ๊ทธ๋ž˜ํ”„ ์ƒ์— ์ ์˜ ํ‘œ์‹œ n=n+1; % ์ฐํžŒ ์ ์˜ ๋ฒˆํ˜ธ ์ฆ๊ฐ€ x(n,1)=xi; % x ์ขŒํ‘œ๊ฐ’์˜ ์ž…๋ ฅ y(n,1)=yi; % y ์ขŒํ‘œ๊ฐ’์˜ ์ž…๋ ฅ end % ๋‘ ์  ์‚ฌ์ด๋ฅผ 5๊ฐœ์˜ ๊ตฌ๊ฐ„์œผ๋กœ ๋ถ„ํ• ํ•œ ํ›„ ๊ฐ๊ฐ์— ๋Œ€ํ•˜์—ฌ ์šดํ˜• ๊ณก์„ (spline)์œผ๋กœ ์—ฐ๊ฒฐ t=1:n; tt=1:0.2:n; xx=spline(t,x,tt); yy=spline(t,y,tt); % ๋‚ด์‚ฝ๋œ ๊ณก์„ ์„ ๊ทธ๋ฆผ plot(xx,yy,'r-') hold off
  • 80. - 80 - 1.13 2์ฐจ์› ๊ทธ๋ž˜ํ”„๋“ค์˜ ์ข…๋ฅ˜ โ‘  bar(๋ง‰๋Œ€ ๊ทธ๋ž˜ํ”„) - ์ผ์ฐจ์ ์ธ ๋ง‰๋Œ€ ๊ทธ๋ž˜ํ”„์˜ ํ˜•ํƒœ๋กœ ํ‘œ์‹œ ใ€‹x=-2.9:0.2:2.9; ใ€‹bar(x,exp(-x.*x),0.5) -3 -2 -1 0 1 2 3 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 ใ€‹bar(0:.25:1,rand(5,3),0.8) ใ€‹bar(rand(5,3),'stacked'), colormap(cool) -0.2 0 0.2 0.4 0.6 0.8 1 1.2 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 1 2 3 4 5 0 0.5 1 1.5 2 2.5 โ‘ก compass(ํ™”์‚ดํ‘œ ๊ทธ๋ž˜ํ”„) - ๋ณต์†Œ์ˆ˜ ๋˜๋Š” ๋ฒกํ„ฐ๋ฅผ ํ‘œ์‹œํ•  ๋•Œ์™€ ๊ฐ™์ด ๊ฐ๋„์™€ ํฌ๊ธฐ๋ฅผ ๊ฐ€์ง€ ๋ฉด์„œ ์›์ ์œผ๋กœ๋ถ€ํ„ฐ ๋ฐฉ์‚ฌ๋˜๋Š” ํ™”์‚ดํ‘œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž๋ฃŒ๋ฅผ ํ‘œ์‹œ ใ€‹z=eig(randn(20,20)); ใ€‹compass(z) 1 2 3 4 5 30 210 60 240 90 270 120 300 150 330 โ‘ข errorbar(์˜ค์ฐจ ๋ง‰๋Œ€) - ์˜ค์ฐจ ๋ง‰๋Œ€๋ฅผ ์‚ฌ์šฉํ•œ ๊ทธ๋ž˜ํ”„๋ฅผ ์ž‘์„ฑ ใ€‹x=0:0.1:2;
  • 81. - 81 - ใ€‹y=erf(x); ใ€‹e=rand(size(x))/10; ใ€‹errorbar(x,y,e) -0.5 0 0.5 1 1.5 2 2.5 -0.2 0 0.2 0.4 0.6 0.8 1 1.2 โ‘ฃ feather(ํ™”์‚ดํ‘œ ๊ทธ๋ž˜ํ”„) - ํฌ๊ธฐ์™€ ๊ฐ๋„๋ฅผ ๊ฐ–๋Š” ํ™”์‚ดํ‘œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ์ ์€ 'compass' ๊ทธ ๋ž˜ํ”„์™€ ๊ฐ™์ง€๋งŒ, ํ™”์‚ดํ‘œ์˜ ์‹œ์ž‘์ ์ด ์›์ ์— ์œ„์น˜ํ•˜์ง€ ์•Š๊ณ  x์ถ•์„ ๋”ฐ๋ผ ์ผ์ •ํ•œ ์ž๋ฃŒ์˜ ๊ฐœ์ˆ˜๋งŒ ํผ ๋ถ„ํฌ๋œ๋‹ค๋Š” ์ ์ด ๋‹ค๋ฅด๋‹ค. ใ€‹z=randn(3,3) + randn(3,3)*j z = -0.0715 - 0.5081i 0.1798 + 0.6250i 0.8252 + 0.4344i 0.2792 + 0.8564i -0.5420 - 1.0473i 0.2308 - 1.9171i 1.3733 + 0.2685i 1.6342 + 1.5357i 0.6716 + 0.4699i ใ€‹feather(z) 0 1 2 3 4 5 6 7 8 9 10 -2 -1.5 -1 -0.5 0 0.5 1 1.5 2 โ‘ค fplot(ํ•จ์ˆ˜ ๊ทธ๋ž˜ํ”„) - ํ•จ์ˆ˜์™€ ๊ตฌ๊ฐ„์„ ์ง€์ •ํ•˜๋ฉด ๊ทธ ๊ตฌ๊ฐ„์—์„œ์˜ ํ•จ์ˆ˜๊ฐ’์„ ๊ทธ๋ž˜ํ”„๋กœ ๊ทธ๋ ค์ค€ ๋‹ค. ใ€‹fplot('tanh',[-2 2]) โ‘ฅ hist(๋ง‰๋Œ€ ๊ทธ๋ž˜ํ”„) - 'bar'์™€ ๊ฐ™์€ ํ˜•ํƒœ์˜ ๋ง‰๋Œ€ ๊ทธ๋ž˜ํ”„์ด์ง€๋งŒ ํ†ต๊ณ„์ฒ˜๋ฆฌ์— ์‚ฌ์šฉ๋˜๋Š” ํžˆ์Šค ํ† ๊ทธ๋žจ(histogram)์„ ๊ทธ๋ ค ์ค€๋‹ค. ใ€‹x=-2.9:0.1:2.9;
  • 82. - 82 - ใ€‹y=randn(10000,1); ใ€‹hist(y,x) โ‘ฆ polar(๊ทน์ขŒํ‘œ ๊ทธ๋ž˜ํ”„) - ๊ฐ๋„์™€ ๋ฐ˜๊ฒฝ์„ ๊ฐ–๋Š” ๊ทน์ขŒํ‘œ์˜ ํ˜•ํƒœ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž๋ฃŒ์ ๋“ค์„ ์—ฐ ์†์ ์œผ๋กœ ๋‚˜ํƒ€๋‚ธ๋‹ค. ใ€‹t=0:0.01:2*pi; ใ€‹polar(t,sin(2*t).*cos(2*t)) -3 -2 -1 0 1 2 3 0 50 100 150 200 250 300 350 400 450 0.1 0.2 0.3 0.4 0.5 30 210 60 240 90 270 120 300 150 330 โ‘ง fill(๋‹ค๊ฐํ˜• ๊ทธ๋ž˜ํ”„) - ์ผ๋ฐ˜์ ์ธ ํ˜•ํƒœ์˜ ์„ (line) ๊ทธ๋ž˜ํ”„์—์„œ ์ฒซ ๋ฒˆ์งธ ์ž๋ฃŒ์ ๊ณผ ๋งˆ์ง€๋ง‰ ์ž ๋ฃŒ์ ์„ ์—ฐ๊ฒฐํ•˜์—ฌ ๋‹ค๊ฐํ˜•์„ ๋งŒ๋“  ํ›„ ๋‚ด๋ถ€๋ฅผ ์›ํ•˜๋Š” ์ƒ‰์ƒ์œผ๋กœ ์ฑ„์›Œ ์ค€๋‹ค. ใ€‹t=0:0.1:3*pi; ใ€‹x=cos(t); ใ€‹fill(t,x,'r') ใ€‹colormap(hot) ใ€‹fill(t,x,x) ใ€‹colormenu โ‘จ stairs(๊ณ„๋‹จํ˜• ๊ทธ๋ž˜ํ”„) ใ€‹x=0:0.25:10; ใ€‹stairs(x,sin(x)) 0 2 4 6 8 10 -1 -0.5 0 0.5 1 โ‘ฉ๊ธฐํƒ€ - quiver(ํ™”์‚ดํ‘œ ๊ทธ๋ž˜ํ”„), rose(์›ํ˜• ๋ง‰๋Œ€ ๊ทธ๋ž˜ํ”„)
  • 83. - 83 - 2. 3์ฐจ์› ๊ทธ๋ž˜ํ”ฝ Matlab ํ”„๋กœ๊ทธ๋žจ์—์„œ ์ œ๊ณตํ•˜๋Š” 3์ฐจ์› ๊ทธ๋ž˜ํ”„๋Š” ๊ฒฉ์ž ์ƒ์„ฑ, ๋“ฑ๊ณ ์„ , ์˜์ƒ์ฒ˜๋ฆฌ, ์€์„  ์ œ๊ฑฐ, ๋™ํ™”์ƒ๊ณผ ์ƒ‰ ์ง€์ • ๋ฐ ๊ด€์ฐฐ์ ์˜ ์ด๋™ ๋“ฑ๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ, ์ขŒํ‘œ์ถ•์ด 3๊ฐœ์ธ 3์ฐจ ์›์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋…์ž์ ์ธ ๋„ํ˜•์šฉ ํ•จ์ˆ˜๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. 3์ฐจ์› ๊ทธ๋ž˜ํ”„์—์˜ ์ถ”๊ฐ€ ์‚ฌํ•ญ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. zlabel : z์ถ•์— ๋Œ€ํ•œ ์ถ• ์ด๋ฆ„ ์ง€์ •. clabel : ์œค๊ณฝ์„ (contour) ๊ทธ๋ž˜ํ”„์˜ ๊ฒฝ์šฐ์— ๊ฐ๊ฐ์˜ ์œค๊ณฝ์„ ์— ๋Œ€ํ•œ ๊ธฐํ˜ธ๋ฅผ ๋ถ™์—ฌ ์คŒ. view : ๋ฐฉ์œ„๊ฐ๊ณผ ๊ณ ๋„๋ฅผ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ ๋ณ€ํ™˜ ํ–‰๋ ฌ์„ ์ง€์ •ํ•จ์œผ๋กœ์จ ๊ด€์ฐฐ ์œ„์น˜ ์„ค์ •. viewmtx : ์ง๊ฐ ํˆฌ์˜(orthogrphic) ๋ฐ ์›๊ทผ ํˆฌ์˜(perspective) ๋ณ€ํ™˜์— ๋Œ€ํ•˜์—ฌ 4X4์˜ ๋ณ€ ํ™˜ ํ–‰๋ ฌ ๊ณ„์‚ฐ 2.1 ์„  ๊ทธ๋ž˜ํ”„ 2์ฐจ์› ๊ทธ๋ž˜ํ”„์˜ โ€˜plot' ๋ช…๋ น์–ด์— ํ•ด๋‹นํ•˜๋Š” ๊ฒƒ์œผ๋กœ 3์ฐจ์› ๊ทธ๋ž˜ํ”„์—์„œ๋Š” โ€™plot3' ๋ช…๋ น์–ด๊ฐ€ ์žˆ ๋‹ค. โ€˜plot3(x,y,z)' ๋ช…๋ น์–ด๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ 3๊ฐœ์˜ ์š”์†Œ๋ฅผ ํ•„์š”๋กœ ํ•˜๋ฉฐ, x์™€ y์˜ ๊ฐ’์— ๋Œ€ํ•ด์„œ z์˜ ๊ฐ’์„ ๊ทธ๋ฆฌ๋Š” ๊ฒƒ์œผ๋กœ์จ, ๋ฒกํ„ฐ x, y, z ๋Œ€์‹ ์— ํ–‰๋ ฌ X, Y, Z๋ฅผ ์ง€์ •ํ•ด๋„ ๋œ๋‹ค. ํ–‰๋ ฌ์ผ ๊ฒฝ์šฐ์— ๋Š” ๋Œ€์‘ํ•˜๋Š” ์—ด๋งˆ๋‹ค ๊ทธ๋ž˜ํ”„๊ฐ€ ๊ทธ๋ ค์ง„๋‹ค. x ,y, z๊ฐ€ ์„œ๋กœ ์ฐจ์›์ด ๊ฐ™์€ ๋ฒกํ„ฐ์ผ ๊ฒฝ์šฐ, x, y, z์— ์˜ํ•˜์—ฌ ํ‘œ์‹œ๋˜๋Š” ์ ๋“ค์„ ์ง€๋‚˜๋Š” 3์ฐจ์› ๊ณต๊ฐ„ ์ƒ์˜ ์„ ์„ ๊ตฌ์„ฑํ•˜๊ฒŒ ๋œ๋‹ค. ใ€‹t=0:pi/100:5*pi; % t์˜ ์ฐจ์› - 1ร—501 ใ€‹plot3(sin(t),cos(t),t,'.r') -1 -0.5 0 0.5 1 -1 0 1 0 10 20 ๋˜ํ•œ x, y, z๊ฐ€ ์ฐจ์›์ด ๊ฐ™์€ 3๊ฐœ์˜ ํ–‰๋ ฌ์ผ ๊ฒฝ์šฐ, ๊ฐ๊ฐ ํ–‰๋ ฌ x, y, z์˜ ์—ด์˜ ์›์†Œ๋“ค์— ์˜ํ•˜ ์—ฌ ํ‘œ์‹œ๋˜๋Š” ์ ๋“ค์„ ํ†ต๊ณผํ•˜๋Š” ์„ ๋“ค์„ ๊ทธ๋ ค์ค€๋‹ค. ใ€‹x=[1 3;6 5], y=[9 0; 9 2], z=[3 5; 11 16] ใ€‹plot3(x,y,z) 1 2 3 4 5 6 0 5 10 0 5 10 15 20
  • 84. - 84 - 2.2 ๊ทธ๋ฌผ ๊ฒฉ์ž ๊ทธ๋ž˜ํ”„(mesh) x, y ํ‰๋ฉด์—์„œ์˜ ๋ˆˆ๊ธˆ ๊ฒฉ์ž(grid line)์— ๋Œ€ํ•˜์—ฌ z ์ขŒํ‘œ๋ฅผ ์ง€์ •ํ•จ์œผ๋กœ์จ 3์ฐจ์› ํ‘œ๋ฉด์œผ๋กœ ๊ตฌ์„ฑ๋˜๋Š” ๊ทธ๋ฌผ ๊ฒฉ์ž(meshgrid)๊ฐ€ ์žˆ๋Š” ๋ฉด์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ฌผ ํ‘œ๋ฉด(mesh surface)์€ ์ˆ˜ ์น˜์ ์ธ ํ˜•ํƒœ๋กœ ํ‘œํ˜„ํ•˜๊ธฐ์—๋Š” ๋„ˆ๋ฌด ํฐ ํ–‰๋ ฌ์„ ๋‚˜ํƒ€๋‚ด๊ฑฐ๋‚˜, ๋‘ ๊ฐœ์˜ ๋ณ€์ˆ˜๋กœ ๊ตฌ์„ฑ๋œ ํ•จ์ˆ˜๋ฅผ ๊ทธ ๋ž˜ํ”„๋กœ ๋‚˜ํƒ€๋‚ด๋Š”๋ฐ ์œ ์šฉํ•˜๋‹ค. 'meshgrid' ๋ช…๋ น์–ด์˜ ์‚ฌ์šฉ๋ฒ•์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค. [X, Y]=meshgrid(x,y) ์ด๊ฒƒ์€, ๋‘ ๋ฒกํ„ฐ x์™€ y์— ์˜ํ•˜์—ฌ ์ง€์ •๋œ ์ •์˜์—ญ์„ ํ–‰๋ ฌ X, Y๋กœ ๋ณ€ํ™˜ํ•˜๊ณ  ํ•˜๋Š”๋ฐ, ์ด๋•Œ ํ–‰๋ ฌ X์˜ ํ–‰์€ ๋ฒกํ„ฐ x์™€ ๊ฐ™๊ณ  ํ–‰๋ ฌ Y์˜ ์—ด์€ ๋ฒกํ„ฐ y์™€ ๊ฐ™๋‹ค. ์•„๋ž˜์˜ ์˜ˆ๋Š” meshgrid๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ทธ๋ฌผ๊ฒฉ์ž ๊ทธ๋ž˜ํ”„๋ฅผ ๋„์‹œํ•œ ๊ฒƒ์ด๋‹ค.(๋ฉ•๊ณ  ๋ชจ์ž, sombrero) ใ€‹x=-10:.5:10; ใ€‹y=x; ใ€‹[X,Y]=meshgrid(x,y); ใ€‹r=sqrt(X.^2+Y.^2)+eps; % eps : Z๋ฅผ ๊ตฌํ•  ๋•Œ ๋ถ„๋ชจ์˜ r๊ฐ’์œผ๋กœ ์ธํ•˜์—ฌ ๋ถˆ๋Šฅ(NaN)์ธ ใ€‹Z=sin(r)./r; % ๊ฒฝ์šฐ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ํ•œ๋‹ค. ใ€‹mesh(Z) ์œ„์˜ ํ”„๋กœ๊ทธ๋žจ์— ์•„๋ž˜์™€ ๊ฐ™์ด, 5๊ฐœ์˜ ์›์†Œ๋ฅผ ๊ฐ–๋Š” x๋ฅผ ๊ฐ€์ง€๊ณ  ์˜ˆ๋ฅผ ๋“ค์–ด ๋ณด์•˜๋‹ค. x = -2 -1 0 1 2 y = -2 -1 0 1 2 X = -2 -1 0 1 2 -2 -1 0 1 2 -2 -1 0 1 2 -2 -1 0 1 2 -2 -1 0 1 2 Y = -2 -2 -2 -2 -2
  • 85. - 85 - -1 -1 -1 -1 -1 0 0 0 0 0 1 1 1 1 1 2 2 2 2 2 r = 2.8284 2.2361 2.0000 2.2361 2.8284 2.2361 1.4142 1.0000 1.4142 2.2361 2.0000 1.0000 0.0000 1.0000 2.0000 2.2361 1.4142 1.0000 1.4142 2.2361 2.8284 2.2361 2.0000 2.2361 2.8284 z = 0.1089 0.3518 0.4546 0.3518 0.1089 0.3518 0.6985 0.8415 0.6985 0.3518 0.4546 0.8415 1.0000 0.8415 0.4546 0.35 18 0.6985 0.8415 0.6985 0.3518 0.1089 0.3518 0.4546 0.3518 0.1089 <plot3_test1.m> clear all m=4;n=6; for i=1:m for j=1:n z(i,j)=j/i; end end mesh(z) 1 2 3 4 5 6 1 2 3 4 0 1 2 3 4 5 6 2.3 ์€์„  ์ œ๊ฑฐ Matlab ํ”„๋กœ๊ทธ๋žจ์—์„œ๋Š” 3์ฐจ์› ๋„ํ˜•์˜ ๊ทธ๋ฌผ ๊ฒฉ์ž์— ๋Œ€ํ•œ ์€์„ (hidden)์„ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด์„œ โ€˜hidden' ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์ด ๋ช…๋ น์–ด๋Š” โ€™hidden on'๊ณผ โ€˜hidden off'์™€ ๊ฐ™์ด ํ† ๊ธ€ ๋ฐฉ์‹์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š”๋ฐ โ€™hidden off'๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ทธ๋ฌผ ๊ฒฉ์ž๋ฅผ ํˆฌ๊ณผํ•ด์„œ ๋‹ค๋ฅธ ๊ทธ๋ž˜ํ”„์˜ ํ˜•์ƒ์„ ๊ด€์ฐฐํ•  ์ˆ˜ ์žˆ๋‹ค. ใ€‹mesh(peaks+5) ใ€‹hold on ใ€‹hidden on
  • 86. - 86 - ใ€‹mesh(peaks) ใ€‹hold off ใ€‹hidden off Hidden On Hidden Off 2.4 ํ‘œ๋ฉด ๊ทธ๋ž˜ํ”„(surf ) โ€˜mesh'๊ฐ€ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฉด์—์„œ ์ƒ‰์ƒ์„ ๊ฐ€์ง€์ง€ ์•Š๋Š” ๋ฐ˜๋ฉด, โ€˜surf'๋Š” ์ƒ‰์ƒ์ด ์ง€์ •๋œ ํ‰ ๋ฉด(facet)๋“ค๋กœ ๊ตฌ์„ฑ๋œ ํ‘œ๋ฉด์„ ์›๊ทผ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ณด์—ฌ์ค€๋‹ค. ๋Œ€๊ฐœ ์ด๋Ÿฌํ•œ ์ž‘์€ ํ‰๋ฉด๋“ค(facets) ์€ ๊ฒ€์€ ์ƒ‰์˜ ๊ทธ๋ฌผ ๊ฒฉ์ž๋กœ ์™ธ๊ณฝ์„ ์„ ๋‘๋ฅธ ์ผ์ •ํ•œ ์ƒ‰์ƒ์˜ ์‚ฌ๊ฐํ˜•๋“ค์ด์ง€๋งŒ 'shading' ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ทธ๋ฌผ ๊ฒฉ์ž๋ฅผ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ž‘์€ ํ‰๋ฉด๋“ค ์‚ฌ์ด์—๋„ ๋‘ ์ƒ‰์ƒ๊ฐ„์˜ ๋‚ด์‚ฝ (interpolation)์— ์˜ํ•œ ๋ฌ˜์˜๋ฒ•์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. โ€™ ใ€‹surf(peaks(25)) ใ€‹shading flat ใ€‹shading interp flat interp
  • 87. - 87 - 2.5 ์œค๊ณฝ์„  ๊ทธ๋ž˜ํ”„(contour, contour3) ์œค๊ณฝ์„ (contour)์˜ ํ˜•ํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ํ–‰๋ ฌ ์ž…๋ ฅ์œผ๋กœ๋ถ€ํ„ฐ ๊ฐ’์ด ๊ฐ™์€ ์ ๋“ค์„ ์—ฐ๊ฒฐํ•˜๋Š” ์„ ์„ ๊ทธ๋ ค์ค€๋‹ค. 2์ฐจ์› ์œค๊ณฝ์„  ๊ทธ๋ž˜ํ”„๋Š” 'contour' ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , 3์ฐจ์› ์œค๊ณฝ ์„  ๊ทธ๋ž˜ํ”„๋Š” โ€˜contour3' ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์•„๋ž˜์˜ ์˜ˆ๋Š” 'peaks' ํ•จ์ˆ˜์— ์˜ํ•˜์—ฌ ๊ตฌ์„ฑ๋œ ํ–‰๋ ฌ์— ๋Œ€ํ•˜์—ฌ 15๊ฐœ์˜ ์œค๊ณฝ์„ ์„ ๊ฐ–๋Š” ๊ทธ๋ž˜ํ”„ ๋ฅผ 2์ฐจ์›๊ณผ 3์ฐจ์›์œผ๋กœ ๊ทธ๋ฆฐ ๊ฒƒ์ด๋‹ค. ใ€‹contour(peaks,15) ใ€‹contour3(peaks,15) 5 10 15 20 25 30 35 40 45 5 10 15 20 25 30 35 40 45 10 20 30 40 10 20 30 40 -10 -5 0 5 10 2.6 'surf'์™€ 'mesh'์˜ ๋ณ€ํ˜•๋“ค ใ€‹surfc(peaks(25)) % 2์ฐจ์› contour ํฌํ•จ ใ€‹meshc(peaks(25)) % 2์ฐจ์› contour ํฌํ•จ ใ€‹surfl(peaks(25),[-15 45]) % ๋ช…์•”์„ ๊ฐ–๋Š” ํ‘œ๋ฉด ํ‘œํ˜„(๋ฐฉ์œ„๊ฐ -15๋„, ๊ณ ๋„ 45๋„) 2.7 ๊ด€์ฐฐ์ (View Point) 3์ฐจ์› ๊ทธ๋ž˜ํ”„์˜ ๊ด€์ฐฐ ๋ฐฉํ–ฅ์„ ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ๊ฒฝ์šฐ์— ์–ด๋– ํ•œ ๊ด€์ฐฐ์ ์—์„œ ๊ทธ๋ž˜ํ”„์˜ ํ˜•์ƒ์„ ๊ด€์ฐฐํ•˜๋„๋ก ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด์™€ ๊ฐ™์€ ๊ฒƒ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์œผ๋กœ โ€˜view' ๋ช…๋ น์–ด๊ฐ€ ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ โ€™view' ๋ช…๋ น์–ด์— ๋Œ€ํ•œ ์ผ๋ฐ˜์ ์ธ ํ˜•ํƒœ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. view(azimuth, elevation) ์—ฌ๊ธฐ์„œ ๋ฐฉ์œ„๊ฐ(azimuth)์€ ๋ฐ˜์‹œ๊ณ„ ๋ฐฉํ–ฅ์œผ๋กœ ์–‘์˜ ๊ฐ’์„ ๊ฐ–๊ณ , ๊ณ ๋„(elevation)๋Š” x, y ํ‰๋ฉด ์˜ ์œ„์ชฝ์ด ์–‘์ด ๋˜๊ณ  ์•„๋ž˜์ชฝ์ด ์Œ์ด ๋œ๋‹ค.
  • 88. - 88 - z viewpoint x y elevation azimuth origin ใ€‹colormap(hsv) ใ€‹subplot(221), surf(peaks(25)), view(-45,45) ใ€‹subplot(222), surf(peaks(25)), view(-10,60) ใ€‹subplot(223), surf(peaks(25)), view(-90,0) ใ€‹subplot(224), surf(peaks(25)), view(-10,-15) 3. Handle Graphics Mathworks์‚ฌ์—์„œ๋Š” matlab์—์„œ ์ด์šฉ๋˜๋Š” ๊ทธ๋ž˜ํ”„๋“ค์˜ ์ฒด๊ณ„๋ฅผ ์œ„ํ•ด 'Handle Graphics System'์ด๋ผ๋Š” ์ƒˆ๋กœ์šด ์šฉ์–ด๋ฅผ ๋งŒ๋“ค์–ด ๋ƒˆ๋‹ค. ๋˜ํ•œ ์ปดํ“จํ„ฐ screen์„ ํฌํ•จํ•œ ๊ฐœ๊ฐœ์˜ ๋ชจ๋“  ๊ทธ๋ฆผ ์ฐฝ(figure window)๋“ค๊ณผ ์ขŒํ‘œ์ถ•๋“ค ๊ทธ๋ฆฌ๊ณ  patch(๊ทธ๋ฆผ ์„ฑ๋ถ„)๋“ค์€ โ€˜graphics object'๋ผ๊ณ  ๋ถ€๋ฅธ ๋‹ค. ์•ž์œผ๋กœ ๋ฐฐ์šธ line, text, image, user interface controls, ๊ทธ๋ฆฌ๊ณ  user interface pulldown menus ๋“ฑ๋“ฑ์€ ๋ชจ๋‘ โ€™graphics object'์ด๋‹ค. โ€˜Graphics object'๋Š” ๋ชจ๋‘ 9๊ฐ€์ง€๋กœ ๋ถ„๋ฅ˜๋˜๋Š”๋ฐ, Handle graphics system์—์„œ ๋ณต์žกํ•œ ๊ทธ๋ฆผ ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ์„ฑ๋ถ„๋“ค์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. figure object line object axes object
  • 89. - 89 - patch object surface object text object image object uicontrol object uimenu ojbect โ‘  Matlab ๊ทธ๋ž˜ํ”„๋“ค์€ ๊ฐ์ฒด๋“ค์˜ ์กฐํ•ฉ์œผ๋กœ ๋งŒ๋“ค์–ด์ง„๋‹ค. โ‘ก ๊ฐ์ฒด๋“ค์€ ๊ณ„์ธต๋„์— ์˜ํ•ด ๋ถ„๋ฅ˜๋œ๋‹ค. โ‘ข ์ƒ์œ„๊ฐ์ฒด๋Š” ํ•˜์œ„ ๊ฐ์ฒด๋“ค์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ•˜์œ„ ๊ฐ์ฒด๋Š” ์ƒ์œ„ ๊ฐ์ฒด์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ๋ชปํ•œ๋‹ค. โ‘ฃ ๊ฐ์ฒด๋“ค์€ ๊ฐ™์€ level์˜ ๊ฐ์ฒด๋“ค์„ ์†Œ์œ ํ•  ์ˆ˜ ์—†๋‹ค. 1) Handle Graphics ๊ฐ๊ฐ์˜ matlab ๊ทธ๋ž˜ํ”„ ํ•จ์ˆ˜๋Š” ๊ฐ์ฒด๋“ค์„ ์ œ์–ด ํ•  ์ˆ˜ ์žˆ๋„๋ก, ์ƒˆ๋กœ ๋งŒ๋“ค์–ด์ง€๋Š” ๊ฐ์ฒด๋งˆ๋‹ค ๊ณ  ์œ ํ•œ ์ˆซ์ž๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์ด๋“ค ๊ณ ์œ ํ•œ ์ˆซ์ž๋“ค์„ handle์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. handle์€ ๋ณดํ†ต figure object์ธ ๊ฒฝ์šฐ์—๋Š” ์–‘์˜ ์ •์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , ๋‹ค๋ฅธ ํ•˜์œ„ level์—์„œ๋Š” ๋ถ€๋™์†Œ์ˆ˜์ (floating point number)์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ใ€‹h_fig=figure h_fig = 1 ใ€‹h_fig=figure(3);
  • 90. - 90 - ์ผ๋‹จ, handle value๊ฐ€ ํ• ๋‹น๋œ ๊ฐ์ฒด๋Š” ์ž์‹ ์˜ handle value๋ฅผ ๋ฐ”๊ฟ€ ์ˆ˜ ์—†์œผ๋ฉฐ, ํ•ด๋‹น ๊ฐ์ฒด๊ฐ€ ์‚ฌ๋ผ์งˆ ๋•Œ๊นŒ์ง€ handle value๋Š” ๋ณด์กด๋œ๋‹ค. ๋˜ํ•œ, ๊ฐ™์€ ์ข…๋ฅ˜์˜ ๊ฐ์ฒด๋ผ๋„ handle value๋Š” ์„œ๋กœ ๋‹ค๋ฅด๋‹ค. ๊ทธ๋ž˜์•ผ๋งŒ, ๊ฐ๊ฐ์˜ ๊ฐ์ฒด๋ฅผ ๋…๋ฆฝ์ ์œผ๋กœ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ทธ๋Ÿฌ๋‚˜, root object ๋Š” ์œ ์ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— handle value๋Š” โ€˜0โ€™์˜ ๊ฐ’์„ ๊ฐ–๋Š”๋‹ค. โ€˜set.m' ํ•จ์ˆ˜๋Š” handle์„ ์ด์šฉํ•˜์—ฌ ๊ฐ๊ฐ์˜ ๊ฐ์ฒด ์„ฑ์งˆ(propertyname)์„ ์กฐ์ •ํ•ด์ฃผ๊ณ  โ€™get.m' ํ•จ์ˆ˜๋Š” ํ•ด๋‹น ๊ฐ์ฒด์˜ ์„ฑ์งˆ์— ํ• ๋‹น๋œ ๊ฐ’(propertyvalue)์„ ์–ป๊ฒŒ ํ•ด์ฃผ๋Š” ํ•จ์ˆ˜์ด๋‹ค. ใ€‹set(handle, propertyname, propertyvalue) ใ€‹propertyvalue=get(handle, propertyname) ใ€‹close all ใ€‹h_fig1=figure(1); ใ€‹set(h_fig1,'numbertitleโ€˜,'off','name','USER') numbertitle, name : ์ฃผ์–ด์ง„ figure์˜ propertyname off, USER : ์ฃผ์–ด์ง„ figure์˜ property value ๋งŒ์ผ handle์ด h_fig1์ธ figure์˜ ํฌ๊ธฐ๋ฅผ ์•Œ๊ณ  ์‹ถ๋‹ค๋ฉด, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•˜๋ฉด ๋œ๋‹ค. ใ€‹h_size=get(h_fig1,'position') h_size = 360 808 291 126 ใ€‹set(h_fig1) BackingStore: [ {on} | off ] CloseRequestFcn Color Colormap CurrentAxes CurrentObject CurrentPoint Dithermap DithermapMode: [ auto | {manual} ] DoubleBuffer: [ on | {off} ] FileName IntegerHandle: [ {on} | off ] InvertHardcopy: [ {on} | off ] KeyPressFcn MenuBar: [ none | {figure} ] MinColormap :
  • 91. - 91 - : : ButtonDownFcn Children Clipping: [ {on} | off ] CreateFcn DeleteFcn BusyAction: [ {queue} | cancel ] HandleVisibility: [ {on} | callback | off ] HitTest: [ {on} | off ] Interruptible: [ {on} | off ] Parent Selected: [ on | off ] SelectionHighlight: [ {on} | off ] Tag UIContextMenu UserData Visible: [ {on} | off ] ใ€‹get(h_fig1); 2) Low_level functions Low_level functions๋Š” ๊ฐ์ฒด(object) ์ง€ํ–ฅ์ ์ธ matlab์˜ graphics ์ฒด๊ณ„๋ฅผ ์˜๋ฏธํ•˜๋Š”๋ฐ, ์ด๋“ค low_level graphic functions๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ชจ๋“  high_level graphic functions๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์œผ ๋ฉฐ, ๋˜ํ•œ, ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ๋‹ค๋ฅธ graphic functions๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. โ‘  Root Object Root object์— ํ•ด๋‹นํ•˜๋Š” ์ง์ ‘์ ์ธ ํ•จ์ˆ˜๋Š” ์—†๋‹ค. ๋˜ํ•œ, ๋‹ค๋ฅธ low_level functions๋ณด๋‹ค ์ƒ๋‹น ํžˆ ์ ์€ propertyname/propertyvalue pairs๋ฅผ ๊ฐ–๋Š”๋ฐ, matlab command window์—์„œ๋„ โ€˜set.m', 'get.m' ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ ์ง์ ‘ ํ™•์ธ ํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ใ€‹set(0) ์œ„์™€ ๊ฐ™์ด ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋ฉด root object์— ๋Œ€ํ•œ ์ž๋ฃŒ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. Diary : [ on | off ] ShowHiddenHandles : [ on | {off} ] '[ ]'์€ ํ•ด๋‹น propertyname(์—ฌ๊ธฐ์„œ๋Š” diary์™€ showhiddenhandles์„ ์˜๋ฏธํ•œ๋‹ค.)์—์„œ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ง€์ •์–ด (์ฆ‰, property value)์ด๋‹ค. ๋‹ค์‹œ ๋งํ•ด์„œ, ํ•ด๋‹น propertyname์„ ์ œ์–ด ํ•  ์ˆ˜ ์žˆ ๋Š” ์ง€์ •์–ด๋กœ์„œ ๋‹ค๋ฅธ ๋น„์Šทํ•œ ์šฉ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ๋˜๊ณ , ๋ฐ˜๋“œ์‹œ ์ง€์ •ํ•ด์ค€ โ€˜on, off'๋งŒ ์‚ฌ์šฉํ•˜์—ฌ ์•ผ ํ•œ๋‹ค. { }๋Š” default propertyvalue๋ฅผ ์˜๋ฏธํ•˜๋Š”๋ฐ matlab์ด ์ž๋™์œผ๋กœ propertyvalue๋ฅผ ์„ค ์ •ํ•œ ๊ฒฝ์šฐ๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ์ด๊ฒƒ์€ โ€™set.m' ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด์„œ โ€˜default propertyvalue'๋ฅผ ๋ฐ”๊ฟ€ ์ˆ˜๋„ ์žˆ๋‹ค. ใ€‹get(0,'units') ans = pixels ใ€‹set(0,'units','nor') ใ€‹get(0,'units')