matlab interp

Learning stuff 2012. 7. 27. 21:48
하던건 기록한다는거 계속 못하네 뭐...

요즘은 그래도 쫌  널널하니까 야아깐


 최근 가장많이 한게 labview 와 matlab 이다.


가장 헷깔리는걸 기록하자면


matlab에서 좌표는





요거란 거다


meshgrid를 쓰면 저거의 반대지만

이경우를 제외한 나머지는 저런듯.....


그래서 [y,x,z]=meshgrid(y,x,z) 이렇게 적거나

귀찮으면 [x,y,z]=ndgrid(x,y,z) 이렇게 하여 mesh form의 grid를 형성해 준다.


난 주로 curve fitting 의 용도로 interp3, inter2, inter1 을 사용하였는데

이상한 오류가 나는 바람에 딴걸 알아보다 보니까.. 응 더 좋은걸 오늘 알게 되었다.

그 두개가 triscatteredinterp 와 griddata 다 griddata  얘는 griddata3로 하면 3D도 되네?? 근데 뭐 어쩄든 얘들 좋은점이 Non uniformly spaced sample들로 fitting 할수 있다는거

근데 griddata 얘는 쓰기 싫은게 linear 하고 nearest 밖에 안되여.... triscatteredinterp 는 fitting  된 function을 생성해주고 얘는 보니까 column vector 형태로 in 을 넣어죠야 되더라..... 자세한건 검색요........

Create a data set:

x = rand(100,1)*4-2;
y = rand(100,1)*4-2;
z = x.*exp(-x.^2-y.^2);

Construct the interpolant:

F = TriScatteredInterp(x,y,z);

Evaluate the interpolant at the locations (qx, qy). The corresponding value at these locations is qz .



ti = -2:.25:2; [qx,qy] = meshgrid(ti,ti); qz = F(qx,qy); mesh(qx,qy,qz);

Data gridding and hypersurface fitting for 3-D data

Syntax

  • w = griddata3(x,y,z,v,xi,yi,zi)
    w = griddata3(...,'method')
    

Description

w = griddata3(x, y, z, v, xi, yi, zi) fits a hypersurface of the form  to the data in the (usually) nonuniformly spaced vectors (xyzv). griddata3 interpolates this hypersurface at the points specified by (xi,yi,zi) to produce ww is the same size as xiyi, and zi.



Examples

Example 1

Interpolate the peaks function over a finer grid.

[X,Y] = meshgrid(-3:.25:3); Z = peaks(X,Y); [XI,YI] = meshgrid(-3:.125:3); ZI = interp2(X,Y,Z,XI,YI); mesh(X,Y,Z), hold, mesh(XI,YI,ZI+15)


Examples

To generate a coarse approximation of flow and interpolate over a finer mesh:

[x,y,z,v] = flow(10); 
[xi,yi,zi] = meshgrid(.1:.25:10, -3:.25:3, -3:.25:3);
vi = interp3(x,y,z,v,xi,yi,zi); % vi is 25-by-40-by-25

slice(xi,yi,zi,vi,[6 9.5],2,[-2 .2]), shading flat


참고로... extrapolation은 spline 밖에 안되더라 그래


마지막으로 몇개의 데이터로 3D Interpolation 한 결과 ㅋㅋ

나중에 보면 기억날진 모르지만 스토리는 대략 

1. Vin 별 데이터를 받아서 downsample 을 Vout 방향으로 0.5 간격으로 해주어서 자료를 줄인후에  나온 자료들 가지고 interp3 하거나


2. 저 위에껀 있는 그래프의 결과인... 그래 일단 측정한 자료의 값들을 column vector로 쫙 뽑아내서 triscatteredinterp 를 통과시켜주어서 함수를 뽑아낸 다음 그린다!


간단하네 뭐.. ㅋㅋ

'Learning stuff' 카테고리의 다른 글

오프컬렉터  (0) 2012.08.03
labview  (0) 2012.07.27
Converters  (0) 2012.04.12
OP AMP의 기본동작  (1) 2012.04.11
Open collector, Open drain  (0) 2012.04.11