2016-06-20 2 views
0

У меня есть следующие данные. Первая строка и первый столбец (выделены) - это два параметра, для которых были созданы остальные элементы. Я надеюсь преобразовать эту матрицу в матрицу размером 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

Ваши данные является функцией двух переменных (f(x,y)), так что вы должны будете использовать interp2 вместо interp1.

% 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') 
Смежные вопросы