How can I polar plot in decibels?
68 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Pilar Jiménez
il 11 Lug 2018
Commentato: Pilar Jiménez
il 11 Lug 2018
I have the following results in dBs, I need to make a polar graph with these values, but I can not find the correct way to graph them. I hope you can help me, this is the code I have:
puntos=101;
teta=linspace(-pi/2,pi/2,puntos);
corte0=[ -7.838577 -7.832224 -7.813205 -7.781625 -7.737674 -7.681614 -7.613759 -7.534502 -7.44429 -7.343629 -7.233057 -7.113168 -6.984587 -6.847963 -6.703968 -6.553286 -6.396613 -6.234628 -6.068019 -5.897437 -5.723536 -5.54693 -5.368196 -5.187878 -5.006474 -4.824449 -4.642216 -4.460145 -4.278563 -4.097766 -3.918009 -3.739528 -3.562553 -3.387297 -3.214005 -3.042917 -2.874333 -2.708591 -2.546094 -2.387311 -2.232779...
-2.083104 -1.938968 -1.801116 -1.670343 -1.547495 -1.43342 -1.328996 -1.235081 -1.152506 -1.082048 -1.024429 -0.980308 -0.950234 -0.934665 -0.933967 -0.948368 -0.978023 -1.022938 -1.083016 -1.158051 -1.247738 -1.351648 -1.469277 -1.600019 -1.743196 -1.898051 -2.06376 -2.239445 -2.424194 -2.617045 -2.816997 -3.023051 -3.234174 -3.449336 -3.667496 -3.887619 -4.108674 -4.329646 -4.549521 -4.767314 -4.982032 -5.192729...
-5.398455 -5.598276 -5.791293 -5.976641 -6.15345 -6.320908 -6.478218 -6.624628 -6.759425 -6.881949 -6.991595 -7.0878 -7.170061 -7.237973 -7.291164 -7.329369 -7.352368 -7.360037];
parche=db2mag(corte0);
corte90= [-21.7136 -21.422581 -20.646576 -19.587852 -18.420361 -17.246315 -16.113091 -15.037758 -14.023014 -13.065556 -12.159986 -11.300657 -10.482368 -9.700682 -8.951984 -8.233437 -7.54299 -6.879227 -6.241355 -5.629077 -5.042615 -4.482525 -3.949742 -3.4454 -2.970901 -2.527738 -2.117475 -1.741663 -1.401798 -1.09923 -0.835085 -0.61021 -0.425063 -0.279627 -0.173322 -0.104944 -0.072548 -0.073378 -0.10389 -0.159741...
-0.235912 -0.326925 -0.427152 -0.531135 -0.634019 -0.731884 -0.821932 -0.902473 -0.972771 -1.032644 -1.082048 -1.120685 -1.147753 -1.161962 -1.161733 -1.145631 -1.112919 -1.064068 -1.001096 -0.927695 -0.849008 -0.771236 -0.701124 -0.645415 -0.61041 -0.601672 -0.623827 -0.680485 -0.774288 -0.906942 -1.07932 -1.291582 -1.543242 -1.833276 -2.160211 -2.522179 -2.916971 -3.342113 -3.794876 -4.27235 -4.771453 -5.288964...
-5.821557 -6.365805 -6.918194 -7.475142 -8.032939 -8.58776 -9.135592 -9.672182 -10.192956 -10.692926 -11.166648 -11.608166 -12.011011 -12.368385 -12.673313 -12.919049 -13.099545 -13.209938 -13.247106];
parche90=db2mag(corte90);
polar(teta,corte0,'k')
hold on;
polar(teta,corte90)
The objective is to have a graph like this, with the labels in dBs.
0 Commenti
Risposta accettata
Kelly Kearney
il 11 Lug 2018
If you have a recent version of Matlab (R2016a or later), you can use polaraxes/polarplot to get much more flexibility in setting up your axis:
polaraxes('RLim', [-22 0], ...
'thetadir', 'clockwise', ...
'thetazerolocation', 'top');
hold on;
polarplot(teta, [corte0; corte90]);
If you're running an older version of Matlab, the mmpolar function (available on the File Exchange) offers very similar functionality:
mmpolar(teta, [corte0; corte90], ...
'RLimit', [-22 0], ...
'TDirection', 'cw', ...
'TZeroDirection', 'North');
Both functions allow you to customize many properties of the polar axis, including R- and Theta-limits, angle direction and units, colors, labels, etc. Polaraxes are a little more robust, in that they create modifiable handle objects, but are still pretty limited in what can be plotted (no support of patch objects, for example), so I keep both these functions in my arsenal for now.
4 Commenti
Kelly Kearney
il 11 Lug 2018
If you're running an older version of Matlab, especially a pre-HG2 version of Matlab (graphics were overhauled in R2014b), I don't believe you'd be able to open the polarplot figure even if I sent it to you.
Looks like the File Exchange is down for maintenance today, but you should be able to download mmpolar as soon as that's back up.
Più risposte (1)
dpb
il 11 Lug 2018
You're in luck; TMW did introduce a somewhat more capable polar plotting capability in R2016b...
hP=polarplot(teta,corte0,'k');
hold on
hP(2)=polarplot(teta,corte90);
rlim([-40 0])
It still is lacking in some features, amongst which is there is no 'RLabel' nor 'ThetaLabel' property altho there is associated 'xxxTickLabel'. Why left of the overall label is anybody's guess. Anyways, complaints aside...
hAx=gca; % returns a new polaraxis object
hTxt=text(deg2rad(82),4,'dB'); % label for the r-axis units...trial and error to locate
Vedere anche
Categorie
Scopri di più su Polar Plots in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!