산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> MATLAB

MATLAB 함수 완전 정복: 정의, 워크스페이스, 입출력, 익명/중첩/비공개 함수

함수 기초

함수는 특정 작업을 수행하는 문장들의 집합입니다. MATLAB에서 함수는 별도 파일에 정의되며, 파일명과 함수명이 동일해야 합니다.

함수는 자신만의 로컬 워크스페이스에서 변수를 다루며, 이는 MATLAB 명령 프롬프트의 기본 워크스페이스(base workspace)와 분리됩니다.

여러 입력 인수를 받고 여러 출력 인수를 반환할 수 있습니다.

함수 구문

function [out1,out2,...,outN] = myfun(in1,in2,in3,...,inN)

예제: 최댓값 구하는 함수 mymax

파일명: mymax.m

function max = mymax(n1, n2, n3, n4, n5)
% 이 함수는 입력된 다섯 숫자 중 최댓값을 계산합니다.
max = n1;
if (n2 > max) max = n2; end
if (n3 > max) max = n3; end
if (n4 > max) max = n4; end
if (n5 > max) max = n5; end
end

호출 예:

mymax(34, 78, 89, 23, 11)

결과: ans = 89

익명 함수(Anonymous Functions)

한 줄 표현식으로 정의되는 인라인 함수입니다. 파일 생성 없이 명령줄이나 스크립트/함수 내부에서 바로 만들 수 있습니다.

f = @(arglist) expression

예제: 거듭제곱 익명 함수

power = @(x, n) x.^n;
result1 = power(7, 3)      % 343
result2 = power(49, 0.5)   % 7
result3 = power(10, -10)   % 1e-10
result4 = power(4.5, 1.5)  % 9.5459

주 함수(Primary)와 하위 함수(Sub-functions)

익명 함수가 아닌 함수는 파일 내에 정의해야 합니다. 각 파일에는 필수 주 함수가 맨 위에 오고, 그 뒤에 선택적 하위 함수들이 옵니다.

예제: 이차방정식 근 구하기 (하위 함수 disc 사용)

파일명: quadratic.m

function [x1,x2] = quadratic(a,b,c)
% 이차방정식 근을 반환. 입력: x^2, x, 상수항 계수
d = disc(a,b,c);
x1 = (-b + d) / (2*a);
x2 = (-b - d) / (2*a);
end

function dis = disc(a,b,c)  % 하위 함수
% 판별식 계산
dis = sqrt(b^2 - 4*a*c);
end

호출: quadratic(2,4,-4) → ans = 0.7321

중첩 함수(Nested Functions)

함수 본문 안에 다른 함수를 정의할 수 있습니다. 중첩 함수는 외부 함수의 워크스페이스를 공유합니다.

function x = A(p1, p2)
    ...
    function y = B(p3)
        ...
    end
    ...
end

예제: 이차방정식에서 disc를 중첩 함수로

파일명: quadratic2.m

function [x1,x2] = quadratic2(a,b,c)
    function disc  % 중첩 함수
        d = sqrt(b^2 - 4*a*c);
    end
    disc;
    x1 = (-b + d) / (2*a);
    x2 = (-b - d) / (2*a);
end

호출: quadratic2(2,4,-4) → ans = 0.73205

비공개 함수(Private Functions)

특정 함수 그룹에서만 보이게 하려면 private 서브폴더에 넣습니다. 상위 폴더의 함수들만 접근 가능합니다.

예제: disc를 private 함수로 분리

  1. 작업 디렉토리에 private 폴더 생성 후 disc.m 저장
  2. 작업 디렉토리에 quadratic3.m 생성
% private/disc.m
function dis = disc(a,b,c)
dis = sqrt(b^2 - 4*a*c);
end

% quadratic3.m
function [x1,x2] = quadratic3(a,b,c)
d = disc(a,b,c);  % private 함수 호출
x1 = (-b + d) / (2*a);
x2 = (-b - d) / (2*a);
end

호출: quadratic3(2,4,-4) → ans = 0.73205

전역 변수(Global Variables)

여러 함수 간에 변수를 공유하려면 모든 함수에서 global로 선언합니다. 기본 워크스페이스에서도 접근하려면 명령줄에서 선언합니다. 대문자 이름을 권장합니다.

예제: 평균 계산에 전역 변수 TOTAL 사용

% average.m
function avg = average(nums)
global TOTAL
avg = sum(nums) / TOTAL;
end

% 스크립트
global TOTAL; TOTAL = 10;
n = [34, 45, 25, 45, 33, 19, 40, 34, 38, 42];
av = average(n)  % 결과: 35.5

MATLAB

  1. Stratasys FDM 프린팅 최적화를 위한 Insight 필수 기능 10가지
  2. C++ 함수 완전 정복: 실전 코드 예제로 이해하기
  3. 파이썬 람다 함수 마스터하기: 실용 예제 & 모범 사례
  4. Verilog 함수 마스터하기: 효율적인 RTL 설계를 위한 활용법
  5. C 함수 마스터: 선언, 정의, 호출, 인자 전달(값/참조), 재귀
  6. MATLAB: 선도적인 수치 연산 환경 종합 개요
  7. MATLAB 변수 이해: 기초와 예제
  8. 효율적인 계산을 위한 필수 MATLAB 명령어
  9. MATLAB 데이터 타입 완벽 가이드: 종류, 변환, 확인 방법
  10. MATLAB 행렬 기초 마스터: 생성, 참조, 데이터 조작