본문 바로가기

잡다

MATLAB #3

벡터화

배열에 직접 관여하는 방식.

t = 0:0.02:50;
y = cos(t);
// t의 값에 대응되는 cos 값의 배열이 y에 저장된다.

plot(t, cos(t))

 

메모리 사전 할당

MATLAB은 배열에 원소를 하나씩 추가하는데 시간이 많이 소요될 수 있으므로 ones 나 zeros 같은 함수로 미리 할당해두면 속도가 더 빨라질 수 있다.

t = 0:0.2:5;
y = ones(size(t));
~~~

while

while condition
	statements
end

//
x = 0;
while x < 10
	disp(x)
end

시간 측정

function myTimer(sec)
    tic
    beep
    pause(sec)
    beep
    toc
end
  • tic : 시간 측정 시작
  • toc : 시간 측정 끝
  • pause(n) : n 초간 동작을 멈춘다
  • beep : 컴퓨터 오류 알림 소리

익명 함수

M 파일을 생성하지 않아도 간단한 함수 생성 가능

기본적으로 인수를 제외한 값은 함수를 생성한 순간에 bind 된다.

 

func = @(a, b) a + b

//func(3,4)
// ans = 7

//ex
external_value = 13;

func1 = @(a, b) external_value * a + b;

func1(3,4) // answer = 43

external_value = 57;

func1(3,4) // answer = 43
// external_value 값이 바뀌어도 함수는 안바뀐다. 만든 당시에 바인딩된다.

함수를 인수로 전달

함수 역시 인수로 전달 가능하다.

function result = fnArgs(f,a,b,n)
	x = linspace(a,b,n);
    y = f(x);
    result = mean(y);
end

인수의 전달 : varargin

다른 언어의 Params에 대응되는 기능

function favg = varEx(f,a,b,n, varargin)
    x = linspace(a,b,n);
    y = f(x,varargin{:});
    favg = mean(y);
end