본문 바로가기
유용한 지식/매트랩

매트랩 그래프 점 잇기 / 보간법 interpolation

by 그래도_明 2021. 1. 20.

매트랩 그래프 점 잇기 / 보간법 interpolation

 

그래프를 그리기 위해 매트랩을 사용할 때 내가 가진 데이터가 연속적이지 않은 경우 다음의 방법으로 매끄럽게 연속적인 그래프를 그릴 수 있다.

 

우선 interp1 함수를 이용할 수 있다.

예시는 다음과 같다.

0초부터 10초까지의 연속적인 그래프가 필요하다고 가정해보자. 그러나 나는 다음과 같이 임의의 시간에 대한 특정 데이터들만 가지고 있는 상황이다.

시간 0초 1초 2 4 7 9 10
1 2 3 4 5 7 8

이 값을 매끄럽게 그래프에 띄울려면 측정된 데이터 사이 값들도 있어야한다. 바로 이 측정되지 않은 사이의 값들을 선형적으로 유추하여 생성하는 함수가 interp1 함수이다.

사용법은 다음과 같다.

interp1("점을 이을 원래 x축 데이터", "점을 이을 원래 y축 데이터", "보간이 완료된 벡터의 크기")

 

다음은 예시 코드다.

 

x=[0 1 2 4 7 9 10];

y=[1 2 3 4 5 7 8];

 

x0=0:0.1:10;

y0=interp1(x,y,x0);

 

figure(1) % 원래 데이터

plot(x,y,'o')

grid on

xlabel('x')

ylabel('y')

ylim([0 8])

 

figure(2) % 선형 보간된 데이터

plot(x0,y0)

grid on

xlabel('x')

ylabel('y')

ylim([0 8])

 

난 직선이 너무 딱딱하고 정없어서 싫다한다면 곡선으로 이어주는 애도 있다.

spline 함수이다.

사용법은 위와 동일하다.

spline("점을 이을 원래 x축 데이터", "점을 이을 원래 y축 데이터", "보간이 완료된 벡터의 크기")

 

다음은 예시이다.

 

x1=0:0.1:10;

y1=spline(x,y,x1);

 

figure(3) % 곡선으로 보간된 데이터

plot(x1,y1)

xlabel('x')

ylabel('y')

ylim([0 8])

 

도움이 되었길 바란다.

반응형

댓글