2010-07-01 8 views
0

저는 Matlab을 처음 접했고 약간의 도움을 주셨습니다. 함수의 산점도를 그래프로 표시하려고합니다. 나중에이 데이터에 다른 함수를 적용하여 같은 그림에 그릴 것입니다. 그러나 내가 지금까지 가지고있는 것은 마커를 하나의 평면에 모두 그려 넣습니다. 이것은 내가 원하는 것이 아닙니다. 함수는 2D이며, 그래프는 3D 여야합니다. 어떻게해야합니까?Matlab의 3D 산점도

여기까지 제가 지금까지 시도한 바가 있습니다. 이 전에 다른 매개 변수가 다른 매개 변수가 주어진 f (i, j)에 대해 다른 값을 생성하기 때문에 코드를 구현할 때 일련의 수치를 얻습니다.

for i=1:somenumber 
    for j=1:somenumber 
     f(i,j)=etc. 
    end 
end 

figure; 
x=1:somenumber; 
plot3(x,f,x,'rs'); 
hold on; 
+0

@ 존 : 3D 그림은 거의 항상 끔찍합니다. 뒤쪽의 물건은 가려지기 쉽고, 당신을 오도하는 관점의 문제가 있습니다. 대신 색상 또는 마커 유형을 사용하여 세 번째 차원을 인코딩하십시오. –

+2

@ 리치 코튼 (Richie Cotton) : 색상이 더 이상 표시되지 않는 경우 오도 될 수 있습니다. 정적 인 3D 플롯은 특히 당신을 도울 음영이없는 경우 해석하기가 어렵지만 동의하지만 회전하면 패턴과 기능적 관계를 볼 수 있습니다. – Jonas

+0

@Jonas : 알겠습니다. 3D가 유용 할 때, 특히 대화식으로 사용하는 경우가 몇 가지 있지만, 2D 대안이 더 명확하다는 의견을지지합니다. –

답변

2

당신은 가능성이 작업을 수행하지 않는 이유에 대한 내 의견을 참조하지만, 3D로 플롯의 일반적인 방법은 다음

x = 1:10; 
y = 1:5; 
[X Y] = meshgrid(x, y); 
Z = X.^2 + 2 .* Y;  % in general, Z = f(X, Y) 
plot3(X, Y, Z, '+') 
+0

잘 보입니다. 나는 그것을 여기에 플로트했다. https://saturnapi.com/vpartition/3d-scatter-plot – FullStack

1

입니다 탐험의 가치 애비뉴입니다 :

nSamples = nX * nY; 
xValues = zeros(nSamples, 1); 
yValues = zeros(nSamples, 1); 
zValues = zeros(nSamples, 1); 

iSample = 0; 
for iX = 1:nX 
    for iY = 1:nY 
     iSample = iSample + 1; 

     xValues(iSample) = iX; 
     yValues(iSample) = iY; 
     zValues(iSample) = someFunction(iX, iY); 

    end 
end 

figure; 
plot3(xValues(:), yValues(:), zValues(:), 'r.'); 

함수 피팅 알고리즘을 테스트하기 위해 x, y 또는 z 중 일부 또는 전부에 노이즈를 추가해야합니다.