summaryrefslogtreecommitdiff
path: root/macros/zp2ss.sci
diff options
context:
space:
mode:
Diffstat (limited to 'macros/zp2ss.sci')
-rw-r--r--macros/zp2ss.sci65
1 files changed, 65 insertions, 0 deletions
diff --git a/macros/zp2ss.sci b/macros/zp2ss.sci
new file mode 100644
index 0000000..ab14bfd
--- /dev/null
+++ b/macros/zp2ss.sci
@@ -0,0 +1,65 @@
+function [a, b, c, d] = zp2ss (z, p, k)
+//Converts zeros / poles to state space.
+//Calling Sequence
+//[a, b, c, d] = zp2ss (z, p, k)
+//[a, b, c] = zp2ss (z, p, k)
+//[a, b] = zp2ss (z, p, k)
+//a = zp2ss (z, p, k)
+//Parameters
+//z: Zeros
+//p: Poles
+//k: Leading coefficient
+//a: State space parameter
+//a: State space parameter
+//b: State space parameter
+//c: State space parameter
+//d: State space parameter
+//Description
+//This is an Octave function.
+//It converts zeros / poles to state space.
+//Examples
+//z = [1 2 3]
+// p = [4 5 6]
+//k = 5
+//[a, b, c, d] = zp2ss (z, p, k)
+//a =
+//
+// -0.00000 0.00000 -1.20000
+// -10.00000 0.00000 -7.40000
+// 0.00000 10.00000 15.00000
+//
+//b =
+//
+// -5.7000
+// -31.5000
+// 45.0000
+//
+//c =
+//
+// 0.00000 0.00000 1.00000
+//
+//d = 5
+
+funcprot(0);
+lhs = argn(1)
+rhs = argn(2)
+if (rhs < 3 | rhs > 3)
+error("Wrong number of input arguments.")
+end
+
+select(rhs)
+
+ case 3 then
+ if(lhs==1)
+ a = callOctave("zp2ss", z, p, k)
+ elseif(lhs==2)
+ [a, b] = callOctave("zp2ss", z, p, k)
+ elseif(lhs==3)
+ [a, b, c] = callOctave("zp2ss", z, p, k)
+ elseif(lhs==4)
+ [a, b, c, d] = callOctave("zp2ss", z, p, k)
+ else
+ error("Wrong number of output argments.")
+ end
+ end
+endfunction