编辑:我决定将这个问题分成两部分,因为它实际上是两个问题:1。如何在MATLAB(这个问题)和2. how to put fit polar data points into a coarse (and non-polar) matrix 中制作极面曲线图
我有一个包含某些灰度值的矩阵(值介于0和1之间)。这些点存储在矩形矩阵中,但实际上通过旋转检测器获取数据点。这意味着我实际上有极坐标(我知道我的起始矩阵中每个像素的极坐标)。
我想制作数据点的极坐标图。我有下面的例子。
因为MATLAB将图像存储为矩阵,所以极坐标I与矩阵的“bins”不完全匹配。因此,我们目前使用插值算法将极坐标放入方阵中。但是,这非常慢。我看到两种方法来解决这个问题:
一些基本信息:
输入矩阵大小:512×960
当前输出矩阵大小:1024×1024
答案 0 :(得分:1)
我认为matlab中存在极坐标图的内置函数。
Z = [2+3i 2 -1+4i 3-4i 5+2i -4-2i -2+3i -2 -3i 3i-2i];
polarplot(Z,'*')
此命令绘制: plot polar
请看这个链接:
http://www.mathworks.com/help/matlab/ref/polarplot.html
要以灰度绘制,请使用“pcolor”并将colormap指定为“gray”
www.mathworks.com/help/matlab/ref/pcolor.html
答案 1 :(得分:1)
问题解决了(除了一个小缺陷),部分是因为K.M. Shihab Uddin指出了我正确的方向。不幸的是,使用冲浪意味着不断地在图中绘制图像,这也很慢。
因此,对于每个X和Y组合,我在X和Y值中都有单独的矩阵和灰度值(在一个名为C的矩阵中)。
我发现pcolor只是从顶部观察冲浪。所以我使用以下代码绘制我的图表。
surf(X,Y,C*255)
view([0,0,500])
然而,这给了我一个完全黑色的图像。这是因为在我的情况下,surf(和pcolor)径向创建960个网格线。解决方案是使用:
surf(X,Y,img2*255,'EdgeColor','none')
view([0,0,500])
现在我有一个几乎完美的形象,就像我以前一样。只有在我的960个径向线中,一个是白色的,所以我仍然必须解决这个问题。但是,我觉得这是功能冲浪的技术细节,回答这一部分不属于这个问题。