summaryrefslogtreecommitdiff
path: root/3432/DEPENDENCIES/zpk_dk.sci
diff options
context:
space:
mode:
Diffstat (limited to '3432/DEPENDENCIES/zpk_dk.sci')
-rw-r--r--3432/DEPENDENCIES/zpk_dk.sci43
1 files changed, 43 insertions, 0 deletions
diff --git a/3432/DEPENDENCIES/zpk_dk.sci b/3432/DEPENDENCIES/zpk_dk.sci
new file mode 100644
index 000000000..95b4e6c13
--- /dev/null
+++ b/3432/DEPENDENCIES/zpk_dk.sci
@@ -0,0 +1,43 @@
+//------------------------------------------------------------------
+//------------------------------------------------------------------
+//A function written by Deepti Khimani.
+//Usage:-
+//p=zpk_dk(sl)
+//[p, z]=zpk_dk(sl)
+//[p, z, k]=zpk_dk(sl)
+//p:- Poles of the system
+//z:- zeros of the system
+//k:- DC gain of the system
+//------------------------------------------------------------------
+//------------------------------------------------------------------
+
+function[pl,zr,k]=zpk_dk(sysmodel)
+ [lhs,rhs]=argn(0)
+
+ if rhs == 0 then
+ disp(["p=zpk_dk(sl)";"[p, z]=zpk_dk(sl)";"[p, z, k]=zpk_dk(sl)"]);
+ disp(["p:- Poles of the system";"z:- zeros of the system"]);
+ disp("k:- DC gain of the system");
+ return;
+ end
+
+ if typeof(sysmodel)=="rational" then
+ sys=tf2ss(sysmodel);
+ pl=spec(sys.A);
+ zr=trzeros(sys);
+ temp1=poly(zr,'s','roots')/poly(pl,'s','roots');
+ temp2=sysmodel/temp1;
+ temp3=tf2ss(temp2);
+ k=temp3.D;
+ elseif typeof(sysmodel)=="state-space" then
+ pl=spec(sysmodel.A);
+ zr=trzeros(sysmodel);
+ g=ss2tf(sysmodel);
+ temp1=poly(zr,'s','roots')/poly(pl,'s','roots');
+ temp2=g/temp1;
+ temp3=tf2ss(temp2);
+ k=temp3.D
+ else
+ error("Wrong type of input argument.")
+ end
+endfunction