[MATLAB 기초 문법] 1. 기초 환경, 데이터 타입

YUN·2026년 2월 15일

MATLAB/Simulink

목록 보기
4/21
post-thumbnail

1. MATLAB 화면 구성

  • 1 : 현재 폴더 : 현재 작업 디렉토리의 파일 탐색
  • 2 : Editor : .m 스크립트 파일 작성 & 저장 후 실행
  • 3 : Command Window : 명령어 한 줄씩 바로 실행
  • 4 : Workspace : 현재 메모리에 있는 변수 목록/크기/타입 표시

2. 스크립트 파일(.m)

% 파일명: my_first_script.m
% Editor에서 작성 → Ctrl+S 저장 → F5 또는 Run 버튼으로 실행

disp('Hello MATLAB!')   % 문자열 출력
x = 10;                 % 변수 할당
y = 20;
z = x + y               % 세미콜론 없으면 결과 출력됨

//실행 결과는 아래와 같다

Hello MATLAB!
z =
    30

3. 초기화 코드

이전 실행의 찌꺼기(변수, 그래프)로 결과가 꼬이는 것을 방지하기위해 Command Window, Workspace, figure 등 각종 창을 초기화하는 코드

clc          % Command Window 화면 깨끗하게 지움
clear        % Workspace의 모든 변수 삭제
close all    % 열려있는 모든 figure(그래프) 창 닫기

4. 세미콜론(;) — 출력 억제

스크립트 파일이나 command window에서 ;를 붙이면 연산 결과를 출력을 막을 수 있다

보통 중간 계산은 ; 붙여서 결과 확인 생략하고, 확인하고 싶은 최종 결과만 ; 를 빼서 결과를 확인한다.

5. 주석

주석에는 한 줄 주석블럭 주석이 존재한다.

% 이것은 한 줄 주석입니다

%{
이것은
블록 주석입니다
여러 줄을 한 번에 주석 처리할 수 있습니다
%}

x = 10;  % 코드 뒤에도 주석 가능

단축키: 마우스 드래그로 여러 줄 선택 → Ctrl + R (주석) / Ctrl + T (주석 해제)

6. 자주 사용하는 기본 명령어

help sin        % sin 함수 간단한 도움말
doc sin         % sin 함수 상세 문서 (브라우저 열림)
who             % 현재 변수 이름 목록
whos            % 현재 변수 이름 + 크기 + 타입 (상세)
pwd             % 현재 작업 디렉토리 확인
cd 'C:\path'    % 디렉토리 이동

7. 변수 선언

MATLAB은 C/C++과 달리 자료형 명시 없이 변수에 값을 바로 할당한다.

x = 10;           % 자동으로 double (64비트 실수)
name = 'Jaeyun';  % 문자 배열 (char)
flag = true;      % 논리형 (logical)

% C++:  int x = 10;      ← 타입 명시 필요
% MATLAB: x = 10;        ← 알아서 double로 됨

8. 자료형

(1) 기본 자료형

% ── 숫자 (기본은 전부 double) ──
a = 42;           % double (64비트 부동소수점) ← 기본!
b = 3.14;         % double
c = single(3.14); % single (32비트 부동소수점)
d = int32(42);    % 32비트 정수
e = uint8(255);   % 8비트 부호 없는 정수 (0~255)

% ── 논리형 ──
f = true;         % logical (1)
g = false;        % logical (0)

% ── 문자/문자열 ──
h = 'hello';      % 문자 배열 (char) — 작은따옴표
i = "hello";      % 문자열 (string) — 큰따옴표

참고로 MATLAB에서 숫자를 쓰면 그게 정수든, 소수든 기본이 무조건 double 이다.

(2) 특수 상수

pi          % 3.141592653589793...  원주율
inf         % Infinity              무한대
-inf        % -Infinity             음의 무한대
NaN         % Not a Number          0/0 같은 정의 불가
eps         % 2.2204e-16            double 최소 정밀도
i           % 허수 단위 (√-1)
j           % 허수 단위 (i와 동일)

% 사용 예시
1/0          % inf
0/0          % NaN
log(0)       % -inf

% 허수
z = 3 + 4i;     % 복소수 3 + 4i
real(z)         % 3
imag(z)         % 4
abs(z)          % 5 (크기)
angle(z)        % 0.9273 (위상, 라디안)

(3) 형 변환

% 숫자 → 다른 숫자
x = 3.7;
int32(x)          % 4       (반올림)
uint8(x)          % 4
single(x)         % single 3.7000

% 숫자 ↔ 문자열
num2str(42)       % '42'    (숫자 → 문자)
str2double('3.14') % 3.14   (문자 → 숫자)

% 논리 변환
logical(0)        % false
logical(5)        % true    (0이 아니면 전부 true)
double(true)      % 1

9. 연산자

(1) 산술 연산자

a = 10; b = 3;

a + b       % 13       덧셈
a - b       % 7        뺄셈
a * b       % 30       곱셈
a / b       % 3.3333   나눗셈
a \ b       % 0.3000   역나눗셈 (b/a와 동일)
a ^ b       % 1000     거듭제곱 (10³)
mod(a, b)   % 1        나머지 (C의 % 연산)
rem(a, b)   % 1        나머지 (mod와 거의 동일)

(2) 요소별 연산(Element-wise)

MATLAB 연산의 핵심으로, 행렬/벡터에서 각 원소끼리 연산시키는 연산자

A = [1 2 3];
B = [4 5 6];

% ── 행렬 연산 vs 요소별 연산 ──
A * B       % ❌ 에러! (1x3) * (1x3) 이라 '앞에꺼의 열'과 '뒤에꺼의 행'이 다름 -> 행렬곱 불가
A .* B      % ✅ [4 10 18]  각 원소끼리 곱이라 가능

A / B       % 행렬 나눗셈 (복잡한 의미)
A ./ B      % [0.25  0.4  0.5]  각 원소끼리 나눗셈

A ^ 2       % ❌ 에러! (A * A는 '앞에꺼의 열'과 '뒤에꺼의 행'이 다름 -> 정사각 행렬만 행렬 제곱 가능)
A .^ 2      % ✅ [1 4 9]  각 원소를 제곱

정리:
  *   행렬곱          .*  요소별 곱
  /   행렬 나눗셈      ./  요소별 나눗셈
  ^   행렬 거듭제곱    .^  요소별 거듭제곱

  +, - 는 원래 요소별이라 점(.) 필요 없음!

외우는 법: 점(.)을 찍으면 원소 하나하나씩 연산한다!

(3) 비교 연산자

a = 5; b = 3;

a == b      % false (0)    같다
a ~= b      % true  (1)    다르다  ← C++의 != 가 아니라 ~= !!
a > b       % true  (1)
a < b       % false (0)
a >= b      % true  (1)
a <= b      % false (0)

⚠️ C/C++과 다른 점: 같지 않다가 !=이 아니라 ~= 이다.

(4) 논리 연산자

% ── 요소별 (벡터/행렬용) ──
A & B       % AND (요소별)
A | B       % OR  (요소별)
~A          % NOT (요소별)
xor(A, B)   % XOR (요소별)

% ── 단축 평가 (스칼라용, if문에서 사용) ──
a && b      % AND (왼쪽이 false면 오른쪽 안 봄)
a || b      % OR  (왼쪽이 true면 오른쪽 안 봄)

% 예시
x = [1 0 1 0];
y = [1 1 0 0];

x & y       % [1 0 0 0]
x | y       % [1 1 1 0]
~x          % [0 1 0 1]

% if문에서는 && || 사용
if (a > 0) && (b > 0)
    disp('둘 다 양수')
end

(5) 연산자 우선 순위

높음  ──────────────────────────  낮음

 ()  →  .^  →  ~  →  * / .* ./  →  + -
     →  < > <= >= == ~=
     →  &  →  |  →  &&  →  ||
profile
안녕하세요. 전자공학부 학부생의 공부 기록입니다.

0개의 댓글