2016-06-20 32 views
0

私は以下のデータを持っています。最初の行と最初の列(強調表示されている)は、残りの要素が生成された2つのパラメータです。この行列を50行50列の行列に変換し、行と列の間でデータを補間したいと考えています。MATLABで行列を補間する方法は?

私は

、次のように第二のカラムを補間

x=[100 300 500 700]; 
y=[-20 -184 -315.2 -412]; 
z = linspace(x(1),x(4),50); 
yi=interp1(x,y,z,'cubic'); 
を試してみました。しかし、私の問題は、私は同時に行に関して補間し、全体の行列を取得する方法を見つけ出すことはできないよ、です。

ご迷惑をおかけして申し訳ございません。

データは以下のとおりです。

30 60 90 
100 -20 -45 -80.5 
300 -184 -215 -225.4 
500 -315.2 -254 -339 
700 -412 -419 -488 

enter image description here

+0

あなたは 'interp2'を意味しましたか? –

+0

@AnderBiguriはい、私はinterp2が私が使用すべき機能であることを知っています。しかし、私はそれをどのように使用するかについてはわかりません。私は役に立たない文書を調べています。 – metal

答えて

3

あなたのデータは、2つの変数(f(x,y))の関数であるので、あなたはinterp1ではなくinterp2を使用する必要があります。

% Populate the data that you already have 
rows = [100, 300, 500 700]; 
cols = [30, 60, 90]; 

data = [-20  -45 -80.5 
     -184 -215 -225.4 
     -315.2 -254 -339 
     -412 -419 -488]; 

% Interpolate this at 100 points in each direction 
[newcols, newrows] = meshgrid(linspace(cols(1), cols(end)), ... 
           linspace(rows(1), rows(end))); 

% Perform the bicubic interpolation 
newdata = interp2(cols, rows, data, newcols, newrows, 'bicubic') 
関連する問題