2014-09-25 7 views
0

나는이 3 개의 벡터를 가지고 있으며 그 중 3 차원 그래프가 필요합니다.
X와 Y는 좌표이고 Z는 에너지입니다. 문제는 아마도 griddata 또는 interp2를 사용하여 해결할 수 있습니다. 그러나 실제로 어떻게 처리해야하는지 이해하지는 못합니다.Matlab 3 벡터 3 차원 플롯

x = [703 704 705 706 762 760 762 764 766 766 771 771 ... 
    828 831 502 836 891 892 895 318 320 379 379 382 383 ... 
    384 442 443 444 444 445 447 449 511 508 511 509 509 ... 
    510 509 510 574 573 573 573 573 573 574 576 575 578 ... 
    635 635 634 637 637 639 641 642 643 827 827 828 644 ... 
    697 697 891 698 699 892 704]; 

y = [498 563 629 692 179 241 305 371 435 498 561 624 ... 
    429 496 176 559 374 430 565 502 565 374 439 505 569 ... 
    631 183 312 375 440 501 567 631 247 309 373 438 502 ... 
    566 628 694 181 244 308 372 437 502 565 629 693 755 ... 
    181 245 310 372 436 500 564 629 693 244 308 371 755 ... 
    180 244 308 308 372 503 436]; 

z = [71172.63 59691.115 41209.71 45061.89 59223.98 ... 
    42330.585 41934.85 66172.105 45911.76 45078.01 68746.4 ... 
    51346.567 57932.58 48625.975 42202 44483.783 62927.595 ... 
    53761.958 43314.128 42754.26 31610.293 45376.275 34661.647 ... 
    35105.147 39571.948 38936.785 83547.518 39633.85 44048.802 ... 
    35590.97 49392.215 38008.345 42108.543 47486 26103 28599 ... 
    31419 29271.158 41591.745 32203.217 35669.092 50788.315 ... 
    29967.715 30581.138 30694.737 33782.143 40074.855 28531.265 ... 
    38337.658 31429.015 33893.448 58948.058 39229.93 39465.64 ... 
    37449.57 40265.768 43811.802 42839.647 50270.707 55402.198 ... 
    54075.66 43573.7325 38312.1075 57198.402 58962.967 50880.345 ... 
    52337.115 59699.333 43770.645 55210.7025 77166.775]; 
+1

안녕하세요! 그것은 당신이 대답을 받아들이면 어떻게 작동합니까, 어떻게 StackOerflow가 작동하는지! ;) –

답변

4

당신은 보간 메쉬와 3D 그림을 만들 수 있습니다 enter image description here

코드는 자신의 site에 덕에 의해 자세히 설명 :

x=[703 704 705 706 762 760 762 764 766 766 771 771 828 831 502 836 891 892 895 318 320 379 379 382 383 384 442 443 444 444 445 447 449 511 508 511 509 509 510 509 510 574 573 573 573 573 573 574 576 575 578 635 635 634 637 637 639 641 642 643 827 827 828 644 697 697 891 698 699 892 704] 
y=[498 563 629 692 179 241 305 371 435 498 561 624 429 496 176 559 374 430 565 502 565 374 439 505 569 631 183 312 375 440 501 567 631 247 309 373 438 502 566 628 694 181 244 308 372 437 502 565 629 693 755 181 245 310 372 436 500 564 629 693 244 308 371 755 180 244 308 308 372 503 436] 
z=[71172.63 59691.115 41209.71 45061.89 59223.98 42330.585 41934.85 66172.105 45911.76 45078.01 68746.4 51346.567 57932.58 48625.975 42202 44483.783 62927.595 53761.958 43314.128 42754.26 31610.293 45376.275 34661.647 35105.147 39571.948 38936.785 83547.518 39633.85 44048.802 35590.97 49392.215 38008.345 42108.543 47486 26103 28599 31419 29271.158 41591.745 32203.217 35669.092 50788.315 29967.715 30581.138 30694.737 33782.143 40074.855 28531.265 38337.658 31429.015 33893.448 58948.058 39229.93 39465.64 37449.57 40265.768 43811.802 42839.647 50270.707 55402.198 54075.66 43573.7325 38312.1075 57198.402 58962.967 50880.345 52337.115 59699.333 43770.645 55210.7025 77166.775] 

% interpolation on regular grid 
xlin=linspace(min(x),max(x),50); 
ylin=linspace(min(y),max(y),50); 
[X,Y]=meshgrid(xlin,ylin); 
Z=griddata(x,y,z,X,Y,'cubic'); 

% visualization 
mesh(X,Y,Z); 
axis tight; hold on 
plot3(x,y,z,'.', 'MarkerSize',15) 
xlabel('x') 
ylabel('y') 
%surf(X,Y,Z) 

결과는 같습니다.
물론 '입방'보간을 '선형'보간으로 바꿀 수 있습니다.

+0

고맙습니다. –

+0

+1 - 이것은 제가 해왔 던 접근입니다. – rayryeng

+0

네, 멋지다. 나는 데이터 분석을하고 있기 때문에 필자가 필요로했지만 실제로 matlab이 실제로 작동하는 방법을 알아 내는데 많은 시간을 할애 할 필요가 없다. 다시 Thnx :) –

관련 문제