Polarplot in dB.

64 次查看(过去 30 天)
Yuval
Yuval 2016-12-1
Hi, I am trying to plot a certain function (traveling wave) using polarplot(). However, the result isn't even close to that presented in the attachment, which is supposed to be the polar plot of the very same function! I have been trying for two days now to figure out what might be causing this visual discrepancy, to no avail. Below is my calling of polarplot:
theta=transpose(-1:0.01:1);
MagE=(cot(theta*pi/2).^2).*(sin(5*pi*(cos(theta*pi)-1))).^2;
polarplot(theta*pi,MagE,'Linewidth',1,'color',[.21 .81 .94]);
I also tried changing MagE to db(MagE), as the plot in the attachment appears to be in dB, yet it didn't do the trick. I hope someone here might be able to suggest a solution. I'd appreciate any assistance, advice, promptly if possible. Thanks
in advance.

采纳的回答

Honglei Chen
Honglei Chen 2016-12-1
You need to be careful about dB values as they might be negative. So you need to preprocess it to make it all positive before plotting and then fix the labeling. Here is an example
MagEdB = 10*log10(MagE);
MagEdB = MagEdB - max(MagEdB);
MagEdB(MagEdB<-40) = -40;
h = polarplot(theta*pi,MagEdB+40,'Linewidth',1,'color',[.21 .81 .94]);
haxes = get(h,'Parent');
haxes.RTickLabel = {'-40','-30','-20','-10','0'};
HTH
  4 个评论
Honglei Chen
Honglei Chen 2016-12-1
BTW, another possibility is your data. If you look at your original MagE, the value in the middle is NaN, it's probably because you have a 0/0, but there is a valid limit value for that point. You may need to condition your data first.
HTH
Honglei Chen
Honglei Chen 2016-12-2
Looking at your equation, when theta is 0, you know that the function should give you the value of 0 when it approaches 0. However, because the way you construct your function, when MATLAB evaluates it, it notices that it is inf*0, so it gives you an NaN (Think for example the case of sin(x)/x). Therefore, you need to identify those cases yourself before you plot so it does not try to plot NaN, which is a gap.
For example, in your original, there is a gap at theta==0. If I do the adjustment before plotting, then it works just fine.
MagE(theta==0) = 0; % <- preconditioning
MagEdB = 10*log10(MagE);
MagEdB = MagEdB - max(MagEdB);
MagEdB(MagEdB<-40) = -40;
h = polarplot(theta*pi,MagEdB+40,'Linewidth',1,'color',[.21 .81 .94]);
haxes = get(h,'Parent');
haxes.RTickLabel = {'-40','-30','-20','-10','0'};
HTH

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Array Geometries and Analysis 的更多信息

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by