Hi! I am trying to fill a region between parametric curves, defined by the following code (in a zgrid):
figure; zgrid; hold on;Ts = .1; wn = [.4*pi/Ts .6*pi/Ts]; FillColor = 'r';wn_lb = wn(1); wn_ub = wn(2); % Values of zeta that correspond to start and end of wn curves:
zeta = linspace(0,1); % Create vector of complex numbers to plot:
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); % Create unit circle arc for appropriate shading:
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;% This is a plot of the region I want to get!
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))])% This is all I've gotten so far... :(
hold off; figure; fill([real(z_ub),flip(real(z_ub)),(real(unit_circle)),real(z_lb),flip(real(z_lb)),real(unit_circle)], ... [imag(z_ub),flip(-imag(z_ub)),(imag(unit_circle)),imag(z_lb),flip(-imag(z_lb)),imag(unit_circle)],... FillColor,'FaceAlpha',.3);zgrid
However, I can't seem to figure out how to fill the center region of figure 1. Thus far, figure 2 is the best I've gotten to using fill.
(Perhaps using patch?)
Thanks so much!
Best Answer