圆柱轴上的Matlab三维绘图

gki*_*iar 3 3d matlab cylindrical

我运行了模拟,它给出了X与不同半径数相对应的数据点,以及Y评估每个半径的角度数.这意味着我有X时间Y,我需要绘制的数据点.

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

surf(r_val, th_val, v_val);
Run Code Online (Sandbox Code Playgroud)

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

谢谢你的帮助!G.

另外,我正在使用Matlab 2012a

编辑:

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

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

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

注意:(回答后)

这个问题不存在真正理想的解决方案,因为Matlab目前不支持真正的极轴方法.资源在这里找到.

Chr*_*ris 5

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

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

surf(x, y, v_val);
Run Code Online (Sandbox Code Playgroud)

编辑:鉴于th_val并且r_val是不同长度的向量,有必要首先在调用之前创建一个点网格pol2cart,沿着以下行:

[R, T] = meshgrid(r_val, th_val);
[x, y] = pol2cart(T, R);
surf(x, y, v_val);
Run Code Online (Sandbox Code Playgroud)

  • 我不确定你的意思*矩阵值不再匹配*.也许您可以通过更多详细信息更新您的问题.但是,`surf`也接受'x`和`y`的矩阵.在这种情况下,`x`,`y`和`z`必须都是相同的大小.尝试类似`[R,T] = meshgrid(r_val,th_val)`,然后`[x,y] = pol2cart(T,R);`. (2认同)