iso phase curve discretisation improved + guard against negative args argument entries 94/994/2
Serge Steer [Fri, 11 Jun 2010 14:03:07 +0000 (16:03 +0200)]
Change-Id: Ic82b625fca78792832d3ebc2d971cdccf1501b5e

scilab/modules/cacsd/macros/nicholschart.sci

index 4ab1a89..971431e 100644 (file)
@@ -63,8 +63,8 @@ function nicholschart(modules,args,colors)
       colors=colors*ones(1,2)
     end
   end
-  // convert args to radian
-  args = -args * ratio;
+  // convert args to radian and insure negative
+  args = -abs(args) * ratio;
 
   //initialize handles array for chart entities
   chart_handles=[]
@@ -139,12 +139,16 @@ function nicholschart(modules,args,colors)
 
     eps=10*%eps;
     for teta=args,
+      //w = teta produce a 0 gain and consequently a singularity in module
       if teta < -%pi/2 then
         last=teta-eps,
       else
         last=teta+eps,
       end;
-      w=[-170*ratio:0.03:last last]
+      //use logarithmic discretization to have more mesh points near low modules
+      w=real(logspace(log10(-last),log10(170*ratio),150))
+      w=-w($:-1:1)
+
       n=prod(size(w));
       module=real(20*log((sin(w)*cos(teta)/sin(teta)-cos(w)))/l10)
       w=w/ratio