Matlab 三维矢量等高线图
我试图为xy平面中z=0的自定义函数返回的3D向量生成等高线图 我尝试了这个,但我得到了一个空的图表: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
% 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
产生的向量的大小,这给了我期望的结果。