绘制3D给定函数的每个组件(在Matlab / Octave中)

时间:2017-07-07 20:53:09

标签: matlab octave

我需要将函数f的每个分量绘制成正方形Q = [0,1] x [0,1]

   f   = @(x,y)  [-0.5*x + 0.25  ;  -0.5*y + 0.25];

如果我有标量函数(使用一个组件)g:

   g   = @(x,y)  -0.5*x + 0.25;

情节很简单,具体如下:

   xxx=[0:0.01:1];
   yyy=[0:0.01:1];
   [xxx yyy]=meshgrid(xxx,yyy);
   surfc(xxx,yyy,g(xxx,yyy))

但是,如何在同一组Q上绘制矢量函数f的每个分量?

   f   = @(x,y)  [-0.5*x + 0.25  ;  -0.5*y + 0.25];

1 个答案:

答案 0 :(得分:0)

如果您很乐意将结果可视化为矢量字段,那么您可以这样做:

f = @(z) -0.5 .* z + 0.25;
[X, Y] = meshgrid (0:0.01:1, 0:0.01:1);
quiver (X, Y, f(X), f(Y));

如果你的f_x和f_y组件不一定相同,你可以拆分它们(暗示了meshgrid步骤):

f_x = @(x) -0.5 .* x + 0.25;
f_y = @(y) -0.5 .* y + 0.25;
quiver (X, Y, f_x(X), f_y(Y));

如果你真的,真的需要将它们作为一个单一的非向量化函数,那么你可以使用arrayfun解决这个问题:

f   = @(x,y)  [-0.5*x + 0.25  ;  -0.5*y + 0.25];
quiver(X, Y, arrayfun(@(x) f(x,0)(1), X), arrayfun(@(y) f(0,y)(2), Y));

结果:

enter image description here