在3D-等值面图中交换Y轴和Z轴

时间:2014-05-15 15:10:21

标签: matlab interchange rotor

最近几天,我在3D-等值面图上尝试交换Y轴和Z轴时遇到了麻烦。我想交换Y轴和Z轴以便可视化它并且能够更清楚地讨论结果。我记得过去我曾经用两种方式交换Y轴和Z轴:

1)使用轴柄:

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

我遇到的错误如下:''轴'类中没有'Ydata'属性。'

2)通过切换isosurface-command中的数据进行交换:

等值面(X,Z,Y,calulated_rotor,iso_value) 我收到以下错误:'X,Y和Z必须是MESHGRID生成的矩阵。'

但是,使用meshgrid生成X,Y,Z。我试图解决这个错误:

    [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)

然而,这并未显示第一个转子I的旋转版本。它显示错误的计算转子。所以我的主要问题仍然存在:如何以正确的方式交换Y轴和Z轴?

我的Matlab版本是R2010a。

1 个答案:

答案 0 :(得分:0)

'YData'属性属于Surfaceplot,而不是Axes,这就是您收到错误的原因。例如,mesh()调用返回该Surfaceplot的句柄(请查看绘图函数的文档)。您还可以查询'Children'的{​​{1}}属性以获取此句柄(如果gca确实是保存表面的轴的句柄)。

至于gca电话......它是卷曲吗?如果是,您应该知道更改参考框架的相对方向(例如,交换 y z 轴)会与矢量场的Curl方向混淆;好吧,它与矢量场本身相混淆......