summaryrefslogtreecommitdiff
path: root/macros/bilinear.sci
diff options
context:
space:
mode:
authorRashmi Patankar2025-03-19 11:23:42 +0530
committerGitHub2025-03-19 11:23:42 +0530
commita0bff158d21c2c12a12781bc5019f3a45bd866b2 (patch)
tree2f0d5193acebba1e16bec942d1384374e832eb1a /macros/bilinear.sci
parentaf6fe82f90dcb2314a3d37a9a1e297fb0fc447f3 (diff)
parenta9ab1158be6a5057cb9693c84c0355b99340857a (diff)
downloadFOSSEE-Signal-Processing-Toolbox-a0bff158d21c2c12a12781bc5019f3a45bd866b2.tar.gz
FOSSEE-Signal-Processing-Toolbox-a0bff158d21c2c12a12781bc5019f3a45bd866b2.tar.bz2
FOSSEE-Signal-Processing-Toolbox-a0bff158d21c2c12a12781bc5019f3a45bd866b2.zip
Merge pull request #20 from avinashlalotra/masterHEADmaster
Winter Internship 2024 work done by Abinash Singh
Diffstat (limited to 'macros/bilinear.sci')
-rw-r--r--macros/bilinear.sci28
1 files changed, 19 insertions, 9 deletions
diff --git a/macros/bilinear.sci b/macros/bilinear.sci
index d1ee3f7..1aa408a 100644
--- a/macros/bilinear.sci
+++ b/macros/bilinear.sci
@@ -1,15 +1,14 @@
// Copyright (C) 2018 - IIT Bombay - FOSSEE
-//
// This file must be used under the terms of the CeCILL.
// This source file is licensed as described in the file COPYING, which
// you should have received as part of this distribution. The terms
// are also available at
// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
// Original Source : https://octave.sourceforge.io/signal/
-// Modifieded by:Sonu Sharma, RGIT Mumbai
+// Modifieded by: Abinash Singh Under FOSSEE Internship
+// Date of Modification: 3 Feb 2024
// Organization: FOSSEE, IIT Bombay
// Email: toolbox@scilab.in
-
function [Zz, Zp, Zg] = bilinear(Sz, Sp, Sg, T)
//Transforms a s-plane filter (Analog) into a z-plane filter (Digital) using Bilinear transformation
@@ -48,13 +47,15 @@ function [Zz, Zp, Zg] = bilinear(Sz, Sp, Sg, T)
// b =
//
// 0. - 0.1666667 - 0.3333333 2.5
-
+ // Dependencies
+ // tf2zp postpad zp2tf prepad
funcprot(0);
[nargout nargin] = argn();
ieee(2);
if nargin==3
T = Sg;
+ // FIXME : tf2zp is not tested yet
[Sz, Sp, Sg] = tf2zp(Sz, Sp);
elseif nargin~=4
error("bilinear: invalid number of inputs")
@@ -77,9 +78,6 @@ function [Zz, Zp, Zg] = bilinear(Sz, Sp, Sg, T)
if Zg == 0 & nargout == 3 then
error("bilinear: invalid value of gain due to zero(s) at infinity avoid z-p-g form and use tf form ")
end
-
-
-
Zp = (2+Sp*T)./(2-Sp*T);
SZp = size(Zp);
if isempty(Sz)
@@ -88,8 +86,6 @@ function [Zz, Zp, Zg] = bilinear(Sz, Sp, Sg, T)
Zz = [(2+Sz*T)./(2-Sz*T)];
Zz = postpad(Zz, p, -1);
end
-
-
if nargout==2
// zero at infinity
Zz1 = [];
@@ -115,3 +111,17 @@ function [Zz, Zp, Zg] = bilinear(Sz, Sp, Sg, T)
end
ieee(0);
endfunction
+/*
+// FIXME- not working with three argument
+
+Note : This function is tested with Octave's outputs as a reference.
+
+[Zb,Za] = bilinear([1 0],[1 1],1,0.5) // passed
+[Zb, Za] = bilinear([], [], 1, 1) // error PASSED
+[Zb, Za] = bilinear([0], [], 1, 0.5) // error PASSED
+[Zb, Za] = bilinear([], [0], 1, 0.5) // PASSED
+
+[Zb, Za] = bilinear([2], [1], 1, 0.5) // PASSED
+[Zb, Za] = bilinear([1; -1], [0.5; -0.5], 2, 1) //PASSED
+[Zb, Za] = bilinear([0], [1], 1, 1) //PASSED
+*/ \ No newline at end of file