9a2ab3f46b3f8602e67a529bf79b73c7e2155e70
[scilab.git] / scilab / modules / cacsd / macros / sgrid.sci
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) INRIA
3 // This file must be used under the terms of the CeCILL.
4 // This source file is licensed as described in the file COPYING, which
5 // you should have received as part of this distribution.  The terms
6 // are also available at    
7 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
8
9
10
11 function [] = sgrid(zeta,wn,col)
12
13 // sgrid()
14 // sgrid(Z,Wn)
15 // sgrid('new') 
16   [lhs,rhs]=argn(0)
17   axes=gca();
18   select rhs
19   case 0 then 
20     wn= 0:1:10;
21     zeta = linspace(0,1,10);
22     col=3;
23   case 1 then
24     if type(zeta)<>10 then
25       error(msprintf(_("%s: Wrong type for input argument #%d: String array expected.\n"),"sgrid",1))
26     end
27     if size(zeta,'*')<>1 then
28       error(msprintf(_("%s: Wrong size for input argument #%d: A string expected.\n"),"sgrid",1))
29     end
30     wn = 0:1:10;
31     zeta = [ 0 .1 .2 .3 .4 .5 .6 .7 .8 .9 1 ];
32     col=3;
33     clf()
34     axes.data_bounds=[-20,-20;20,20];axes.axes_visible='on';
35   case 2 then
36     col=3;
37   end 
38   wmax = 10 .^(floor(log10(max(abs(axes.data_bounds)))));
39   // building a grid 
40   zx = 0:.01:1;
41   [rx,cx]=size(wn);[ry,cy]=size(zx);
42   w=wn.*.ones(cy,1);z=zx'.*.ones(1,cx);
43
44   // plot : part I 
45   re = - w .* z;
46   [zr,zc] = size(z);
47   im = w .* sqrt( 1 - z .* z );
48   plot2d(re,im,style=col*ones(1,zc));
49   plot2d(re,-im,style=col*ones(1,zc));
50   
51   // info on curves 
52
53   [rer,rec] = size(re)
54
55   axes.clip_state = "clipgrf";
56   xnumb(re(1,:),im(1,:),wn);
57   axes.clip_state = "off";
58
59   // building an other grid 
60
61   wn = [0,wn,2*wmax];
62   [rx,cx]=size(wn);[ry,cy]=size(zeta);
63   w=wn.*.ones(cy,1);z=zeta'.*.ones(1,cx);
64
65   // plot part II  
66
67   [zr,zc] = size(z);
68   re = -w .* z;
69   im = w .* sqrt( 1 - z .* z );
70   plot2d(re',im',style=col*ones(1,zr));
71   plot2d(re',-im',style=col*ones(1,zr));
72
73   // info on each curve ( straight lines )
74   [rer,rec] = size(re)
75   axes.clip_state = "clipgrf";
76   xnumb(re(:,$)',im(:,$)',zeta);
77   axes.clip_state = "off";
78   
79 endfunction