Mercurial > hg > octave-lyh
annotate scripts/general/num2str.m @ 17173:bb60b1bb47cf
view.m: Fix args undefined error when calling with two arguments
author | Max Brister <max@2bass.com> |
---|---|
date | Sat, 03 Aug 2013 17:23:44 -0600 |
parents | 333243133364 |
children | c5073ed27cdc |
rev | line source |
---|---|
14138
72c96de7a403
maint: update copyright notices for 2012
John W. Eaton <jwe@octave.org>
parents:
13279
diff
changeset
|
1 ## Copyright (C) 1993-2012 John W. Eaton |
2313 | 2 ## |
3 ## This file is part of Octave. | |
4 ## | |
5 ## Octave is free software; you can redistribute it and/or modify it | |
6 ## under the terms of the GNU General Public License as published by | |
7016 | 7 ## the Free Software Foundation; either version 3 of the License, or (at |
8 ## your option) any later version. | |
2313 | 9 ## |
10 ## Octave is distributed in the hope that it will be useful, but | |
11 ## WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 ## General Public License for more details. | |
14 ## | |
15 ## You should have received a copy of the GNU General Public License | |
7016 | 16 ## along with Octave; see the file COPYING. If not, see |
17 ## <http://www.gnu.org/licenses/>. | |
245 | 18 |
3361 | 19 ## -*- texinfo -*- |
10793
be55736a0783
Grammarcheck the documentation from m-files.
Rik <octave@nomad.inbox5.com>
parents:
10549
diff
changeset
|
20 ## @deftypefn {Function File} {} num2str (@var{x}) |
4229 | 21 ## @deftypefnx {Function File} {} num2str (@var{x}, @var{precision}) |
22 ## @deftypefnx {Function File} {} num2str (@var{x}, @var{format}) | |
8442
502e58a0d44f
Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7540
diff
changeset
|
23 ## Convert a number (or array) to a string (or a character array). The |
502e58a0d44f
Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7540
diff
changeset
|
24 ## optional second argument may either give the number of significant |
502e58a0d44f
Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7540
diff
changeset
|
25 ## digits (@var{precision}) to be used in the output or a format |
502e58a0d44f
Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7540
diff
changeset
|
26 ## template string (@var{format}) as in @code{sprintf} (@pxref{Formatted |
16197
576daea679fe
num2str.m: Clarify in docstring that leading spaces will be trimmed (bug #38463)
Rik <rik@octave.org>
parents:
15732
diff
changeset
|
27 ## Output}). @code{num2str} can also handle complex numbers. |
576daea679fe
num2str.m: Clarify in docstring that leading spaces will be trimmed (bug #38463)
Rik <rik@octave.org>
parents:
15732
diff
changeset
|
28 ## |
576daea679fe
num2str.m: Clarify in docstring that leading spaces will be trimmed (bug #38463)
Rik <rik@octave.org>
parents:
15732
diff
changeset
|
29 ## Examples: |
8442
502e58a0d44f
Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7540
diff
changeset
|
30 ## |
502e58a0d44f
Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7540
diff
changeset
|
31 ## @example |
502e58a0d44f
Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7540
diff
changeset
|
32 ## @group |
502e58a0d44f
Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7540
diff
changeset
|
33 ## num2str (123.456) |
502e58a0d44f
Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7540
diff
changeset
|
34 ## @result{} "123.46" |
502e58a0d44f
Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7540
diff
changeset
|
35 ## |
502e58a0d44f
Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7540
diff
changeset
|
36 ## num2str (123.456, 4) |
502e58a0d44f
Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7540
diff
changeset
|
37 ## @result{} "123.5" |
502e58a0d44f
Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7540
diff
changeset
|
38 ## |
502e58a0d44f
Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7540
diff
changeset
|
39 ## s = num2str ([1, 1.34; 3, 3.56], "%5.1f") |
502e58a0d44f
Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7540
diff
changeset
|
40 ## @result{} s = |
502e58a0d44f
Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7540
diff
changeset
|
41 ## 1.0 1.3 |
502e58a0d44f
Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7540
diff
changeset
|
42 ## 3.0 3.6 |
502e58a0d44f
Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7540
diff
changeset
|
43 ## whos s |
502e58a0d44f
Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7540
diff
changeset
|
44 ## @result{} |
502e58a0d44f
Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7540
diff
changeset
|
45 ## Attr Name Size Bytes Class |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
46 ## ==== ==== ==== ===== ===== |
8442
502e58a0d44f
Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7540
diff
changeset
|
47 ## s 2x8 16 char |
502e58a0d44f
Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7540
diff
changeset
|
48 ## |
502e58a0d44f
Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7540
diff
changeset
|
49 ## num2str (1.234 + 27.3i) |
502e58a0d44f
Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7540
diff
changeset
|
50 ## @result{} "1.234+27.3i" |
502e58a0d44f
Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7540
diff
changeset
|
51 ## @end group |
502e58a0d44f
Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7540
diff
changeset
|
52 ## @end example |
502e58a0d44f
Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7540
diff
changeset
|
53 ## |
16197
576daea679fe
num2str.m: Clarify in docstring that leading spaces will be trimmed (bug #38463)
Rik <rik@octave.org>
parents:
15732
diff
changeset
|
54 ## Notes: |
576daea679fe
num2str.m: Clarify in docstring that leading spaces will be trimmed (bug #38463)
Rik <rik@octave.org>
parents:
15732
diff
changeset
|
55 ## |
16816
12005245b645
doc: Periodic grammarcheck of documentation.
Rik <rik@octave.org>
parents:
16724
diff
changeset
|
56 ## For @sc{matlab} compatibility, leading spaces are stripped before returning |
16197
576daea679fe
num2str.m: Clarify in docstring that leading spaces will be trimmed (bug #38463)
Rik <rik@octave.org>
parents:
15732
diff
changeset
|
57 ## the string. |
576daea679fe
num2str.m: Clarify in docstring that leading spaces will be trimmed (bug #38463)
Rik <rik@octave.org>
parents:
15732
diff
changeset
|
58 ## |
8442
502e58a0d44f
Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7540
diff
changeset
|
59 ## The @code{num2str} function is not very flexible. For better control |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
60 ## over the results, use @code{sprintf} (@pxref{Formatted Output}). |
16197
576daea679fe
num2str.m: Clarify in docstring that leading spaces will be trimmed (bug #38463)
Rik <rik@octave.org>
parents:
15732
diff
changeset
|
61 ## |
576daea679fe
num2str.m: Clarify in docstring that leading spaces will be trimmed (bug #38463)
Rik <rik@octave.org>
parents:
15732
diff
changeset
|
62 ## For complex @var{x}, the format string may only contain one |
576daea679fe
num2str.m: Clarify in docstring that leading spaces will be trimmed (bug #38463)
Rik <rik@octave.org>
parents:
15732
diff
changeset
|
63 ## output conversion specification and nothing else. Otherwise, results |
576daea679fe
num2str.m: Clarify in docstring that leading spaces will be trimmed (bug #38463)
Rik <rik@octave.org>
parents:
15732
diff
changeset
|
64 ## will be unpredictable. |
8442
502e58a0d44f
Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7540
diff
changeset
|
65 ## @seealso{sprintf, int2str, mat2str} |
3361 | 66 ## @end deftypefn |
4 | 67 |
2314 | 68 ## Author: jwe |
69 | |
4229 | 70 function retval = num2str (x, arg) |
4 | 71 |
4878 | 72 if (nargin != 1 && nargin != 2) |
5947 | 73 print_usage (); |
14538
34c932e669c8
num2str.m: Redraft code for better Matlab compatibility.
Rik <octave@nomad.inbox5.com>
parents:
14537
diff
changeset
|
74 elseif (! ismatrix (x)) |
34c932e669c8
num2str.m: Redraft code for better Matlab compatibility.
Rik <octave@nomad.inbox5.com>
parents:
14537
diff
changeset
|
75 error ("num2str: X must be a numeric, logical, or character array"); |
4878 | 76 endif |
77 | |
5443 | 78 if (ischar (x)) |
4878 | 79 retval = x; |
5947 | 80 elseif (isempty (x)) |
81 retval = ""; | |
14537
f8e041f11b18
num2str.m: Update function to address bug #36117 and bug #36121.
Rik <octave@nomad.inbox5.com>
parents:
14363
diff
changeset
|
82 elseif (isreal (x)) |
f8e041f11b18
num2str.m: Update function to address bug #36117 and bug #36121.
Rik <octave@nomad.inbox5.com>
parents:
14363
diff
changeset
|
83 if (nargin == 2) |
f8e041f11b18
num2str.m: Update function to address bug #36117 and bug #36121.
Rik <octave@nomad.inbox5.com>
parents:
14363
diff
changeset
|
84 if (ischar (arg)) |
f8e041f11b18
num2str.m: Update function to address bug #36117 and bug #36121.
Rik <octave@nomad.inbox5.com>
parents:
14363
diff
changeset
|
85 fmt = arg; |
14538
34c932e669c8
num2str.m: Redraft code for better Matlab compatibility.
Rik <octave@nomad.inbox5.com>
parents:
14537
diff
changeset
|
86 elseif (isnumeric (arg) && isscalar (arg) && arg >= 0) |
34c932e669c8
num2str.m: Redraft code for better Matlab compatibility.
Rik <octave@nomad.inbox5.com>
parents:
14537
diff
changeset
|
87 fmt = sprintf ("%%%d.%dg", arg+7, arg); |
14537
f8e041f11b18
num2str.m: Update function to address bug #36117 and bug #36121.
Rik <octave@nomad.inbox5.com>
parents:
14363
diff
changeset
|
88 else |
14538
34c932e669c8
num2str.m: Redraft code for better Matlab compatibility.
Rik <octave@nomad.inbox5.com>
parents:
14537
diff
changeset
|
89 error ("num2str: PRECISION must be a scalar integer >= 0"); |
14537
f8e041f11b18
num2str.m: Update function to address bug #36117 and bug #36121.
Rik <octave@nomad.inbox5.com>
parents:
14363
diff
changeset
|
90 endif |
f8e041f11b18
num2str.m: Update function to address bug #36117 and bug #36121.
Rik <octave@nomad.inbox5.com>
parents:
14363
diff
changeset
|
91 else |
14538
34c932e669c8
num2str.m: Redraft code for better Matlab compatibility.
Rik <octave@nomad.inbox5.com>
parents:
14537
diff
changeset
|
92 if (isnumeric (x)) |
15732
82b0ad43a939
num2str: Take into account inf inputs. Add tests for inf and NaN
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
14538
diff
changeset
|
93 ## Setup a suitable format string, ignoring inf entries |
82b0ad43a939
num2str: Take into account inf inputs. Add tests for inf and NaN
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
14538
diff
changeset
|
94 dgt = floor (log10 (max (abs (x(!isinf (x(:))))))); |
82b0ad43a939
num2str: Take into account inf inputs. Add tests for inf and NaN
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
14538
diff
changeset
|
95 |
82b0ad43a939
num2str: Take into account inf inputs. Add tests for inf and NaN
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
14538
diff
changeset
|
96 ## If the whole input array is inf... |
82b0ad43a939
num2str: Take into account inf inputs. Add tests for inf and NaN
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
14538
diff
changeset
|
97 if (isempty (dgt)) |
82b0ad43a939
num2str: Take into account inf inputs. Add tests for inf and NaN
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
14538
diff
changeset
|
98 dgt = 0; |
82b0ad43a939
num2str: Take into account inf inputs. Add tests for inf and NaN
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
14538
diff
changeset
|
99 endif |
82b0ad43a939
num2str: Take into account inf inputs. Add tests for inf and NaN
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
14538
diff
changeset
|
100 |
14538
34c932e669c8
num2str.m: Redraft code for better Matlab compatibility.
Rik <octave@nomad.inbox5.com>
parents:
14537
diff
changeset
|
101 if (any (x(:) != fix (x(:)))) |
34c932e669c8
num2str.m: Redraft code for better Matlab compatibility.
Rik <octave@nomad.inbox5.com>
parents:
14537
diff
changeset
|
102 ## Floating point input |
34c932e669c8
num2str.m: Redraft code for better Matlab compatibility.
Rik <octave@nomad.inbox5.com>
parents:
14537
diff
changeset
|
103 dgt = max (dgt + 4, 5); # Keep 4 sig. figures after decimal point |
34c932e669c8
num2str.m: Redraft code for better Matlab compatibility.
Rik <octave@nomad.inbox5.com>
parents:
14537
diff
changeset
|
104 dgt = min (dgt, 16); # Cap significant digits at 16 |
34c932e669c8
num2str.m: Redraft code for better Matlab compatibility.
Rik <octave@nomad.inbox5.com>
parents:
14537
diff
changeset
|
105 fmt = sprintf ("%%%d.%dg", dgt+7+any (x(:) < 0), dgt); |
14537
f8e041f11b18
num2str.m: Update function to address bug #36117 and bug #36121.
Rik <octave@nomad.inbox5.com>
parents:
14363
diff
changeset
|
106 else |
14538
34c932e669c8
num2str.m: Redraft code for better Matlab compatibility.
Rik <octave@nomad.inbox5.com>
parents:
14537
diff
changeset
|
107 ## Integer input |
34c932e669c8
num2str.m: Redraft code for better Matlab compatibility.
Rik <octave@nomad.inbox5.com>
parents:
14537
diff
changeset
|
108 dgt = max (dgt + 1, 1); |
34c932e669c8
num2str.m: Redraft code for better Matlab compatibility.
Rik <octave@nomad.inbox5.com>
parents:
14537
diff
changeset
|
109 ## FIXME: Integers should be masked to show only 16 significant digits |
34c932e669c8
num2str.m: Redraft code for better Matlab compatibility.
Rik <octave@nomad.inbox5.com>
parents:
14537
diff
changeset
|
110 ## See %!xtest below |
34c932e669c8
num2str.m: Redraft code for better Matlab compatibility.
Rik <octave@nomad.inbox5.com>
parents:
14537
diff
changeset
|
111 fmt = sprintf ("%%%d.%dg", dgt+2+any (x(:) < 0), dgt); |
14537
f8e041f11b18
num2str.m: Update function to address bug #36117 and bug #36121.
Rik <octave@nomad.inbox5.com>
parents:
14363
diff
changeset
|
112 endif |
f8e041f11b18
num2str.m: Update function to address bug #36117 and bug #36121.
Rik <octave@nomad.inbox5.com>
parents:
14363
diff
changeset
|
113 else |
14538
34c932e669c8
num2str.m: Redraft code for better Matlab compatibility.
Rik <octave@nomad.inbox5.com>
parents:
14537
diff
changeset
|
114 ## Logical input |
34c932e669c8
num2str.m: Redraft code for better Matlab compatibility.
Rik <octave@nomad.inbox5.com>
parents:
14537
diff
changeset
|
115 fmt = "%3d"; |
14537
f8e041f11b18
num2str.m: Update function to address bug #36117 and bug #36121.
Rik <octave@nomad.inbox5.com>
parents:
14363
diff
changeset
|
116 endif |
f8e041f11b18
num2str.m: Update function to address bug #36117 and bug #36121.
Rik <octave@nomad.inbox5.com>
parents:
14363
diff
changeset
|
117 endif |
16994
333243133364
Use matrix concatenation for strings, rather than cstrcat(), for clarity and performance.
Rik <rik@octave.org>
parents:
16816
diff
changeset
|
118 fmt = [deblank(repmat(fmt, 1, columns(x))), "\n"]; |
14537
f8e041f11b18
num2str.m: Update function to address bug #36117 and bug #36121.
Rik <octave@nomad.inbox5.com>
parents:
14363
diff
changeset
|
119 nd = ndims (x); |
f8e041f11b18
num2str.m: Update function to address bug #36117 and bug #36121.
Rik <octave@nomad.inbox5.com>
parents:
14363
diff
changeset
|
120 tmp = sprintf (fmt, permute (x, [2, 1, 3:nd])); |
16724
b7667fcb9fbc
Substitute ostrsplit() for strsplit().
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
121 retval = strtrim (char (ostrsplit (tmp(1:end-1), "\n"))); |
14538
34c932e669c8
num2str.m: Redraft code for better Matlab compatibility.
Rik <octave@nomad.inbox5.com>
parents:
14537
diff
changeset
|
122 else # Complex matrix input |
4878 | 123 if (nargin == 2) |
5443 | 124 if (ischar (arg)) |
16994
333243133364
Use matrix concatenation for strings, rather than cstrcat(), for clarity and performance.
Rik <rik@octave.org>
parents:
16816
diff
changeset
|
125 fmt = [arg "%-+" arg(2:end) "i"]; |
14538
34c932e669c8
num2str.m: Redraft code for better Matlab compatibility.
Rik <octave@nomad.inbox5.com>
parents:
14537
diff
changeset
|
126 elseif (isnumeric (arg) && isscalar (arg) && arg >= 0) |
34c932e669c8
num2str.m: Redraft code for better Matlab compatibility.
Rik <octave@nomad.inbox5.com>
parents:
14537
diff
changeset
|
127 fmt = sprintf ("%%%d.%dg%%-+%d.%dgi", arg+7, arg, arg+7, arg); |
4878 | 128 else |
14538
34c932e669c8
num2str.m: Redraft code for better Matlab compatibility.
Rik <octave@nomad.inbox5.com>
parents:
14537
diff
changeset
|
129 error ("num2str: PRECISION must be a scalar integer >= 0"); |
4878 | 130 endif |
131 else | |
132 ## Setup a suitable format string | |
14538
34c932e669c8
num2str.m: Redraft code for better Matlab compatibility.
Rik <octave@nomad.inbox5.com>
parents:
14537
diff
changeset
|
133 dgt = floor (log10 (max (max (abs (real (x(:)))), |
34c932e669c8
num2str.m: Redraft code for better Matlab compatibility.
Rik <octave@nomad.inbox5.com>
parents:
14537
diff
changeset
|
134 max (abs (imag (x(:))))))); |
34c932e669c8
num2str.m: Redraft code for better Matlab compatibility.
Rik <octave@nomad.inbox5.com>
parents:
14537
diff
changeset
|
135 if (any (x(:) != fix (x(:)))) |
34c932e669c8
num2str.m: Redraft code for better Matlab compatibility.
Rik <octave@nomad.inbox5.com>
parents:
14537
diff
changeset
|
136 ## Floating point input |
34c932e669c8
num2str.m: Redraft code for better Matlab compatibility.
Rik <octave@nomad.inbox5.com>
parents:
14537
diff
changeset
|
137 dgt = max (dgt + 4, 5); # Keep 4 sig. figures after decimal point |
34c932e669c8
num2str.m: Redraft code for better Matlab compatibility.
Rik <octave@nomad.inbox5.com>
parents:
14537
diff
changeset
|
138 dgt = min (dgt, 16); # Cap significant digits at 16 |
34c932e669c8
num2str.m: Redraft code for better Matlab compatibility.
Rik <octave@nomad.inbox5.com>
parents:
14537
diff
changeset
|
139 fmt = sprintf ("%%%d.%dg%%-+%d.%dgi", dgt+7, dgt, dgt+7, dgt); |
4878 | 140 else |
14538
34c932e669c8
num2str.m: Redraft code for better Matlab compatibility.
Rik <octave@nomad.inbox5.com>
parents:
14537
diff
changeset
|
141 ## Integer input |
34c932e669c8
num2str.m: Redraft code for better Matlab compatibility.
Rik <octave@nomad.inbox5.com>
parents:
14537
diff
changeset
|
142 dgt = max (1 + dgt, 1); |
34c932e669c8
num2str.m: Redraft code for better Matlab compatibility.
Rik <octave@nomad.inbox5.com>
parents:
14537
diff
changeset
|
143 ## FIXME: Integers should be masked to show only 16 significant digits |
34c932e669c8
num2str.m: Redraft code for better Matlab compatibility.
Rik <octave@nomad.inbox5.com>
parents:
14537
diff
changeset
|
144 ## See %!xtest below |
34c932e669c8
num2str.m: Redraft code for better Matlab compatibility.
Rik <octave@nomad.inbox5.com>
parents:
14537
diff
changeset
|
145 fmt = sprintf ("%%%d.%dg%%-+%d.%dgi", dgt+2, dgt, dgt+2, dgt); |
4878 | 146 endif |
147 endif | |
148 | |
149 ## Manipulate the complex value to have real values in the odd | |
4914 | 150 ## columns and imaginary values in the even columns. |
14537
f8e041f11b18
num2str.m: Update function to address bug #36117 and bug #36121.
Rik <octave@nomad.inbox5.com>
parents:
14363
diff
changeset
|
151 nc = columns (x); |
4878 | 152 nd = ndims (x); |
12676
2783fa95cab7
Use common code idiom for creating cell array for indexing ND-arrays
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
153 idx = repmat ({':'}, nd, 1); |
14538
34c932e669c8
num2str.m: Redraft code for better Matlab compatibility.
Rik <octave@nomad.inbox5.com>
parents:
14537
diff
changeset
|
154 perm(1:2:2*nc) = 1:nc; |
34c932e669c8
num2str.m: Redraft code for better Matlab compatibility.
Rik <octave@nomad.inbox5.com>
parents:
14537
diff
changeset
|
155 perm(2:2:2*nc) = nc + (1:nc); |
4914 | 156 idx{2} = perm; |
7208 | 157 x = horzcat (real (x), imag (x)); |
4914 | 158 x = x(idx{:}); |
5939 | 159 |
16994
333243133364
Use matrix concatenation for strings, rather than cstrcat(), for clarity and performance.
Rik <rik@octave.org>
parents:
16816
diff
changeset
|
160 fmt = [deblank(repmat(fmt, 1, nc)), "\n"]; |
4914 | 161 tmp = sprintf (fmt, permute (x, [2, 1, 3:nd])); |
4878 | 162 |
163 ## Put the "i"'s where they are supposed to be. | |
14538
34c932e669c8
num2str.m: Redraft code for better Matlab compatibility.
Rik <octave@nomad.inbox5.com>
parents:
14537
diff
changeset
|
164 tmp = regexprep (tmp, " +i\n", "i\n"); |
34c932e669c8
num2str.m: Redraft code for better Matlab compatibility.
Rik <octave@nomad.inbox5.com>
parents:
14537
diff
changeset
|
165 tmp = regexprep (tmp, "( +)i", "i$1"); |
4878 | 166 |
16724
b7667fcb9fbc
Substitute ostrsplit() for strsplit().
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
167 retval = strtrim (char (ostrsplit (tmp(1:end-1), "\n"))); |
4 | 168 endif |
169 | |
170 endfunction | |
7411 | 171 |
172 | |
14363
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
173 %!assert (num2str (123), "123") |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
174 %!assert (num2str (1.23), "1.23") |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
175 %!assert (num2str (123.456, 4), "123.5") |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
176 %!assert (num2str ([1, 1.34; 3, 3.56], "%5.1f"), ["1.0 1.3"; "3.0 3.6"]) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
177 %!assert (num2str (1.234 + 27.3i), "1.234+27.3i") |
14538
34c932e669c8
num2str.m: Redraft code for better Matlab compatibility.
Rik <octave@nomad.inbox5.com>
parents:
14537
diff
changeset
|
178 %!assert (num2str ([true false true]), "1 0 1"); |
14363
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
179 |
14537
f8e041f11b18
num2str.m: Update function to address bug #36117 and bug #36121.
Rik <octave@nomad.inbox5.com>
parents:
14363
diff
changeset
|
180 %!assert (num2str (19440606), "19440606") |
14538
34c932e669c8
num2str.m: Redraft code for better Matlab compatibility.
Rik <octave@nomad.inbox5.com>
parents:
14537
diff
changeset
|
181 %!assert (num2str (2^33), "8589934592") |
34c932e669c8
num2str.m: Redraft code for better Matlab compatibility.
Rik <octave@nomad.inbox5.com>
parents:
14537
diff
changeset
|
182 %!assert (num2str (-2^33), "-8589934592") |
34c932e669c8
num2str.m: Redraft code for better Matlab compatibility.
Rik <octave@nomad.inbox5.com>
parents:
14537
diff
changeset
|
183 %!assert (num2str (2^33+1i), "8589934592+1i") |
34c932e669c8
num2str.m: Redraft code for better Matlab compatibility.
Rik <octave@nomad.inbox5.com>
parents:
14537
diff
changeset
|
184 %!assert (num2str (-2^33+1i), "-8589934592+1i") |
15732
82b0ad43a939
num2str: Take into account inf inputs. Add tests for inf and NaN
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
14538
diff
changeset
|
185 %!assert (num2str (inf), "Inf") |
82b0ad43a939
num2str: Take into account inf inputs. Add tests for inf and NaN
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
14538
diff
changeset
|
186 %!assert (num2str (nan), "NaN") |
14538
34c932e669c8
num2str.m: Redraft code for better Matlab compatibility.
Rik <octave@nomad.inbox5.com>
parents:
14537
diff
changeset
|
187 |
34c932e669c8
num2str.m: Redraft code for better Matlab compatibility.
Rik <octave@nomad.inbox5.com>
parents:
14537
diff
changeset
|
188 ## FIXME: Integers greater than bitmax() should be masked to show just |
34c932e669c8
num2str.m: Redraft code for better Matlab compatibility.
Rik <octave@nomad.inbox5.com>
parents:
14537
diff
changeset
|
189 ## 16 digits of precision. |
34c932e669c8
num2str.m: Redraft code for better Matlab compatibility.
Rik <octave@nomad.inbox5.com>
parents:
14537
diff
changeset
|
190 %!xtest |
34c932e669c8
num2str.m: Redraft code for better Matlab compatibility.
Rik <octave@nomad.inbox5.com>
parents:
14537
diff
changeset
|
191 %! assert (num2str (1e23), "100000000000000000000000"); |
14537
f8e041f11b18
num2str.m: Update function to address bug #36117 and bug #36121.
Rik <octave@nomad.inbox5.com>
parents:
14363
diff
changeset
|
192 |
14363
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
193 %!error num2str () |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
194 %!error num2str (1, 2, 3) |
14538
34c932e669c8
num2str.m: Redraft code for better Matlab compatibility.
Rik <octave@nomad.inbox5.com>
parents:
14537
diff
changeset
|
195 %!error <X must be a numeric> num2str ({1}) |
34c932e669c8
num2str.m: Redraft code for better Matlab compatibility.
Rik <octave@nomad.inbox5.com>
parents:
14537
diff
changeset
|
196 %!error <PRECISION must be a scalar integer> num2str (1, {1}) |
34c932e669c8
num2str.m: Redraft code for better Matlab compatibility.
Rik <octave@nomad.inbox5.com>
parents:
14537
diff
changeset
|
197 %!error <PRECISION must be a scalar integer> num2str (1, ones (2)) |
34c932e669c8
num2str.m: Redraft code for better Matlab compatibility.
Rik <octave@nomad.inbox5.com>
parents:
14537
diff
changeset
|
198 %!error <PRECISION must be a scalar integer> num2str (1, -1) |
34c932e669c8
num2str.m: Redraft code for better Matlab compatibility.
Rik <octave@nomad.inbox5.com>
parents:
14537
diff
changeset
|
199 %!error <PRECISION must be a scalar integer> num2str (1+1i, {1}) |
34c932e669c8
num2str.m: Redraft code for better Matlab compatibility.
Rik <octave@nomad.inbox5.com>
parents:
14537
diff
changeset
|
200 %!error <PRECISION must be a scalar integer> num2str (1+1i, ones (2)) |
34c932e669c8
num2str.m: Redraft code for better Matlab compatibility.
Rik <octave@nomad.inbox5.com>
parents:
14537
diff
changeset
|
201 %!error <PRECISION must be a scalar integer> num2str (1+1i, -1) |
14363
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
202 |