我已经运行了模拟,这些模拟给出了对应于 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 .
最佳答案
在绘制它们之前,您应该将坐标转换为笛卡尔坐标。 MATLAB 具有用于执行坐标变换的内置函数。参见,例如 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);
关于圆柱轴上的 Matlab 3D 图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11189830/