* Bug #8319 fixed - dbphi(hypermat) and phasemag(hypermat) returned a matrix instead... 51/11351/3
Charlotte HECQUET [Fri, 19 Apr 2013 15:08:55 +0000 (17:08 +0200)]
Change-Id: Iba537c39f456dc421b088fd9ba1d2a8e1544d54f

scilab/CHANGES_5.5.X
scilab/modules/cacsd/macros/phasemag.sci
scilab/modules/cacsd/tests/nonreg_tests/bug_8319.dia.ref [new file with mode: 0644]
scilab/modules/cacsd/tests/nonreg_tests/bug_8319.tst [new file with mode: 0644]

index 84dbc77..a575de1 100644 (file)
@@ -85,6 +85,8 @@ Bug fixes
 
 * Bug #7927 fixed - Output "flag" in qmr function was not well documented.
 
+* Bug #8319 fixed - dbphi(hypermat) and phasemag(hypermat) returned a matrix instead of a hypermatrix.
+
 * Bug #8667 fixed - Handling of %nan in functions min,max,median is not correctly documented.
 
 * Bug #8680 fixed - Output argument "end" of the regexp function has been changed.
index 887b3af..ddf26e1 100644 (file)
@@ -22,12 +22,19 @@ end
 //compute first phase value in  (-pi, pi]
 phi1=atan(imag(z(:,1)),real(z(:,1)))
 //compute phase increments in (-pi, pi]
-z=z(:,2:$)./z(:,1:$-1)
-dphi=atan(imag(z),real(z))
+z2=z(:,2:$)./z(:,1:$-1)
+dphi=atan(imag(z2),real(z2))
 phi=cumsum([phi1 dphi],2)
 
 if part(mod,1)<>'c' then  // reset modulo 360
   phi=modulo(phi,2*%pi)
 end
 phi=phi*180/%pi //transform in degree
+
+if typeof(z) == 'hypermat' & typeof(phi) <> 'hypermat' then
+    phi_temp=phi;
+    phi = mlist(['hm','dims','entries']);
+    phi('dims') = [size(phi_temp,1) size(phi_temp,2)];
+    phi('entries') = matrix(phi_temp,size(phi_temp,1)*size(phi_temp,2),1);
+end
 endfunction
diff --git a/scilab/modules/cacsd/tests/nonreg_tests/bug_8319.dia.ref b/scilab/modules/cacsd/tests/nonreg_tests/bug_8319.dia.ref
new file mode 100644 (file)
index 0000000..2a8334e
--- /dev/null
@@ -0,0 +1,19 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Charlotte HECQUET
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 8319 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=8319
+//
+// <-- Short Description -->
+// dbphi(hypermat) and phasemag(hypermat) return a matrix instead of hypermat
+x = rand(2,2,2);
+c = x*(1+%i);
+[dB phi] = dbphi(c);
+assert_checktrue(typeof(phi) == 'hypermat');
diff --git a/scilab/modules/cacsd/tests/nonreg_tests/bug_8319.tst b/scilab/modules/cacsd/tests/nonreg_tests/bug_8319.tst
new file mode 100644 (file)
index 0000000..2cdcf59
--- /dev/null
@@ -0,0 +1,21 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Charlotte HECQUET
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 8319 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=8319
+//
+// <-- Short Description -->
+// dbphi(hypermat) and phasemag(hypermat) return a matrix instead of hypermat
+
+x = rand(2,2,2);
+c = x*(1+%i);
+[dB phi] = dbphi(c);
+assert_checktrue(typeof(phi) == 'hypermat');