我运行的模拟给了我与X
个不同半径数对应的数据点,以及每个被评估的Y
个角度数。这意味着我需要X
次Y
个数据点,我需要绘制。
我目前正在以非理想的方式绘制它:我使用x
和y
轴作为r
和theta
轴。这意味着我的数据显示为正弦趋势,其在笛卡尔网格上随半径增加,而不是在物理上表示的圆。这就是我目前正在绘制数据的方式:
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
答案 0 :(得分:5)
在绘制坐标之前,您应该将坐标转换为笛卡尔坐标。 MATLAB具有用于执行coordiante变换的内置函数。例如,参见pol2cart
,它将极坐标或圆柱坐标转换为笛卡尔坐标。在您的情况下,您只需使用以下内容:
[x, y] = pol2cart(th_val, r_val);
surf(x, y, v_val);
修改:鉴于th_val
和r_val
是不同长度的向量,有必要在调用pol2cart
之前首先创建一个点网格,以下几行:
[R, T] = meshgrid(r_val, th_val);
[x, y] = pol2cart(T, R);
surf(x, y, v_val);