phdg
- 1. function[] = phdg(phasor,setgrid)
% PhasorDiagram (phdg) plotsthe phasordiagramfora matrix of phasors.
% The diagramlimitsare automaticallysettoshow all the phasorsinthe
% matrix.The setgridargumentchoosesif there isagrid(1) or not (0).The
% phasorsmustbe inpolarform.Enter theminthe command-line like this:
%
% va = [100 20]; % [magnitude angle]
% vb= [8 139];
% vc = [50 270];
% vd= [30 300];
% phasor= [va;vb;vc;vd;];
% phdg(phasor,1) % Plotphasordiagramwithgrid
% phdg(phasor,0) % Plotphasordiagramwithoutgrid
count = size(phasor); % Phasormatrix index usedtoploteachphasor
minx = zeros(1,count(1)); % X- and Y- coordinate limits
maxx = minx;
miny= minx;
maxy= minx;
points= 100; % # of pointsineachline (more = smoother)
ps = 5; % Percentscaling(give phasorssome more room)
% Loopthat plotseach phasorand getscoordinate limitsof eachsothat
% the final plotisproperlyscaledandshowsall the phasors:
for i = 1:count(1)
re = phasor(i,1)*cos(phasor(i,2)*(pi/180)); % Separate intoreal
im = phasor(i,1)*sin(phasor(i,2)*(pi/180)); % and imaginaryparts.
if((phasor(i,2) ==0)||(phasor(i,2) ==360)) % +ve real phasor
x = 0:1/points:re; % setphasorstartingpoint
im= 0;
minx(i)=0; % getminx-coordinate
maxx(i) =re; % getmax x
miny(i) =-re*(ps/100); % getminy
maxy(i) =-miny(i); % getmax y
elseif(phasor(i,2) ==90) % +ve imag phasor
minx(i)=-im*(ps/100);
maxx(i) =-minx(i);
miny(i) =0;
maxy(i) =im;
elseif((phasor(i,2) ==180)||(phasor(i,2) == -180)) % -ve real phasor
x = re:1/points:0;
im= 0;
minx(i)=re;
maxx(i) =0;
miny(i) =re*(ps/100);
maxy(i) =-miny(i);
elseif((phasor(i,2) ==270)||(phasor(i,2) == -90)) % -ve imagphasor
minx(i)=im*(ps/100);
maxx(i) =-minx(i);
miny(i) =im;
maxy(i) =0;
- 2. elseif((re>0)&&(im> 0)) % Firstquadrantphasor
x = 0:1/points:re;
minx(i)=0;
maxx(i) =re;
miny(i) =0;
maxy(i) =im;
elseif((re<0)&&(im> 0)) % Secondquadrantphasor
x = re:1/points:0;
minx(i)=re;
maxx(i) =0;
miny(i) =0;
maxy(i) =im;
elseif((re<0)&&(im< 0)) % Thirdquadrantphasor
x = re:1/points:0;
minx(i)=re;
maxx(i) =0;
miny(i) =im;
maxy(i) =0;
elseif((re>0)&&(im< 0)) % Fourthquadrant phasor
x = 0:1/points:re;
minx(i)=0;
maxx(i) =re;
miny(i) =im;
maxy(i) =0;
end
if(abs(im)==phasor(i,1)) % Special plotfor+ve and -ve imagphasors
a = stem(0,im,'.');
b = get(a,'Baseline');
set(b,'visible','off');
plot(0,im,'r*');
else
y= (im/re).*x; % Get y-valuesof the phasors.
plot(x,y,re,im,'r*'); % Everythingbesides+ve and -ve imag
end % phasorsgetsplottedhere.
holdon
end
plot(0,0,'o'); % Plotthe origin.
daspect([11 1]) % Equal aspectratio preservesangles.
scale = max([max(maxx)-min(minx) max(maxy)-min(miny)])*(ps/200); % Make extraroom.
axis([min(minx)-scale max(maxx)+scalemin(miny)-scale max(maxy)+scale]) % Re-plotwith
xlabel('Real') % properlimits.
ylabel('Imaginary')
if(setgrid) % Turn on gridif desired
grid on
end
holdoff
end