figure; zgrid; hold on;
Ts = .1; wn = [.4*pi/Ts .6*pi/Ts]; FillColor = 'r';
wn_lb = wn(1); wn_ub = wn(2);
zeta = linspace(0,1);
mag_lb = exp(-zeta.*wn_lb*Ts);
ang_lb = sqrt(1-zeta.^2).*wn_lb*Ts;
z_lb = mag_lb.*exp(ang_lb*1j);
mag_ub = exp(-zeta.*wn_ub*Ts);
ang_ub = sqrt(1-zeta.^2).*wn_ub*Ts;
z_ub = mag_ub.*exp(ang_ub*1j);
theta_lb = linspace(angle(conj(z_lb(1))),angle(z_lb(1)));
unit_circle_lb = cos(theta_lb) + sin(theta_lb)*1j;
theta_ub = linspace(angle(conj(z_ub(1))),angle(z_ub(1)));
unit_circle_ub = cos(theta_ub) + sin(theta_ub)*1j;
theta = [linspace(angle(conj(z_ub(1))),angle(conj(z_lb(1)))) linspace(angle(z_lb(1)),angle(z_ub(1)))];
unit_circle = cos(theta) + sin(theta)*1j;
scatter([real(z_ub) flip(real(z_ub)) real(unit_circle) real(z_lb) flip(real(z_lb))],...
[imag(z_ub) flip(-imag(z_ub)) imag(unit_circle) imag(z_lb) flip(-imag(z_lb))])
x = [real(z_ub) flip(real(z_ub)) real(unit_circle) real(z_lb) flip(real(z_lb))];
y = [imag(z_ub) flip(-imag(z_ub)) imag(unit_circle) imag(z_lb) flip(-imag(z_lb))];
X_original = [x' y'];
X_ordered = zeros(size(X_original));
X_ordered(1,:) = X_original(1,:);
x_temp = X_original(1,:);
X_original(1,:) = [];
count = 2;
while ~isempty(X_original)
[~,idx] = min(pdist2(X_original, x_temp));
X_ordered(count,:) = X_original(idx, :);
x_temp = X_original(idx, :);
X_original(idx, :) = [];
count = count + 1;
end
hold off; figure;
p = patch(X_ordered(:,1), X_ordered(:,2), 'r');
p.FaceAlpha = 0.2;
p.EdgeColor = 'none';
zgrid
Best Answer