일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- octopus
- 토막잭슨
- 겨울떨개
- 나노포토닉스
- 우분투
- 3분논문
- impact factor
- 리눅스
- 플라즈몬
- Jackson Electrodynamics
- 자연 나노기술
- 양자 플라즈몬
- 자연 광자학
- 전자기학
- 과학
- 학술지
- 광자학
- 초록빛논문
- TDDFT
- 메타표면
- metasurface
- Photolithography
- Linux
- 자연
- nature photonics
- 메타물질
- 그래프
- gnuplot
- 논문
- 물리학
- Today
- Total
과꾸로
[Matlab] spline: 매트랩으로 데이터 interpolation 하기. ppval 본문
매트랩으로 데이터 interpolation 하는 방법 중에서 spline 이라는 함수를 사용하는 방법이 있다.
매트랩 공식 홈페이지에 따르면 spline은 Cubic spline data interpolation을 해준다고 써 있다. 이 글에서는 그 중에서도 a piecewise polynomial structure 에서 ppval를 사용해서 interpolation 결과를 뽑아내는 경우에 대해 다루어 본다.
매트랩 홈페이지 spline 링크: https://kr.mathworks.com/help/matlab/ref/spline.html?lang=en
사용법은 간단하다. 다음과 같이 하면 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일
과꾸로
'연구자료' 카테고리의 다른 글
[gnuplot] 축의 길이 고정하기. tics를 제외하고 축의 비율 정하기. set margin (0) | 2018.06.26 |
---|---|
[gnuplot] 변수가 3개 이상인 함수에 data fitting하기. set dummy (0) | 2018.04.30 |
[MNPBEM] bemstateig.m 으로 얻은 eigenvalues의 차원과 단위는? (0) | 2018.04.16 |
[MNPBEM] Eigenvalues 구하기. Boundary-Element Method. Matlab code. (2) | 2018.04.12 |
[Octopus] Tutorial 따라하기. Time-dependent run. TDDFT (0) | 2018.04.06 |