首页 文章

圆柱轴上的Matlab三维绘图

提问于
浏览
3

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

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

surf(r_val, th_val, v_val);

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

谢谢你的帮助! G .

另外,我正在使用Matlab 2012a

EDIT:

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

th_val =包含独特角度的1x16向量

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

NOTE: (回答后)

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

1 回答

  • 5

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

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

    Edit :鉴于 th_valr_val 是不同长度的向量,有必要在调用 pol2cart 之前首先创建一个点网格,其方式如下:

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

相关问题