кривая интерполяции на поверхность - PullRequest
1 голос
/ 19 ноября 2011

Это проблема интерполяции: У меня есть функция z = z (x, y), и я знаю отношения между x и y как x = f (y, x_0). Здесь x_0 являются начальными точками кривых в момент времени y = 0. Предположим, что x_0 = [0 1 2] имеет три значения. Для каждого значения x_0 я получаю кривую в R ^ 2.x1 = f1 (y), x2 = f2 (y) и x3 = f3 (y), и я рисую кривые z1, z2, z3 в R ^ 3, используя ( x1, f1), (x2, f2) и (x3, f3). Как я могу интерполировать z1, z2,23 для получения поверхности? Буду благодарен за любую помощь, мгр

1 Ответ

0 голосов
/ 20 ноября 2011

Используя ваши обозначения и некоторые произвольные примерные отношения для x = f (x0, y) и z = f (x, y), вот как вы это делаете (я также добавил график прямого вычисления для справки) :

% Define grid
x0_orig = 0:2;
y_orig  = 0:3;
[x0, y] = meshgrid(x0_orig, y_orig);

% Calculate x (replace the relationship with your own)
x = x0 + 0.1 * y.^2;

% Calculate z (replace the relationship with your own)
z = 0.1 * (x.^2 + y.^2);

% Plot
subplot(1,3,1)
surf(x, y, z)
xlabel('x')
ylabel('y')
zlabel('z')
title('Original data')

%%%%%%%%%%
% Interpolate with finer grid
x0i = 0:0.25:2;
yi  = 0:0.25:3;

xi = interp2(x0_orig, y_orig, x, x0i, yi');
[x0i yi] = meshgrid(x0i, yi);
zi = interp2(x0, y, z, x0i, yi);

subplot(1,3,2)
surf(xi, yi, zi);
title('Interpolated data')

%%%%%%%%%%
% Recalculate directly with finer grid
x0i = 0:0.25:2;
yi  = 0:0.25:3;

[x0i yi] = meshgrid(x0i, yi);
xi = x0i + 0.1 * yi.^2;
zi = 0.1 * (xi.^2 + yi.^2);

subplot(1,3,3)
surf(xi, yi, zi)
title('Recalculated directly')

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...