2014-11-13 3 views
2

경우 Z =윤곽 플롯 내가 xy 평면에서 사용자 정의 함수에 의해 반환 된 3 차원 벡터의 윤곽 플롯을 생산하기 위해 노력하고

내가 이것을 시도했지만 난 그냥 빈 그래프를 얻을 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,yf의 3 개의 출력이 있습니다.

당신의 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