Вы можете сделать это векторизованным способом, используя поэлементные операции вместо al oop.
Обратите внимание, что, хотя переменные определены как символ c в вашем коде, они затем изменяются на double
, когда вы инициализируете их с помощью zeros
.
Математическая функция не определена в theta
= pi
, Его предел составляет 0
, но если вы вычисляете его напрямую с точностью double
, вы получите значение -1.5
, полученное из-за неточностей, присущих типам данных с плавающей запятой. Лучший способ избежать этой проблемы - использовать нечетное число выборок , чтобы theta
никогда не было слишком близко к pi
.
И наконец, polar
функция не рекомендуется . Лучше использовать polarplot
.
N = 101; % odd number of samples
theta = (0:N-1)/N*2*pi;
f = cos(1.5*pi*cos(theta))./sin(theta); % vectorized. Note element-wise division
polar(theta, f)