diff options
Diffstat (limited to 'macros/zp2ss.sci')
-rw-r--r-- | macros/zp2ss.sci | 65 |
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 |