과꾸로

[Matlab] spline: 매트랩으로 데이터 interpolation 하기. ppval 본문

연구자료

[Matlab] spline: 매트랩으로 데이터 interpolation 하기. ppval

(gguro) 2018. 4. 27. 15:57


매트랩으로 데이터 interpolation 하는 방법 중에서 spline 이라는 함수를 사용하는 방법이 있다. 


매트랩 공식 홈페이지에 따르면 spline은 Cubic spline data interpolation을 해준다고 써 있다. 이 글에서는 그 중에서도 a piecewise polynomial structure 에서 ppval를 사용해서 interpolation 결과를 뽑아내는 경우에 대해 다루어 본다. 







사용법은 간단하다. 다음과 같이 하면 pp에 interpolation 된 결과 값이 저장된다.


pp = spline(x,y)






1. 


간단하게 예제를 직접 작성해보았다.


%% spline example


clear all;

xx = [0   0.1 0.3 0.5 0.6 0.7 1];

yy = [0.7 0.3 0.9 0.1 0.2 0.4 0.2];


figure(1);

plot(xx,yy,'*'); axis([0 1 0 1]);

print('img1','-dpng');




먼저 임의의 데이터를 xx와 yy에 넣어주었다. 데이터를 그려보면 아래 그래프를 얻는다. 






2. 

spline을 실행해서 tmp에 저장한다.


tmp = spline(xx,yy);




3. 


xspa = 0:0.05:1;

yspa = ppval(tmp,xspa);


figure(2);

plot(xx,yy,'*',xspa,yspa,'-'); axis([0 1 0 1]);

legend('raw data','interpolated A');

print('img2','-dpng');



이 데이터를 spline을 써서 interpolation 하면 다음과 같이 된다. spline을 써서 얻은 구조체에 0.05 간격으로 interpolation한 결과를 출력하라고 해서 얻은 그래프이다. 





4. 


xspb = 0:0.01:1;

yspb = ppval(tmp,xspb);


figure(3);

plot(xx,yy,'*',xspb,yspb,'-'); axis([0 1 0 1]);

legend('raw data','interpolated B');

print('img3','-dpng');


다음은 위와 같은 spline 결과에 데이터 간격을 더 촘촘하게 0.01간격으로 해서 출력하라고 한 결과이다. spline은 한 번만 했고 그 구조체에 x좌표 간격을 바꿔서 ppval에 넣으면 다른 interpolation 결과를 얻을 수 있다. 





2018년 4월 27일

과꾸로




Comments