나는 규칙적으로 간격을 두지 않은 X (위치), Y (위치) 및 Z (각 위치에서의 관심 가치)의 데이터 벡터를 가지고 있습니다. contourf를 시도했는데, Z 입력에 대한 행렬이 필요하기 때문에 작동하지 않습니다.Matlab : 3 벡터 벡터로 등고선 만들기
4
A
답변
5
플롯 contour 플롯의 경우 실제로 z 값의 행렬 또는 격자에서 평가 된 z 값의 집합 (벡터)이 필요합니다. 그리드의 (X, Y) 점에서 격리 된 Z 값 (즉, 사용자가 소유하고있는 것)을 사용하여 윤곽선을 정의 할 수 없습니다.
생성 과정 (또는 함수)에 (x, y) 점의 격자 값을 제공해야합니다.
그렇지 않은 경우 a surface from nonuniform data을 @nate가 정확하게을 가리 키도록 생성 한 다음 그 표면에 윤곽선을 그릴 수 있습니다.
는 다음의 (랜덤) 예를 고려
N = 64; % point set
x = -2 + 4*rand(N,1); % random x vector in[-2,2]
y = -2 + 4*rand(N,1); % random y vector in[-2,2]
% analytic function, or z-vector
z = x.*exp(-x.^2-y.^2);
% construct the interpolant function
F = TriScatteredInterp(x,y,z);
t = -2:.25:2; % sample uniformly the surface for matrices (qx, qy, qz)
[qx, qy] = meshgrid(t, t);
qz = F(qx, qy);
contour(qx, qy, qz); hold on;
plot(x,y,'bo'); hold off
서클 값 점당 (x,y,z)
상기 보간 된 표면의 윤곽에 윤곽 원래 벡터 점에 대응한다.
6
또한 griddata
을 사용할 수 있습니다.
%Generate random data
x = rand(30,1);
y = rand(30,1);
z = rand(30,1);
%Create regular grid across data space
[X,Y] = meshgrid(linspace(min(x),max(x),n), linspace(min(y),max(y),n))
%create contour plot
contour(X,Y,griddata(x,y,z,X,Y))
%mark original data points
hold on;scatter(x,y,'o');hold off
'Z'가 매트릭스가 아닌 경우 어떤 형식입니까? –
그것은 벡터입니다. 2D surace의 위치에 해당하는 일련의 값입니다. – Moe
도움이 될 것입니다. http://blogs.mathworks.com/videos/2007/11/02/advanced-matlab-surface-plot- 비 균일 데이터 / – bla