SturdyCobble's Study Note

[MATLAB] 01. MATLAB의 기본 명령어와 변수 본문

프로그래밍/MATLAB

[MATLAB] 01. MATLAB의 기본 명령어와 변수

StudyingCobble 2019. 7. 29. 11:21

NOTICE : 독학인 만큼, 잘못된 내용이 있을 수 있습니다. 내용 지적은 언제나 환영합니다.

더 이상 이 블로그에는 글을 올리지는 않을 예정입니다. 그렇지만 댓글을 달아주시면 최대한 답변드리고자 노력하겠습니다.


※ 이 글은 최소한 Python과 같은 프로그래밍 언어를 한 번 이상 접한 사람을 독자로 가정하여 작성되었습니다. 사용버전은 R2019a기준입니다. 또한 기본적인 프로그램 조작보다는 프로그래밍에 초점을 맞추어 작성하였습니다.

 

(MATLAB 설치 관련 사항은 생략하겠습니다.)

 

MATLAB 소프트웨어를 실행하면 나오는 화면입니다. 

MATLAB에서는 스크립트를 만들어서 편집기에서 작업한 뒤(filename.m 형식으로 저장됨), 상단 편집기 탭에서 '실행'(F5)를 눌러서 코드를 실행할 수도 있으며, 아니면 명령창에서 대화형으로 실행하는 것도 가능합니다. 결과는 (현재 상황에선) 명령창에 표시됨을 확인할 수 있으며, 두 창은 연결되어 있다고 할 수 있습니다. (명령 창에서 스크립트의 변수를 참조한다 던지의 행동을 할수 있습니다.)

 

일단 기본적인 명령부터 알아보겠습니다. 사실 많은 명령이 있지만, 아래와 같은 기본 명령들이 있습니다. 참고로 일반적인 MATLAB 명령에는 세미콜론과 같은 종결 부호가 없습니다.

(MATLAB 공식 문서(https://kr.mathworks.com/help/matlab/getting-started-with-matlab.html?s_tid=CRUX_lftnav)를 참고하여 작성하였습니다.)

함수 설명 예시
ans 가장 최근에 계산한 답(answer) (명령창에서)
≫1+2
ans =
         3
≫ans
ans = 
         3
(≫ 뒤의 내용은 입력임)
clc 명령창 글자 모두 지우기(clear command window) clc
diary 명령창 텍스트 저장 (이후 따로 설명)
format 명령창 출력 형식 (이후 따로 설명)
home 커서를 명령창 좌상단으로 home
iskeyword 기본 키워드인지 확인 (명령창에서)
≫iskeyword('while')
ans = 
    logical
     1
(logical 1은 TRUE를 나타냄)
more --more-- 표시 설정
(출력 내용이 너무 긴 경우 일부만 표시하고 --more--을 표시해 Enter를 눌러 차례로 한줄씩 확인하게 함)
more on : 더보기 활성화
more off : 더보기 비활성화
more(10) : 10줄만 표시하고 더보기 표시
commandwindow 명령창으로 이동 commandwindow
commandhistory 명령 내역 창 표시 commandhistory
save 저장(작업 공간 내 모든 변수) save myFile.mat
edit 편집(없으면 생성 및 편집) edit myFile.m
(파일명 생략시 Untitled)
load 불러오기 load myFile.mat
chdir 디렉토리 변경 chdir 폴더
mkdir 디렉토리 생성 mkdir 폴더
type 내용(코드) 표시

type 함수
함수 코드 표시

type 파일명
파일 내용 표시


diary명령어에 대해 부가 설명을 하자면, 명령창에 표시된 문자들을 파일로 저장합니다. 다만, 글꼴과 같은 사항이나 하이퍼링크 정보를 일반 텍스트로 표시합니다. 사용 방법은 다음과 같습니다.

 

diary
diary 파일이름
diary off
diary on

첫번째 줄은 diary기능을 끄고 키는 명령어이며, 3,4번째 줄과 같이 명확하게 명시할 수도 있습니다. "diary 파일이름"과 같이하여 파일 이름을 지정할 수도 있습니다.('파일이름' 자리에 원하는 파일이름을 쓰면 됩니다. 한글도 가능한 것같습니다.) 현재 로그 기록 여부나 로그 파일 이름은 각각 아래 코드의 첫번째 줄과 두번째 줄로 얻을 수 있습니다.

 

get(0,'Diary')
get(0,'DiaryFile')

 

로그를 표시하려면 type함수를 이용하면 됩니다.

 

type 다이어리파일이름

 

format 함수 (지금부터는 명령어 대신 '함수'로 표시하겠습니다)는 출력 형식을 지정합니다. 특정 스타일을 지정하려면 아래 코드의 첫번째 줄을, 기본 사항으로 되돌리려면 두번째 줄을 사용하면 됩니다.

 

format 스타일
format

 

위 코드의 '스타일'자리에 들어가는 내용은 공식 문서(https://kr.mathworks.com/help/matlab/ref/format.html)를 참고하시는 것을 추천드립니다.

 

 

이제 기본적인 변수나 내장 함수를 사용하는 방법을 알아보겠습니다. 변수를 사용하는 방식은 Python과 비슷합니다.

a = 10
a = 20

위 코드에서 첫번째 줄은 a를 선언하여 10으로 초기화하는 내용이며, 두번째 줄은 이미 존재하는 변수 a에 20을 대입하는 식입니다. 그 외 기본적인 사칙연산이 MATLAB에 존재합니다. 그리고 따옴표로 둘러싸인 문자열 자료형이 숫자 자료형과 함께 존재합니다. 따로 변수에 자료형이 존재하지는 않습니다. (단, 함수가 받는 인수에는 자료형이 요구될 수 있습니다.)

 

변수에 저장된 값이나, 함수의 연산 결과를 따로 표시하고 싶다면 아래의 disp함수를 이용합니다.

 

--------------스크립트-------------
a = 100
disp(a)

--------------출력 결과------------
a =

    100

    100
----------------------------------

 

변수 이름은 문자로 시작해 문자, 숫자, 언더바를 섞어서 만들 수 있으며, MATLAB은 기본적으로 대소문자를 구분합니다. 키워드는 사용 불가능하며, 이미 사용된 함수 이름을 변수 이름으로 하는 경우 이후 충돌이 생길 수 있으니 지양하는 것이 좋습니다. exist나 which 함수로 해당 변수의 존재 여부를 확인할 수 있습니다.

 

exist 조사할변수이름

 

또한, 작업 공간에 선언된 변수들을 알아보기 위해선 whos 함수를 쓸 수 있으며, 아래와 같이 특정 변수만을 조사하는 것도 가능합니다.

 

whos
------------OR-----------
whos 변수이름

 

만약 변수 이름이 기존 함수 이름과 겹쳐 문제가 생긴 경우 clear 함수를 쓸 수 있습니다.

 

clear 변수이름

(이름 생략시 전체 초기화)

 

MATLAB에 유의해야할 점은 아래와 같이 명령 구문(Command Syntax)와 함수 구문(Function Syntax)가 존재하며 아래 두 표현이 서로 동일하다는 점입니다.

 

exist varname
exist ('varname')

 

따옴표로 둘러싸인 부분은 문자열입니다. 즉, 첫번째 줄이 주어졌을 때, 2,3,4번째 줄은 서로 동일한 결과를 나타냅니다.

 

var1 = 'var2'
exist var2
exist(var1)
exist('var2')

 

또한, 여러개 문자열을 인수로 받는 경우 다음 두 식은 동일합니다.(func01이란 가상의 함수를 가정했습니다.)

func01 ar1 ar2 ar3
func01('ar1','ar2','ar3')

 

명령 구문을 사용하다보면 모호한 지점이 발생할 수 있는데, 이 부분에 대해 더 확인하고 싶다면, 공식문서(https://kr.mathworks.com/help/matlab/matlab_prog/command-vs-function-syntax.html)를 참고해보세요.

 

 

 MATLAB에서는 변수 이름만 쓰는 것 자체로 변수의 값을 표시할 수 있지만, 때로는 함수를 호출될 때마다 값이 표시되어 불편할 수 있습니다. 세미콜론은 MATLAB에서 값이 표시되지 않게 하는 기능을 가집니다. 아래 코드를 참고해보세요.

 

a = 10;
b = 10

---------------실행 결과--------------
b = 
    
    10

 

명시되지는 않지만 a라는 변수에는 10이 대입되게 됩니다.

 

 만약 긴 명령문을 입력하는 경우 말줄임표를 이용하여 줄을 분리하면 됩니다.

P = [1 2 3 4 5 6 ...
     7 8 9]

 

 

참고로 MATLAB스타일 주석은 다음과 같습니다.

% 이 줄은 주석 처리 됩니다.
%{
여러 줄 주석은 위와 같이 하면 되는데, 시작, 끝 표시는 단독으로 사용되어야 합니다.
%}

또는 영역을 선택한 뒤 Ctrl+R로 주석 처리하고, Ctrl+T로 해제할 수 있습니다.

 

다음 글부터 본격적으로 예제를 통해 MATLAB을 다뤄보겠습니다.

Comments