EN KO
OS:

💻 기본 및 환경

⌨️ 기본 명령어

clc 명령 창 지우기
clear 워크스페이스의 모든 변수 지우기
clear x 특정 변수 지우기
close all 모든 그림 창 닫기
who / whos 변수 목록 / 상세 정보와 함께
help func 함수 도움말 보기
doc func 문서 열기
pwd 현재 디렉토리
cd path 디렉토리 변경
ls / dir 파일 목록
addpath(folder) 폴더를 경로에 추가
save file.mat 워크스페이스를 파일로 저장
load file.mat 파일에서 워크스페이스 로드

🎯 에디터 단축키

F5 스크립트 실행
F9 선택한 코드 실행
Ctrl + C 실행 중단
Ctrl + Enter 현재 섹션 실행
Ctrl + R 선택 영역 주석 처리
Ctrl + T 주석 해제
Ctrl + I 스마트 들여쓰기
Ctrl + D 선택한 함수 열기
Ctrl + F 찾기
Ctrl + H 찾기 및 바꾸기
Tab 자동 완성
Up Arrow 이전 명령

🔢 행렬 및 배열

📦 행렬 생성

A = [1 2; 3 4] 2x2 행렬 생성
zeros(m, n) 0으로 채워진 행렬
ones(m, n) 1로 채워진 행렬
eye(n) 단위 행렬
rand(m, n) 랜덤 행렬 (균등 분포)
randn(m, n) 랜덤 행렬 (정규 분포)
linspace(a, b, n) n개의 균등 간격 점
logspace(a, b, n) n개의 로그 간격 점
a:step:b 간격을 가진 범위
diag(v) 대각 행렬 생성
reshape(A, m, n) 행렬 재구성
[A B] / [A; B] 가로/세로 연결

행렬 연산

A' 전치
A * B 행렬 곱셈
A .* B 요소별 곱셈
A ./ B 요소별 나눗셈
A .^ n 요소별 거듭제곱
A \ b 선형 시스템 Ax=b 풀기
inv(A) 역행렬
det(A) 행렬식
eig(A) 고유값 & 고유벡터
rank(A) 행렬 랭크
trace(A) 대각 요소의 합
norm(A) 행렬 노름

📍 인덱싱 & 슬라이싱

A(i, j) i행 j열의 요소
A(i, :) i번째 행 전체
A(:, j) j번째 열 전체
A(end, :) 마지막 행
A(1:3, :) 처음 3개 행
A(:) 모든 요소를 열 벡터로
A(A > 5) 5보다 큰 요소
size(A) 행렬 차원
length(A) 가장 큰 차원
numel(A) 요소 개수

📐 수학 함수

🔢 기본 수학

abs(x) 절대값
sqrt(x) 제곱근
exp(x) 지수 함수 (e^x)
log(x) / log10(x) 자연 로그 / 상용 로그
log2(x) 밑이 2인 로그
floor(x) / ceil(x) 내림 / 올림
round(x) 반올림
mod(a, b) 나머지
sign(x) 부호
factorial(n) 팩토리얼

📈 삼각 함수

sin(x) / cos(x) / tan(x) 삼각 함수
asin(x) / acos(x) / atan(x) 역삼각 함수
atan2(y, x) 4사분면 아크탄젠트
sinh(x) / cosh(x) / tanh(x) 쌍곡선 함수
deg2rad(x) / rad2deg(x) 도/라디안 변환

📊 통계

sum(A) 요소의 합
mean(A) 평균
median(A) 중앙값
std(A) 표준 편차
var(A) 분산
max(A) / min(A) 최대값 / 최소값
cumsum(A) 누적 합
diff(A) 요소 간 차이
sort(A) 요소 정렬
unique(A) 고유 요소

📈 시각화

📉 2D 그래프

plot(x, y) 기본 2D 선 그래프
plot(x, y, 'r--') 빨간 점선
scatter(x, y) 산점도
bar(x, y) 막대 그래프
barh(x, y) 가로 막대 그래프
histogram(data) 히스토그램
pie(x) 파이 차트
area(x, y) 영역 그래프
errorbar(x, y, err) 오차 막대 그래프
polarplot(theta, rho) 극좌표 그래프

🗻 3D & 표면

plot3(x, y, z) 3D 선 그래프
surf(X, Y, Z) 3D 표면 그래프
mesh(X, Y, Z) 3D 메시 그래프
contour(X, Y, Z) 등고선 그래프
contourf(X, Y, Z) 채워진 등고선 그래프
scatter3(x, y, z) 3D 산점도
[X, Y] = meshgrid(x, y) 좌표 그리드 생성

🎨 그래프 커스터마이징

subplot(m, n, p) 서브플롯 그리드 생성
hold on / off 현재 그래프 유지/지우기
title('text') 제목 추가
xlabel('text') X축 레이블
ylabel('text') Y축 레이블
legend('a', 'b') 범례 추가
grid on / off 격자 켜기/끄기
axis([xmin xmax ymin ymax]) 축 범위 설정
xlim([min max]) X축 범위 설정
ylim([min max]) Y축 범위 설정
colorbar 컬러바 추가
colormap(jet) 컬러맵 설정
figure 새 그림 창
saveas(gcf, 'file.png') 그림 저장

⚙️ 프로그래밍

🔀 제어 흐름

if condition ... end 조건문
if ... elseif ... else ... end if-elseif-else 문
for i = 1:n ... end For 루프
while condition ... end While 루프
switch var case val ... end Switch 문
break 루프 종료
continue 다음 반복으로 건너뛰기
return 함수에서 반환

📝 함수 & 스크립트

function y = f(x) 함수 정의
function [a, b] = f(x) 다중 출력
f = @(x) x.^2 익명 함수
feval(f, args) 함수 평가
nargin / nargout 인수 개수
varargin / varargout 가변 인수
% comment 한 줄 주석
%{ ... %} 블록 주석
%% 섹션 구분

⚠️ 오류 처리

try ... catch ... end 오류 처리
error('message') 오류 발생
warning('message') 경고 표시
assert(cond, 'message') 조건 확인
dbstop if error 오류 시 중지 (디버그)

💡 자주 쓰는 패턴

📝 코드 예제

% 파일에서 데이터 읽기
data = readmatrix('file.csv');

% 익명 함수
f = @(x) x.^2 + 2*x + 1;

% 조건을 만족하는 인덱스 찾기
idx = find(A > 5);

% 각 요소에 함수 적용
result = arrayfun(@(x) x^2, A);

% 선형 시스템 Ax = b 풀기
x = A \ b;

% 벡터화 연산 (루프보다 빠름)
y = sin(x) .* exp(-x);

% 속도를 위한 배열 사전 할당
result = zeros(1, n);
for i = 1:n
result(i) = i^2;
end

🚀

  • tictoc으로 실행 시간 측정
  • 더 나은 성능을 위해 루프 대신 벡터화 연산 사용
  • 동적 크기 조정을 피하기 위해 루프 전에 배열 사전 할당
  • 출력을 숨기려면 줄 끝에 ; 사용
  • 포맷된 출력에 fprintf 사용
  • 오류 디버깅에 dbstop if error 사용