2014-11-13 88 views
2

我试图产生通过自定义功能在XY平面返回的3D矢量轮廓图,其中z = 0等高线图的三维矢量

我试过,但我只是得到一个空图:

% 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); 

回答

1

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

如果你考虑的3输出你f如要绘制的那些那么你应该使用,

contour(z(:,:,1),z(:,:,2),z(:,:,3)); 

,这将给你这个,

enter image description here

,我认为你是什么寻找,是一个输出功能,如,

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); 

enter image description here

+0

我把由'f'产生的向量的大小,这给了我想要的结果。 – Lerp