옥타브 / 매트랩¶
데이터형 변환¶
옥타브/매트랩에서 숫자 데이터의 기본형은 배정밀도 실수이다. 정수형 데이터는 수치 계산에서는 거의 사용하지 않는다.
문자 데이터를 배정밀도 실수로 변환하면, 그 문자를 나타내는 아스키 코드를 얻을 수 있다.
double('a')
숫자를 문자로 변화하려면, char( ) 함수를 사용한다.
char(98)
배열에 문자와 숫자가 같이 있으면, 옥타브/매트랩은 모두 문자로 인식하여 처리한다.
['a' 98 99]
숫자 데이터를 문자열 데이터로 바꾸려면, num2str( ) 함수를 사용한다.
num2str( 123 )
문자열 데이터를 숫자 데이터로 바꾸려면, str2num( ) 함수를 사용한다.
str2num('123')
선형 회귀법 (Linear regression)¶
선형 회귀법은 실제 데이터를 근사적으로 표현하는 직선을 얻는 방법이다.
실제 데이터 값과 직선에 의한 추정값의 차이를 제곱한 값을 모두 더한 합을 최소화하는 원리에 근거하며, 이를 최소 제곱법 (least square method)라고 한다.
회귀법은 polyfit( ) 함수를 사용한다.
x = 0:4 ;
y = [ 0, 2.1, 4.2, 5.9, 8.3 ] ;
coef = polyfit( x, y, 1 ) % 1 은 곡선의 차수로서 직선을 뜻한다
직선의 기울기와 절편이 얻어졌다.
회귀 직선으로 데이터를 추정한 값을 얻으려면, polyval( ) 함수를 쓴다.
ynew = polyval( coef, x )
실제 데이터와 추정값을 비교하여 본다.
plot( x, y, 'o', x, ynew, '-' )
2차 곡선으로 회귀 곡선을 구하는 예를 보자.
x = 0:4 ;
y = [ 0.1, 1.1, 4.2, 8.7, 16.3 ] ;
coef = polyfit( x, y, 2 ) % 2는 곡선의 차수로서 2차 곡선을 뜻한다
데이터와 회귀 곡선을 그래프로 그려 비교한다.
xfit = 0:0.1:4 ;
yfit = polyval( coef, xfit ) ;
plot( x, y, 'o', xfit, yfit, '-' )
수치 적분¶
옥타브/매트랩에서는 quad( ) 함수를 이용하여 수치 적분을 계산할 수 있다.
● quad ( 피적분 함수, 하한, 상한 )
다음 적분을 구한다.
$$ \int _0 ^1 x^2 dx \,=\, \frac 1 3 $$
quad( 'x.^2', 0, 1 )
피적분 함수를 문자열로 입력하는 것은 옛날 방식이므로 익명 함수(anonymous function)를 사용하라고 경고를 주고 있다.
적분을 계산할 때 내부적으로 배열을 이용하므로, 피적분함수를 나타낼 때 닷거듭제곱을 써야한다는 것을 유의하자.
익명 함수는 "함수 핸들" 이라고도 부른다. 익명 함수를 정의한 다음, 이를 인자로 넘겨준다.
f =@(x) x.^2 ;
quad( f, 0, 1 )
$$ \int _{-\infty} ^{\infty} e^{-x^2} dx \,=\, \sqrt \pi $$
무한대는 Inf 로 나타낸다. 또한, 닷거듭제곱을 쓰는 것에 유의한다.
f =@(x) exp(-x.^2) ;
quad( f, -Inf, Inf )
적분값은 $\sqrt \pi$ 와 같다.
sqrt( pi )