1

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

1)使用轴手柄:

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

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

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

isosurface(X, Z, Y, calulated_rotor, iso_value) 我收到以下错误:“X、Y 和 Z 必须是 MESHGRID 生成的矩阵。”

但是,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 轴?

我的 Matlab 版本是 R2010a。

4

1 回答 1

0

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

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

于 2014-05-15T16:01:57.417 回答