summaryrefslogtreecommitdiff
path: root/modules/cacsd/macros/gainplot.sci
diff options
context:
space:
mode:
authorShashank2017-05-29 12:40:26 +0530
committerShashank2017-05-29 12:40:26 +0530
commit0345245e860375a32c9a437c4a9d9cae807134e9 (patch)
treead51ecbfa7bcd3cc5f09834f1bb8c08feaa526a4 /modules/cacsd/macros/gainplot.sci
downloadscilab_for_xcos_on_cloud-0345245e860375a32c9a437c4a9d9cae807134e9.tar.gz
scilab_for_xcos_on_cloud-0345245e860375a32c9a437c4a9d9cae807134e9.tar.bz2
scilab_for_xcos_on_cloud-0345245e860375a32c9a437c4a9d9cae807134e9.zip
CMSCOPE changed
Diffstat (limited to 'modules/cacsd/macros/gainplot.sci')
-rwxr-xr-xmodules/cacsd/macros/gainplot.sci119
1 files changed, 119 insertions, 0 deletions
diff --git a/modules/cacsd/macros/gainplot.sci b/modules/cacsd/macros/gainplot.sci
new file mode 100755
index 000000000..e840fa046
--- /dev/null
+++ b/modules/cacsd/macros/gainplot.sci
@@ -0,0 +1,119 @@
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - INRIA - Serge Steer
+// 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.1-en.txt
+
+function []=gainplot(varargin)
+ rhs=size(varargin)
+
+ if rhs == 0 then
+ s=poly(0,"s");
+ h1=syslin("c",(s^2+2*0.9*10*s+100)/(s^2+2*0.3*10.1*s+102.01));
+ h2=syslin("c",(s^2+2*0.1*15.1*s+228.01)/(s^2+2*0.9*15*s+225));
+ gainplot([h1;h2],0.01,100,..
+ ["$\frac{s^2+18 s+100}{s^2+6.06 s+102.1}$";
+ "$\frac{s^2+3.02 s+228.01}{s^2+27 s+225}$"]);
+ title("Gainplot");
+ return;
+ end
+
+ if type(varargin($))==10 then
+ comments=varargin($);
+ rhs=rhs-1;
+ else
+ comments=[];
+ end
+ fname="gainplot";//for error messages
+
+ fmax=[];
+ if or(typeof(varargin(1))==["state-space" "rational"]) then
+ //sys,fmin,fmax [,pas] or sys,frq
+ refdim=1 //for error message
+ if rhs==1 then
+ [frq,repf]=repfreq(varargin(1),1d-3,1d3);
+ elseif rhs==2 then //sys,frq
+ if size(varargin(2),2)<2 then
+ error(msprintf(_("%s: Wrong size for input argument #%d: A row vector with length>%d expected.\n"),..
+ fname,2,1));
+ end
+ [frq,repf]=repfreq(varargin(1:rhs));
+ elseif or(rhs==(3:4)) then //sys,fmin,fmax [,pas]
+ [frq,repf]=repfreq(varargin(1:rhs));
+ else
+ error(msprintf(_("%s: Wrong number of input arguments: %d to %d expected.\n"),fname,1,5))
+ end
+ [phi,d]=phasemag(repf);
+ elseif type(varargin(1))==1 then
+ //frq,db,phi [,comments] or frq, repf [,comments]
+ refdim=2
+ select rhs
+ case 2 then //frq,repf
+ frq=varargin(1);
+ if size(frq,2)<2 then
+ error(msprintf(_("%s: Wrong size for input argument #%d: A row vector with length>%d expected.\n"),..
+ fname,1,1))
+ end
+ if size(frq,2)<>size(varargin(2),2) then
+ error(msprintf(_("%s: Incompatible input arguments #%d and #%d: Same column dimensions expected.\n"),..
+ fname,1,2))
+ end
+
+ [phi,d]=phasemag(varargin(2))
+ case 3 then //frq,db,phi
+ [frq,d]=varargin(1:rhs-1)
+ if size(frq,2)<>size(d,2) then
+ error(msprintf(_("%s: Incompatible input arguments #%d and #%d: Same column dimensions expected.\n"),..
+ fname,1,2))
+ end
+ else
+ error(msprintf(_("%s: Wrong number of input arguments: %d to %d expected.\n"),fname,2,4))
+ end
+ else
+ error(msprintf(_("%s: Wrong type for input argument #%d: Linear dynamical system or row vector of floats expected.\n"),fname,1))
+ end;
+
+ frq=frq';
+ d=d';
+ [n,mn]=size(d);
+ if and(size(comments,"*")<>[0 mn]) then
+ error(msprintf(_("%s: Incompatible input arguments #%d and #%d: Same number of elements expected.\n"),...
+ fname,refdim,rhs+1))
+ end
+
+ //
+ fig=gcf();
+ immediate_drawing=fig.immediate_drawing;
+ fig.immediate_drawing="off";
+
+ axes = gca() ;
+ if size(axes.children,"*")==0 then
+ axes.data_bounds=[min(frq),min(d);max(frq),max(d)]
+ axes.x_label.text=_("Frequency (Hz)")
+ axes.y_label.text=_("Magnitude (dB)")
+
+ else
+ axes.data_bounds=[min([min(frq),min(d)],axes.data_bounds(1,:));
+ max([max(frq),max(d)],axes.data_bounds(2,:))];
+ end
+ axes.axes_visible="on";
+ axes.log_flags = "lnn" ;
+ axes.grid=color("lightgrey")*ones(1,3);
+
+ if size(d,2)>1&size(frq,2)==1 then
+ xpolys(frq(:,ones(1,mn)),d,1:mn)
+ e=gce();
+ else
+ xpolys(frq,d,1:mn)
+ e=gce();
+ end
+ for i=1:size(e.children,"*")
+ e.children(i).display_function = "formatGainplotTip";
+ end
+ if comments<>[] then
+ legend(comments)
+ end
+ fig.immediate_drawing=immediate_drawing;
+endfunction