Что-то странное с использованием функции полярного графика в MATLAB - PullRequest
0 голосов
/ 20 ноября 2018

У меня есть простая функция от тета, и я хочу построить эту функцию в дБ, используя функцию polarplot в MATLAB. Но когда я делаю график от -40 до 0, кажется, что график имеет странную часть вокруг горизонтальной оси. Мой код MATLAB (R2016a):

%% Define range of plotting angle.
ceta= [10^-9:0.0001:2*pi];
% ceta starts not from pure zero to avoid 0/0 in some cases.

E =  abs( ( cos((cos(ceta))*pi/2) ) ./ ( sin(ceta) ) ); 

power_dB = 10.*log10(E.^2); 
power_dB = power_dB - max(power_dB);
max(power_dB)
polarplot(ceta,power_dB);
rlim([-40 0]); 

Полученная цифра такая: plot resulting from code

1 Ответ

0 голосов
/ 20 ноября 2018

Ваши значения для E очень близки к 0, когда ceta = 0, pi или 2pi. Это приводит к очень большим значениям, когда вы берете журнал E.

Вы можете просто удалить точки из ceta и E, когда E очень низок. Смотрите блок кода ниже.

E =  abs( (  cos((cos(ceta))*pi/2) ) ./ ( sin(ceta) ) ); 
ceta(E<1e-2) = [];
E(E<1e-2) = []; 
power_dB = 10.*log10(E.^2); 
power_dB = power_dB - max(power_dB);
max(power_dB)
polarplot(ceta,power_dB);
rlim([-40 0]);

Дает:

enter image description here

...