2014-05-15 6 views
1

지난 며칠간 3D- 등면 곡면에서 Y 축과 Z 축을 교환하는 데 문제가 있습니다. 시각화하고 더 명확하게 결과를 논의 할 수 있도록 Y 축과 Z 축을 교환하고 싶습니다.3D-isosurface 플롯에서 Y 축과 Z 축 교환하기

1) 축 핸들을 사용 :

yy = get(gca, 'YData'); 
    zz = get(gca, 'Zdata'); 
    set(gca, 'YData', zz, 'ZData', yy); 

I 발생할 오류 다음이다 : 나는 과거에 내가 두 가지 방법으로 Y, Z 축를 교환하는 데 사용되는 기억 '이 '축'클래스에는 'Ydata'속성이 없습니다. '

있는 isosurface (X, Z, Y, calulated_rotor, iso_value) I가 다음 오류 : 제조 'X는, Y와 Z가 있어야 행렬있는 isosurface 커맨드의 데이터를 전환하여 상호 교환

2) 메슈 그리드.

그러나 X, Y, Z는 meshgrid를 사용하여 생성됩니다. 나는이 오류를 풀려고했다 :

[X Z Y] = meshgrid(x, z, y) % instead of [X Y Z] = meshgrid(x, z, y) 
    % recalculate the velocity matrices VX, VY, VZ: 3D-matrices , code not provided 
    calculated_rotor_2 = rotor(X, Z, Y, VX, VZ, VY) % instead of calculated_rotor = rotor(X,Y,Z, VX, VY, VZ) 
    isosurface(X, Z, Y, calculated_rotor_2, iso_value) % instead of isosurface(X, Y, Z, calculated_rotor, iso_value) 

그러나 이것은 내가 계산 한 첫 번째 회 전자의 회전 된 버전을 표시하지 않는다. 잘못 계산 된 회 전자를 표시합니다. 그래서 중요한 질문이 남아 있습니다 : 어떻게 Y와 Z 축을 올바른 방법으로 교환 할 수 있습니까?

My Matlab 버전은 R2010a입니다.

미리 감사드립니다. 당신이 오류가 발생하는 이유는 그래서

종류에 관해서는, Lennert J.는

답변

0

'YData' 재산은 Surfaceplot 아닌 축에 속한다. 해당 Surfaceplot의 핸들은 예를 들어 mesh() 호출에 의해 반환됩니다 (플로팅 기능의 문서를 확인하십시오). gca'Children' 속성을 쿼리하여이 핸들을 얻을 수도 있습니다 (gca이 실제로 표면을 유지하는 축의 핸들 인 경우).

rotor은 전화가 ... 컬입니까? 그렇다면 참조 프레임의 상대 방향을 변경하면 (예 : x z 축) 벡터 필드의 컬링 방향이 바뀌는 것을 알고 있어야합니다. 음, 벡터 필드 자체가 엉망이됩니다.

+0

도와 주셔서 감사합니다. 1) 현재이 개체에서 Y 및 Z 데이터를 추출하기 위해 p = patch (isosurface (...))를 사용하려고합니다. 이 데이터를 (설정 및 가져 오기 명령으로) 전환하려고하면 이상한 결과가 발생하고 올바른지 모릅니다. [link] (http://www.mathworks.nl/help/matlab/ref/patch_props.html)에 명시된대로 얼굴과 정점을 사용해야합니까? 2) 로터에 관해서 : 그렇습니다 나는 컬을 의미했습니다. 저를 용서해주십시오. 나는 축을 망치는 것이 아주 속임수라는 사실을 알고있었습니다. 그래서 나는 succes없이 나의 속도를 조정했다. 미리 감사드립니다. –