分享好友 编程语言首页 频道列表

如何将极坐标数据转换为笛卡尔坐标系并绘制[MATLAB]

matlab  2023-03-16 16:200

你想做的事

考虑根据与原点的距离 $r$ 和 $xy$ 平面上的角度 $heta$ 绘制数据 $P(r, heta)$。例如,雷达获取的信号包含有关目标范围 $r$ 和方位角 $heta$ 的信息。就是下图。

極座標データを直交座標系に変換して描画する方法【MATLAB】

在本文中,$heta$ 是从 $x$ 轴测量的角度。

極座標データを直交座標系に変換して描画する方法【MATLAB】

显示示例

考虑创建依赖于 $r, heta$ 的虚拟数据 $P(r, heta)$ 并将其绘制在 $xy$ 平面上。

虚拟数据

生成虚拟数据 $P(r, heta)$ 作为高斯分布与极坐标系中目标位置 $(r_0, heta_0)$ 的乘积。

P(r,	heta) = dfrac{1}{sqrt{2pisigma_r^2}} exp{left[-dfrac{(r-r_0)^2}{2sigma_r^2}ight]}cdot dfrac{1}{sqrt{2pisigma_	heta^2}} exp{left[-dfrac{(	heta-	heta_0)^2}{2sigma_	heta^2}ight]}

$sigma_r^2$, $sigma_heta^2$ 表示距离和角度方差。

变换和绘制

定义距离和角度,并使用 meshgrid 函数将其转换为二维数组。然后,确定目标位置$(r_0, heta_0)$,生成虚拟数据$P(r, heta)$。

% define range and theta
range = linspace(0,2,31); % m
theta = deg2rad(linspace(0,360,91)); % rad
[Range,Theta] = meshgrid(range,theta);

% target position
r0 = 1;
theta0 = deg2rad(75);

% dummy data P
gaussfunc = @(x,mu,sigma) 1/(sqrt(2*pi)*sigma)*exp(-(x-mu).^2/(2*sigma^2));
P = gaussfunc(Range,r0,0.2).*gaussfunc(Theta,theta0,0.2);

接下来,从极坐标系转换为直角坐标系。极坐标$(r, heta)$对应笛卡尔坐标$(x,y)$如下。

left{
egin{align}
x &= rcos{	heta} \
y &= rsin{	heta} 
end{align} 
ight.

通过将距离和角度的二维数组逐个元素相乘,转换为 $x,y$。此外,作为奖励,提取虚拟数据 $P(r, heta)$ 的最大点的索引。

% convert from circular coordinates to Cartesian coordinates
X = Range.*cos(Theta);
Y = Range.*sin(Theta);

% detect max value and its index
[maxval,maxidx] = max(P,[],'all');
[maxidx_row,maxidx_col] = ind2sub(size(P),maxidx);

在 MATLAB 中,使用 .* 获取元素乘积。

曲面图用来。

surface(X,Y,Z,C)

X,Y,Z 是网格状的 $x,y,z$ 坐标,C 是确定颜色的数组。
X,Y,Z,C 的大小必须相同。

曲面图的文档

曲面图本质上是一个在 3D 空间中绘制曲面的函数。但是,由于我们要的是$xy$平面上的二维图像,所以即使$z$坐标的所有值都设置为0也没有问题。这时候,从正上方向下看,就变成了二维图像。

FS = 16; % fontsize
MS = 30; % markersize

figure(1);
clf(1);
surface(X,Y,zeros(size(X)),P,'EdgeColor','none'); % surface plot
hold on;
plot3(X(maxidx),Y(maxidx),0,'.r','MarkerSize',MS); % plot max point
xlabel('x (m)');
ylabel('y (m)');
cb = colorbar;
cb.Label.String = 'Data value';
daspect([1,1,1]); % Set the axes data aspect ratio
set(gca,'fontsize',FS);

下图是$r_0 = 1hspace{1mm}mathrm{m}, heta_0 = 75^circ$时得到的图像。红点表示最大点的位置。

極座標データを直交座標系に変換して描画する方法【MATLAB】

最大点的位置似乎稍微偏离的原因是由于表面函数的规范。 Surface函数以顶点为单位绘制每个数据,而不是以面为单位,因此略有偏差。网格越细,偏差越小。

执行环境

MATLAB R2022a
使用的工具箱:无


原创声明:本文系作者授权爱码网发表,未经许可,不得转载;

原文地址:https://www.likecs.com/show-308632742.html

查看更多关于【matlab】的文章

展开全文
相关推荐
反对 0
举报 0
评论 0
图文资讯
热门推荐
优选好物
更多推荐文章
如何在Abaqus的python中调用Matlab程序
目录1. 确定版本信息2. 备份python3. 设置环境变量4. 安装程序5. 调试运行参考资料Abaqus2018操作系统Win10 64位Python版本2.7(路径C:\SIMULIA\CAE\2018\win_b64\tools\SMApy\python2.7)2. 备份python将上述的“python2.7”文件夹复制出来,避免因操作错误

0评论2023-03-16608

ROS与Matlab系列:一个简单的运动控制 基于matlab的运动控制系统
转自:http://blog.exbot.net/archives/2594Matlab拥有强大的数据处理、可视化绘图能力以及众多成熟的算法函数,非常适合算法开发;在控制系统设计中,Simulink也是普遍使用的设计和仿真工具。而ROS系统,则是一种新的标准化机器人系统软件框架。通过ROS,你

0评论2023-02-10920

matlab 遍历结构体struc的成员
MATLAB中专门用于对结构数组的操作的函数并不多,通过 help datatypes获取数据类型列表,可以看到其中的结构数据类型的有关的函数,主要如表4.3.1所示。表4.3.1 结构数组的操作函数函数名             功能描述 deal                 把输入处

0评论2023-02-09712

matlab编程如何换行 matlab怎么换行
空格+三个点+逗号

0评论2023-02-09691

C/C++中调用matlab引擎计算 matlab转c
原帖地址:http://blog.sina.com.cn/s/blog_6adcb3530101cvot.html一,在linux环境使用matlab引擎必须先进行一些必要的配置1,matlab引擎依赖/bin/csh启动,所以不管你使用何种shell,都必须安装csh。**2,matlab引擎依赖的动态库文件目录必须在系统当前的

0评论2023-02-09451

matlab几何纠正,间接法,双线性内插
超简洁,超级快,两个文件datapre.m文件代码:global X;global Y;global A;global l;global i;global I;global m;global n;global k;global dx;  A=[];l=[];i=0;m=[];n=[];dx=[]; fig=figure;subplot(1,2,1);I=imread('编程实习2-待纠正图像.bmp');imshow(I

0评论2023-02-09482

Matlab 根号的输入
二次根号:sqrt(a)或a^0.5三次根号:x^(1/3)或者x.^(1/3)根据x的数据结构类型矩阵、数组需要.^

0评论2023-02-09969

命令视频Matlab下查看摄像头设备信息
时间紧张,先记一笔,后续优化与完善。    应用如下2个命令:         info = imaqhwinfo('winvideo')    每日一道理 俄国作家契诃夫说:“有大狗,有小狗,小狗不该因为大狗的存在而心慌意乱。所有的狗都应该叫,就让他各自用上帝给他的声音

0评论2023-02-09957

How to use the HMM toolbox (Matlab)
一、离散输出的隐马尔科夫模型(DHMM,HMM with discrete outputs)最大似然参数估计EM(Baum Welch算法)The script dhmm_em_demo.m gives an example of how to learn an HMM with discrete outputs. Let there be Q=2 states and O=3 output symbols. We c

0评论2023-02-09459

permutation 随机置换检验的Matlab程序
假定a为某指标在10个样本中的值,5个一组,看以两组均值的差为例(统计量),随机置换检验程序 example: a: 230 -1350 -1580 -400 -760 970 110 -50 -190 -200v1=sum(a(1:5))/5;v2=sum(a(6:10))/5;T=abs(v1-v2);x=perms(a);      %矩阵a的全排列(随机全

0评论2023-02-09662

MATLAB学习1 之画图函数
ezplot适用条件“ezplot”命令可以用于显函数、隐函数和参数方程作图。不同函数的使用格式显函数y=f(x),ezplot函数的调用格式为ezplot(f, [xmin xmax]);              例:ezplot(\'sin(10*pi*x)/x\',[1 2]);%画出函数曲线隐函数f(x,y)=0,ezplot函数的

0评论2023-02-09591

Matlab 之 数据元素访问
Matlab的含义是矩阵实验室,其特征之一就是数据的向量化操作,借此提升软件运行效率。那么,必然会涉及数据元素的访问。Matlab主要支持下面一些形式的访问:(1)array-inde: A(i)(2)cell-index: C{i}(3)struct field: S.fieldname不同的访问方式,效

0评论2023-02-09994

matlab遍历文件夹下所有图片和遍历所有子文件夹下图片
做图像处理实验,经常需要遍历当前文件下所有图片。matlab当然很早就考虑了这个问题,库函数dir就是完成这个工作的。函数返回的是一个存放所有目录下文件信息的结构体,通过遍历结构体就可以达到访问所有文件的目的了。具体实现见下面程序:imgPath = 'E:/ima

0评论2023-02-09630

更多推荐