圆柱轴上的Matlab三维绘图

时间:2012-06-25 12:58:02

标签: matlab 3d cylindrical

我运行的模拟给了我与X个不同半径数对应的数据点,以及每个被评估的Y个角度数。这意味着我需要XY个数据点,我需要绘制。

我目前正在以非理想的方式绘制它:我使用xy轴作为rtheta轴。这意味着我的数据显示为正弦趋势,其在笛卡尔网格上随半径增加,而不是在物理上表示的圆。这就是我目前正在绘制数据的方式:

surf(r_val, th_val, v_val);

我想要做的是在圆柱轴上绘制数据,例如函数polar()的数据,但在R3空间中。我宁愿不下载工具箱,也不想修改现有的极地功能;如果没有其他解决方案,那么我显然最终会这样做。

感谢您的帮助! -G。

另外,我正在使用Matlab 2012a

修改

r_val =包含唯一半径的1x8向量

th_val =包含唯一角度的1x16向量

v_val =包含与每个位置相对应的电压的8x16矩阵

注意:(回答后)

这个问题不存在真正理想的解决方案,因为Matlab目前不支持真正的极轴方法。 Resource found here

1 个答案:

答案 0 :(得分:5)

在绘制坐标之前,您应该将坐标转换为笛卡尔坐标。 MATLAB具有用于执行coordiante变换的内置函数。例如,参见pol2cart,它将极坐标或圆柱坐标转换为笛卡尔坐标。在您的情况下,您只需使用以下内容:

[x, y] = pol2cart(th_val, r_val);

surf(x, y, v_val);

修改:鉴于th_valr_val是不同长度的向量,有必要在调用pol2cart之前首先创建一个点网格,以下几行:

[R, T] = meshgrid(r_val, th_val);
[x, y] = pol2cart(T, R);
surf(x, y, v_val);