plotting equation which is function of 2 variable
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
RJS
el 6 de Oct. de 2021
Comentada: RJS
el 9 de Oct. de 2021
I have one equation in terms of 2 variable A,B, I want to plot magnitude vs phase for different value of A and B .
i don't know how to do this . i was trying but it won't work
for A = -20:1:20
for B = -20:1:20
g=(1+i*B)/(1+i*A);
M=20*log10(abs(g)); %Magnitude matrix of Compensator
M = round(M,2);
P =rad2deg(angle(g)); %Phase Matrix of compensator
P = round(P,2);
plot(P,M);
hold on
end
end
trying to plot this figure
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/759521/image.png)
then
Find value of A and B for particualr value of phase and magnitude.
0 comentarios
Respuesta aceptada
Cris LaPierre
el 6 de Oct. de 2021
Your code is close. I would take advantage of meshgrid instead of the for loops. Here's what I get making that change. Also, there is no need to round.
[A,B] = meshgrid(-20:1:20);
g=(1+i*B)./(1+i*A);
M=20*log10(abs(g)); %Magnitude matrix of Compensator
P=rad2deg(angle(g)); %Phase Matrix of compensator
plot(P,M,'k')
8 comentarios
Cris LaPierre
el 8 de Oct. de 2021
Editada: Cris LaPierre
el 8 de Oct. de 2021
Perhaps try adding an assumption that a and b are real.
syms a b real
g=(1+i*b)/(1+i*a);
E = [20*log10(abs(g)) == 10, rad2deg(angle(g)) == 12];
S = vpasolve(E,a,b)
Now test the result to see if it results in the expected M and P values.
A=double(S.a);
B=double(S.b);
g=(1+i*B)./(1+i*A);
M=20*log10(abs(g)) % Should be 10
P =rad2deg(angle(g)) % Should be 12
Más respuestas (0)
Ver también
Categorías
Más información sobre Numbers and Precision en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!