[Octave/Matlab] Värdmängd hos principialargumentet arg
Postat: 15 juni 2013, 12:58:45
Jag försöker rita en graf med argument eller fas hos en överföringsfunktion H_AP enligt Octave-koden bifogad nedan. H_AP beskriver ett allpassfilter med fasfördröjning mellan 0 och 2π.
Problemet är att jag vill använda ett principialargumentet med värdmängd inom [0, 2π] istället för [-π, π] vilket är standard i Octave för funktionen arg. Då undrar jag om ni andra känner till några trix eller andra funktioner som jag kan använda mig av för att få önskad värdmängd och då kunna rita grafen snyggt utan hopp som figuren nedan visar?
Problemet är att jag vill använda ett principialargumentet med värdmängd inom [0, 2π] istället för [-π, π] vilket är standard i Octave för funktionen arg. Då undrar jag om ni andra känner till några trix eller andra funktioner som jag kan använda mig av för att få önskad värdmängd och då kunna rita grafen snyggt utan hopp som figuren nedan visar?
Kod: Markera allt
f_s = 2*pi;
T = 1/f_s;
w = linspace (0, pi);
W = w*T;
z = e.^(j.*w);
a = 0.9;
b = 0.5;
H_AP = (a - b*(1+a)*z.^-1 + z.^-2) ./ (1 - b*(1+a)*z.^-1 + a*z.^-2);
subplot (2, 1, 1), plot (W ,abs(H_AP))
ylabel ('|H_{AP}(z)|');
xlabel ('\Omega');
subplot (2, 1, 2), plot (W ,arg(H_AP))
ylabel ('arg(H_{AP}(z))');
xlabel ('\Omega');
Df = acos (2*a / (1+2*a));
printf ("Δf = %f\n", Df);
wc = acos(b);
printf("ω_c = %f\n", wc);