Matlab 三维矢量等高线图

Matlab 三维矢量等高线图,matlab,contour,Matlab,Contour,我试图为xy平面中z=0的自定义函数返回的3D向量生成等高线图 我尝试了这个,但我得到了一个空的图表: % Stand in for the real function I want to plot. f = @(x, y, z) [x ^ 2, y ^ 2, x * y + z]; x = linspace(-5, 5, 50); y = linspace(-5, 5, 50); z = zeros(length(x), length(y), 3); % I know this can b

我试图为xy平面中z=0的自定义函数返回的3D向量生成等高线图

我尝试了这个,但我得到了一个空的图表:

% Stand in for the real function I want to plot.
f = @(x, y, z) [x ^ 2, y ^ 2, x * y + z];

x = linspace(-5, 5, 50);
y = linspace(-5, 5, 50);
z = zeros(length(x), length(y), 3);

% I know this can be vectorized but the function I really want to graph can't
% be.
for i = 1:length(x)
    for j = 1:length(y)
        z(i, j, :) = f(x(i), y(j), 0);
    end
end

figure;
axis equal;
contour(x, y, z);

你应该提到你的轴心是什么。您有
x,y
f
的3个输出

如果你认为<代码> 3 >代码>输出>代码> f>代码>作为要绘制的,那么你应该使用,

contour(z(:,:,1),z(:,:,2),z(:,:,3));
这会给你这个

我想你要找的是一个只有一个输出的函数,比如

f = @(x, y,z) [x ^ 2 + y ^ 2 + x * y + z ];
x = linspace(-5, 5, 50);
y = linspace(-5, 5, 50);
z = zeros(length(x), length(y));
for i = 1:length(x)
    for j = 1:length(y)
       z(i, j) = f(x(i), y(j),0);
    end
end
contour(x,y,z,20);

我取了由
f
产生的向量的大小,这给了我期望的结果。