今天的任务是需要把一个以距离r为横坐标,以角度theta为纵坐标的彩色图像,转换为一个以theta和r为元素的扇形图。
由于没有找到可以直接画出极坐标彩图的函数,所以最终需要给直角坐标系下的像素点赋值。
两种思路,
一种是用x,y来表示theta和r,以读取原图中的彩色像素值。
即,
r = sqrt(x^2+y^2);
theta = atan(y/x)*180/pi;
但是有可能用x,y算出来的r和theta在原数据中没有对应值,那么在直接赋值sector(x,y) = P_music(r,theta);时matlab索引坐标就会报错。
不然需要匹配最接近r和theta再读取值就很麻烦。计算量嗖嗖的。
另一种思路是用theta和r来表示x,y,但是x,y需要是整数。因此选取了一个四舍五入的办法。还是画出来了。嘿嘿。看起来就像B超图...
x = round(r(k) * cos(theta(i)));
y = round(r(k) * sin(theta(i)));
sector(x++1,y+1+max(r)) = P_music(k,i);
由于中间缺失了很多点,所以会很马赛克。
所以我又用interp2做了简单的插值,看起来边界没那么硬了。