Fixed problem when the input argument theta is column vector. 64/10664/5
Stanislav KROTER [Sat, 2 Mar 2013 13:50:40 +0000 (19:50 +0600)]
Instruction 'for t=theta' works well if theta is a row vector.

Change-Id: I3093722b4468adfb853e71ea659b328b68d9fde7

scilab/CHANGES_5.5.X
scilab/modules/graphics/macros/paramfplot2d.sci
scilab/modules/graphics/tests/nonreg_tests/bug_paramfplot2d.dia.ref [new file with mode: 0644]
scilab/modules/graphics/tests/nonreg_tests/bug_paramfplot2d.tst [new file with mode: 0644]

index afd4364..614f5d6 100644 (file)
@@ -49,6 +49,9 @@ Xcos
 Bug fixes
 ==========
 
+* paramfplot2d: When input argument theta was column vector, an error occurred.
+
+
 * Bug #6693 fixed - modulo did not accept polynomial inputs. Help page was not updated.
 
 * Bug #7684 fixed - Introduction demo splitted in subsections.
index 7ee7fc7..4272214 100644 (file)
@@ -3,18 +3,18 @@
 // 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    
+// are also available at
 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
 
 function paramfplot2d(f,x,theta,flag,rect)
     //animated plot of x-->f(x,t) for t=theta(1),theta(2),etc
-    //x=N-vector of x-values 
+    //x=N-vector of x-values
     //f(x,t)=N-vector of y-values.
-    //f: mapping x,t -> f(x,t) = R^N valued function for x= vector of R^N and t=real number. 
+    //f: mapping x,t -> f(x,t) = R^N valued function for x= vector of R^N and t=real number.
     //f can be a either Scilab function or a dynamically linked routine since
     // y=f(x,t) is evaluated as y=feval(x(:),t,f). See feval.
     // Here y should be a column vector.
-    //theta = row vector of parameters theta=[theta(1), theta(2),... theta(M)]
+    // vector of parameters theta=[theta(1), theta(2),... theta(M)]
     // Optional parameters
     //flag = 'yes' (screen is cleared between two consecutive plots).
     //flag = 'no'  (screen is not cleared between two consecutive plots).
@@ -26,7 +26,7 @@ function paramfplot2d(f,x,theta,flag,rect)
     [lhs,rhs]=argn(0)
 
     if ~rhs then
-        deff('y=f(x,t)','y=t*sin(x)')
+        deff("y=f(x,t)","y=t*sin(x)")
         x=linspace(0,2*%pi,50);theta=0:0.05:1;
         clf;
         paramfplot2d(f,x,theta);
@@ -38,6 +38,7 @@ function paramfplot2d(f,x,theta,flag,rect)
     end
 
     x=x(:);
+    theta=theta(:).'; // it should be a row-vector
     if rhs<5 then //compute the data bounds
         xmin=min(x);xmax=max(x);
         ymin=%inf;ymax=-%inf;
@@ -46,21 +47,21 @@ function paramfplot2d(f,x,theta,flag,rect)
         end
         rect=[xmin,xmax,ymin,ymax];
     end
-    if rhs<4 then flag='no';end
+    if rhs<4 then flag="no";end
     realtimeinit(0.1);
 
     clf();
     fig=gcf();
     a=gca();
     a.data_bounds=matrix(rect,2,2);
-    a.axes_visible='on';
-    fig.pixmap='on'; //double buffer mode
+    a.axes_visible="on";
+    fig.pixmap="on"; //double buffer mode
     y=feval(x,theta(1),f);
     xpoly(x,y(:));p=gce(); //the polyline handle
     realtime(0);
-    if flag=='no' then
+    if flag=="no" then
         drawlater();
-        for k=1:size(theta,'*')
+        for k=1:size(theta,"*")
             realtime(k);
             y=feval(x,theta(k),f);
             p.data(:,2)=y(:);
@@ -68,12 +69,12 @@ function paramfplot2d(f,x,theta,flag,rect)
         end
     else
         drawlater();
-        for k=1:size(theta,'*')
+        for k=1:size(theta,"*")
             realtime(k);
             plot2d(x,feval(x,theta(k),f))
             drawnow();
         end
     end
-    fig.pixmap='off';
+    fig.pixmap="off";
 
 endfunction
diff --git a/scilab/modules/graphics/tests/nonreg_tests/bug_paramfplot2d.dia.ref b/scilab/modules/graphics/tests/nonreg_tests/bug_paramfplot2d.dia.ref
new file mode 100644 (file)
index 0000000..85570b6
--- /dev/null
@@ -0,0 +1,17 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - S/E - Sylvestre Ledru
+// Copyright (C) 2013 - Stanislav KROTER
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- Non-regression test for bug 11333 -->
+//
+// <-- TEST WITH GRAPHIC -->
+//
+// <-- Short Description -->
+// paramfplot2d was failing with theta
+deff('y=f(x,t)','y=t*sin(x)');
+x=linspace(0,2*%pi,50);
+theta=0:0.05:1;
+clf;paramfplot2d(f,x,theta.');
diff --git a/scilab/modules/graphics/tests/nonreg_tests/bug_paramfplot2d.tst b/scilab/modules/graphics/tests/nonreg_tests/bug_paramfplot2d.tst
new file mode 100644 (file)
index 0000000..d0e83d0
--- /dev/null
@@ -0,0 +1,23 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - S/E - Sylvestre Ledru
+// Copyright (C) 2013 - Stanislav KROTER
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- Non-regression test for bug 11333 -->
+//
+// <-- TEST WITH GRAPHIC -->
+//
+// <-- Short Description -->
+// paramfplot2d was failing with theta
+
+deff('y=f(x,t)','y=t*sin(x)');
+x=linspace(0,2*%pi,50);
+theta=0:0.05:1;
+clf;paramfplot2d(f,x,theta.');
+
+
+
+