Двумерная интерполяция в Матлабе

stat52349

Есть текстовый файл с цифрами (x, y, z). Предположим, что все это записано из файла в столбцы матрицы A(x; y; z). Как теперь в Матлабе сделать двумерную интерполяцию z(x, y чтобы для любых значений x и y получать интерполированное значение z?
ЗЫ Это нужно чтобы потом решить систему дифуров
d2x/dt2=f(x, y)
d2y/dt2=z(x, y)

stm7518204

В одномерном случае....
Если размерность матрицы не сильно большая менее (10000*10000) , есть супер универсаотная команда подгона сплайном..... считать долго будет но круто...
Если матрица болшая, тогда надо что-то своё придумывать..
В двумерии почти тоже самое.

stm7518204

Spline Toolbox splinetool
Experiment with some spline approximation methods
Syntax
splinetool
splinetool(x,y)
Description
splinetool is a graphical user interface (GUI whose initial menu provides you with various choices for data including the option of importing some data from the workspace.
splinetool(x,y) brings up the GUI with the specified data x and y, which are vectors of the same length.
Remarks
The Spline Tool is shown below comparing cubic spline interpo

Evgewkin

Есть текстовый файл с цифрами (x, y, z). Предположим, что все это записано из файла в столбцы матрицы A(x; y; z). Как теперь в Матлабе сделать двумерную интерполяцию z(x, y чтобы для любых значений x и y получать интерполированное значение z?

help griddata

И юзать anonymous functions
http://www.mathworks.com/access/helpdesk/help/tech...

stat52349

griddata cubic как раз то, что нужно
в общем добрался до такого
fid = fopen( 'v.txt', 'rt' );
A1 = fgets( fid );
A = fscanf( fid, '%e', [3 27625] );
fclose( fid );
i=1:1:27625; x1=-5:0.1:15; y1=-5:0.1:5;
[XI,YI] = meshgrid(x1,y1);
xgr = A(1,i); ygr = A(2,i); vgr = A(3,i);
ZI = griddata(xgr,ygr,vgr,XI,YI,'cubic');
solvator
function solvator
[t,h]=ode45(@accel,[0,0.1],[0,0,10,10]);
x=h(:,1);y=h(:,2);
function f=accel(t,x)
f=[x(3);x(4);---;---];
теперь непонятно как в последней функции вместо черточек вставить значение v в нужной точке, которое проинтерполировалось griddata

Evgewkin

теперь непонятно как в последней функции вместо черточек вставить значение v в нужной точке, которое проинтерполировалось griddata
Для этого и нужна anonymous function. Передай все что нужно для интерполяции в функцию-правую часть, и проинтерполируй внутри.
[t,h]=ode45(@(t, x) accel(t, x, xgr,ygr,vgr) ,[0,0.1],[0,0,10,10]);
x=h(:,1);y=h(:,2);
function f=accel(t,x, xgr, ygr, vgr)
z = griddata(xgr,ygr,vgr,x(1x(2'cubic');
f=[x(3);x(4);z;---];

stat52349

Теперь он ругается так. Похоже ему не нравится, что xgr это одномерный массив, а не число.
? Undefined function or variable 'xgr'.
Error in ==> solvator at 2
[t,h]=ode45(@(t,x) accel(t,x,xgr,ygr,vgr[0,0.1],[0,0,10,10]);

Evgewkin

Теперь он ругается так. Похоже ему не нравится, что xgr это одномерный массив, а не число.
Это не должно быть важно. А xgr точно определено?
Строчка
xgr = A(1,i); ygr = A(2,i); vgr = A(3,i);
не потерялась?
Расшарь программу вместе с файлом с данными, так трудно сказать, что не так.
Оставить комментарий
Имя или ник:
Комментарий: