在网格上绘制2D函数

时间:2014-05-17 09:48:27

标签: matlab plot grid

你好我有一个函数f:[0,1] ^ 2 - > R ^ 2来绘图​​。 f(x,y)=((x + 1)/ y, - (x + 1)/ y)。我必须在[0,1] ^ 2上创建一个由2 * N网格线和(M + 1)网格点组成的等距网格。


但我不知道如何为二维功能做到这一点。我可以为一维功能做到这一点:

    % Generate equidistant grid on [0,1] and plot grid points
    M=25;             %number of internal grid points
    xgrid = linspace(0,1,M+1)';
    null = zeros(size(xgrid));
    plot(xgrid,null,'.','MarkerSize',15)
    % Sample function at the grid points and plot samples
    ysample = xgrid+1;
    plot(xgrid,ysample,'r.','MarkerSize',15);
    title('Sampling a function on the grid')
    hold off

任何人都可以告诉我如何为二维函数f:[0,1] - > R ^ 2?

1 个答案:

答案 0 :(得分:2)

你想要达到这样的目标吗?

M = 25;
x = linspace(0, 1, M);
y = linspace(0, 1, M);
[mesh_x, mesh_y] = meshgrid(x, y);
v1 = (mesh_x + 1) ./ mesh_y;
v2 = -(mesh_x + 1) ./ mesh_y;

figure('Name', 'My Plot');
subplot(121);
surf(x, y, v1);
grid on;xlabel('x');ylabel('y');zlabel('v1');
subplot(122);
surf(x, y, v2);
grid on;xlabel('x');ylabel('y');zlabel('v2');