Mercurial > octave
annotate scripts/plot/draw/reducevolume.m @ 30236:628f26e122d9
maint: use rows() or columns() instead of size(__, 1 | 2) for clarity.
* ccolamd.cc, colamd.cc, Map.m, material.m, isocolors.m, isonormals.m,
isosurface.m, light.m, reducepatch.m, reducevolume.m, movfun.m, ilu.m,
__alltohandles__.m, dump_demos.m, mk-sparse-tst.sh:
Use rows() or columns() instead of size(__, 1 | 2) for clarity.
author | Rik <rik@octave.org> |
---|---|
date | Mon, 11 Oct 2021 20:09:59 -0700 |
parents | 7854d5752dd2 |
children | 796f54d4ddbf |
rev | line source |
---|---|
27923
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
1 ######################################################################## |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
2 ## |
29358
0a5b15007766
update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents:
27978
diff
changeset
|
3 ## Copyright (C) 2016-2021 The Octave Project Developers |
27918
b442ec6dda5c
use centralized file for copyright info for individual contributors
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
4 ## |
27923
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
5 ## See the file COPYRIGHT.md in the top-level directory of this |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
6 ## distribution or <https://octave.org/copyright/>. |
22231
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
7 ## |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
8 ## This file is part of Octave. |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
9 ## |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
23220
diff
changeset
|
10 ## Octave is free software: you can redistribute it and/or modify it |
22231
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
11 ## under the terms of the GNU General Public License as published by |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
23220
diff
changeset
|
12 ## the Free Software Foundation, either version 3 of the License, or |
22755
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22295
diff
changeset
|
13 ## (at your option) any later version. |
22231
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
14 ## |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
15 ## Octave is distributed in the hope that it will be useful, but |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
16 ## WITHOUT ANY WARRANTY; without even the implied warranty of |
22755
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22295
diff
changeset
|
17 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22295
diff
changeset
|
18 ## GNU General Public License for more details. |
22231
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
19 ## |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
20 ## You should have received a copy of the GNU General Public License |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
21 ## along with Octave; see the file COPYING. If not, see |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
23220
diff
changeset
|
22 ## <https://www.gnu.org/licenses/>. |
27923
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
23 ## |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
24 ######################################################################## |
22231
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
25 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
26 ## -*- texinfo -*- |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
27 ## @deftypefn {} {[@var{nx}, @var{ny}, @var{nz}, @var{nv}] =} reducevolume (@var{v}, @var{r}) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
28 ## @deftypefnx {} {[@var{nx}, @var{ny}, @var{nz}, @var{nv}] =} reducevolume (@var{x}, @var{y}, @var{z}, @var{v}, @var{r}) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
29 ## @deftypefnx {} {@var{nv} =} reducevolume (@dots{}) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
30 ## |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
31 ## Reduce the volume of the dataset in @var{v} according to the values in |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
32 ## @var{r}. |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
33 ## |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
34 ## @var{v} is a matrix that is non-singleton in the first 3 dimensions. |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
35 ## |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
36 ## @var{r} can either be a vector of 3 elements representing the reduction |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
37 ## factors in the x-, y-, and z-directions or a scalar, in which case the same |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
38 ## reduction factor is used in all three dimensions. |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
39 ## |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
40 ## @code{reducevolume} reduces the number of elements of @var{v} by taking |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
41 ## only every @var{r}-th element in the respective dimension. |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
42 ## |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
43 ## Optionally, @var{x}, @var{y}, and @var{z} can be supplied to represent the |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
44 ## set of coordinates of @var{v}. They can either be matrices of the same size |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
45 ## as @var{v} or vectors with sizes according to the dimensions of @var{v}, in |
28959
5394d688d456
doc: Use @code{} within alternate text for @xref,@pxref macros for better Info display.
Rik <rik@octave.org>
parents:
28896
diff
changeset
|
46 ## which case they are expanded to matrices |
5394d688d456
doc: Use @code{} within alternate text for @xref,@pxref macros for better Info display.
Rik <rik@octave.org>
parents:
28896
diff
changeset
|
47 ## (@pxref{XREFmeshgrid,,@code{meshgrid}}). |
22231
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
48 ## |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
49 ## If @code{reducevolume} is called with two arguments then @var{x}, @var{y}, |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
50 ## and @var{z} are assumed to match the respective indices of @var{v}. |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
51 ## |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
52 ## The reduced matrix is returned in @var{nv}. |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
53 ## |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
54 ## Optionally, the reduced set of coordinates are returned in @var{nx}, |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
55 ## @var{ny}, and @var{nz}, respectively. |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
56 ## |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
57 ## Examples: |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
58 ## |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
59 ## @example |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
60 ## @group |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
61 ## @var{v} = reshape (1:6*8*4, [6 8 4]); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
62 ## @var{nv} = reducevolume (@var{v}, [4 3 2]); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
63 ## @end group |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
64 ## @end example |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
65 ## |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
66 ## @example |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
67 ## @group |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
68 ## @var{v} = reshape (1:6*8*4, [6 8 4]); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
69 ## @var{x} = 1:3:24; @var{y} = -14:5:11; @var{z} = linspace (16, 18, 4); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
70 ## [@var{nx}, @var{ny}, @var{nz}, @var{nv}] = reducevolume (@var{x}, @var{y}, @var{z}, @var{v}, [4 3 2]); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
71 ## @end group |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
72 ## @end example |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
73 ## |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
74 ## @seealso{isosurface, isonormals} |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
75 ## @end deftypefn |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
76 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
77 function [nx, ny, nz, nv] = reducevolume (varargin) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
78 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
79 if (nargin < 2 || nargin > 5) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
80 print_usage (); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
81 endif |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
82 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
83 [x, y, z, v, r] = __get_check_reducevolume_args__ (nargout, varargin{:}); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
84 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
85 [nx, ny, nz, nv] = __reducevolume__ (x, y, z, v, r); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
86 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
87 if (nargout <= 1) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
88 nx = nv; |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
89 endif |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
90 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
91 endfunction |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
92 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
93 function [x, y, z, v, r] = __get_check_reducevolume_args__ (naout, varargin) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
94 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
95 x = y = z = []; |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
96 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
97 switch (nargin) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
98 case 3 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
99 v = varargin{1}; |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
100 r = varargin{2}; |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
101 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
102 case 6 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
103 if (naout == 4) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
104 x = varargin{1}; |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
105 y = varargin{2}; |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
106 z = varargin{3}; |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
107 endif |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
108 v = varargin{4}; |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
109 r = varargin{5}; |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
110 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
111 otherwise |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
112 error ("reducevolume: incorrect number of arguments"); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
113 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
114 endswitch |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
115 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
116 ## Check reduction values R |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
117 if (isscalar (r)) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
118 r = [r, r, r]; |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
119 elseif (numel (r) != 3) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
120 error (["reducevolume: reduction value R must be a scalar or " ... |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
121 "a vector of length 3"]); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
122 endif |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
123 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
124 if (any (r < 1 | r != fix (r))) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
125 error ("reducevolume: reduction values R must be positive integers"); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
126 endif |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
127 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
128 ## Check dimensions of data |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
129 if (ndims (v) < 3) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
130 error ("reducevolume: data V must have at least 3 dimensions"); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
131 endif |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
132 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
133 v_sz = size (v); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
134 if (any (v_sz(1:3) < 2)) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
135 error ("reducevolume: data must be a non-singleton 3-dimensional matrix"); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
136 endif |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
137 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
138 if (naout == 4) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
139 if (isempty (x)) |
30236
628f26e122d9
maint: use rows() or columns() instead of size(__, 1 | 2) for clarity.
Rik <rik@octave.org>
parents:
29359
diff
changeset
|
140 x = 1:columns (v); |
22231
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
141 endif |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
142 if (isempty (y)) |
30236
628f26e122d9
maint: use rows() or columns() instead of size(__, 1 | 2) for clarity.
Rik <rik@octave.org>
parents:
29359
diff
changeset
|
143 y = 1:rows (v); |
22231
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
144 endif |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
145 if (isempty (z)) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
146 z = 1:size (v, 3); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
147 endif |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
148 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
149 ## check x |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
150 if (isvector (x) && length (x) == v_sz(2)) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
151 x = repmat (x(:)', [v_sz(1) 1 v_sz(3)]); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
152 elseif (! size_equal (v, x)) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
153 error ("reducevolume: X must match the size of data V"); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
154 endif |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
155 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
156 ## check y |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
157 if (isvector (y) && length (y) == v_sz(1)) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
158 y = repmat (y(:), [1 v_sz(2) v_sz(3)]); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
159 elseif (! size_equal (v, y)) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
160 error ("reducevolume: Y must match the size of data V"); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
161 endif |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
162 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
163 ## check z |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
164 if (isvector (z) && length (z) == v_sz(3)) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
165 z = repmat (reshape (z(:), [1 1 length(z)]), ... |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
166 [v_sz(1) v_sz(2) 1]); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
167 elseif (! size_equal (v, z)) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
168 error ("reducevolume: Z must match the size of data V"); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
169 endif |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
170 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
171 endif |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
172 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
173 endfunction |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
174 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
175 function [nx, ny, nz, nv] = __reducevolume__ (x, y, z, v, r) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
176 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
177 v_sz = size (v); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
178 nv = v(1:r(2):end, 1:r(1):end, 1:r(3):end, :); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
179 nv_sz = size (nv); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
180 if (length (nv_sz) < 3 || min (nv_sz) < 2) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
181 error ("reducevolume: reduction value R is too high"); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
182 endif |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
183 if (length (v_sz) > 3) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
184 nv = reshape (nv, [nv_sz(1:3) v_sz(4:end)]); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
185 endif |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
186 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
187 if (isempty (x)) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
188 nx = ny = nz = []; |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
189 else |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
190 nx = x(1:r(2):end, 1:r(1):end, 1:r(3):end); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
191 ny = y(1:r(2):end, 1:r(1):end, 1:r(3):end); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
192 nz = z(1:r(2):end, 1:r(1):end, 1:r(3):end); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
193 endif |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
194 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
195 endfunction |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
196 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
197 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
198 %!shared v, x, y, z, xx, yy, zz |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
199 %! v = reshape (1:6*8*4, [6 8 4]); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
200 %! x = 1:3:22; y = -14:5:11; z = linspace (16, 18, 4); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
201 %! [xx, yy, zz] = meshgrid (x, y, z); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
202 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
203 ## two inputs, one output |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
204 %!test |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
205 %! nv = reducevolume (v, [4 3 2]); |
22295
12f1d273d22a
maint: Remove trailing spaces from code.
Rik <rik@octave.org>
parents:
22231
diff
changeset
|
206 %! nv_expected = [1 25; 4 28]; nv_expected(:,:,2) = [97 121; 100 124]; |
22231
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
207 %! assert (nv, nv_expected); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
208 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
209 ## two inputs, four outputs |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
210 %!test |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
211 %! [nx, ny, nz, nv] = reducevolume (v, [4 3 2]); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
212 %! nx_expected(1:2,1,1:2) = 1; nx_expected(:,2,:) = 5; |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
213 %! ny_expected(1,1:2,1:2) = 1; ny_expected(2,:,:) = 4; |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
214 %! nz_expected(1:2,1:2,1) = 1; nz_expected(:,:,2) = 3; |
22295
12f1d273d22a
maint: Remove trailing spaces from code.
Rik <rik@octave.org>
parents:
22231
diff
changeset
|
215 %! nv_expected = [1 25; 4 28]; nv_expected(:,:,2) = [97 121; 100 124]; |
22231
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
216 %! assert (nx, nx_expected); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
217 %! assert (ny, ny_expected); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
218 %! assert (nz, nz_expected); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
219 %! assert (nv, nv_expected); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
220 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
221 ## five inputs, one output |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
222 %!test |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
223 %! nv = reducevolume (x, y, z, v, [4 3 2]); |
22295
12f1d273d22a
maint: Remove trailing spaces from code.
Rik <rik@octave.org>
parents:
22231
diff
changeset
|
224 %! nv_expected = [1 25; 4 28]; nv_expected(:,:,2) = [97 121; 100 124]; |
22231
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
225 %! assert (nv, nv_expected); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
226 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
227 ## five inputs, four outputs (coordinates are vectors) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
228 %!test |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
229 %! [nx, ny, nz, nv] = reducevolume (x, y, z, v, [4 3 2]); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
230 %! nx_expected(1:2,1,1:2) = x(1); nx_expected(:,2,:) = x(5); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
231 %! ny_expected(1,1:2,1:2) = y(1); ny_expected(2,:,:) = y(4); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
232 %! nz_expected(1:2,1:2,1) = z(1); nz_expected(:,:,2) = z(3); |
22295
12f1d273d22a
maint: Remove trailing spaces from code.
Rik <rik@octave.org>
parents:
22231
diff
changeset
|
233 %! nv_expected = [1 25; 4 28]; nv_expected(:,:,2) = [97 121; 100 124]; |
22231
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
234 %! assert (nx, nx_expected); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
235 %! assert (ny, ny_expected); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
236 %! assert (nz, nz_expected); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
237 %! assert (nv, nv_expected); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
238 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
239 ## five inputs, four outputs (coordinates are matrices) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
240 %!test |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
241 %! [nx, ny, nz, nv] = reducevolume (xx, yy, zz, v, [4 3 2]); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
242 %! nx_expected(1:2,1,1:2) = x(1); nx_expected(:,2,:) = x(5); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
243 %! ny_expected(1,1:2,1:2) = y(1); ny_expected(2,:,:) = y(4); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
244 %! nz_expected(1:2,1:2,1) = z(1); nz_expected(:,:,2) = z(3); |
22295
12f1d273d22a
maint: Remove trailing spaces from code.
Rik <rik@octave.org>
parents:
22231
diff
changeset
|
245 %! nv_expected = [1 25; 4 28]; nv_expected(:,:,2) = [97 121; 100 124]; |
22231
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
246 %! assert (nx, nx_expected); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
247 %! assert (ny, ny_expected); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
248 %! assert (nz, nz_expected); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
249 %! assert (nv, nv_expected); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
250 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
251 ## five inputs, four outputs (coordinates are matrices, R is scalar) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
252 %!test |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
253 %! [nx, ny, nz, nv] = reducevolume (xx, yy, zz, v, 3); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
254 %! nx_expected(1:2,1,1:2) = x(1); nx_expected(:,2,:) = x(4); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
255 %! nx_expected(:,3,:) = x(7); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
256 %! ny_expected(1,1:3,1:2) = y(1); ny_expected(2,:,:) = y(4); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
257 %! nz_expected(1:2,1:3,1) = z(1); nz_expected(:,:,2) = z(4); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
258 %! nv_expected = [1 19 37; 4 22 40]; |
22295
12f1d273d22a
maint: Remove trailing spaces from code.
Rik <rik@octave.org>
parents:
22231
diff
changeset
|
259 %! nv_expected(:,:,2) = [145 163 181; 148 166 184]; |
22231
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
260 %! assert (nx, nx_expected); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
261 %! assert (ny, ny_expected); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
262 %! assert (nz, nz_expected); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
263 %! assert (nv, nv_expected); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
264 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
265 ## Test for each error |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
266 %!test |
28896
90fea9cc9caa
test: Add expected error message <Invalid call> to BIST tests for nargin.
Rik <rik@octave.org>
parents:
27978
diff
changeset
|
267 %!error <Invalid call> reducevolume () |
90fea9cc9caa
test: Add expected error message <Invalid call> to BIST tests for nargin.
Rik <rik@octave.org>
parents:
27978
diff
changeset
|
268 %!error <Invalid call> reducevolume (1) |
90fea9cc9caa
test: Add expected error message <Invalid call> to BIST tests for nargin.
Rik <rik@octave.org>
parents:
27978
diff
changeset
|
269 %!error <Invalid call> reducevolume (1,2,3,4,5,6) |
22231
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
270 %!error <incorrect number of arguments> reducevolume (1, 2, 3) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
271 %!error <R must be a scalar or a vector of length 3> reducevolume (v, []) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
272 %!error <R must be a scalar or a vector of length 3> reducevolume (v, [1 2]) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
273 %!error <reduction values R must be positive integers> reducevolume (v, 0) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
274 %!error <reduction values R must be positive integers> reducevolume (v, 1.5) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
275 %!error <data V must have at least 3 dimensions> |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
276 %! v = reshape(1:6*8, [6 8]); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
277 %! [nv] = reducevolume (v, [4 3 2]); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
278 %!error <data must be a non-singleton 3-dimensional matrix> |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
279 %! v = reshape(1:6*8, [6 1 8]); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
280 %! nv = reducevolume (v, [4 3 2]); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
281 %!error <X must match the size of data V> |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
282 %! x = 1:2:24; |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
283 %! [nx, ny, nz, nv] = reducevolume (x, y, z, v, [4 3 2]); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
284 %!error <Y must match the size of data V> |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
285 %! y = -14:6:11; |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
286 %! [nx, ny, nz, nv] = reducevolume (x, y, z, v, [4 3 2]); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
287 %!error <Z must match the size of data V> |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
288 %! z = linspace (16, 18, 5); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
289 %! [nx, ny, nz, nv] = reducevolume (x, y, z, v, [4 3 2]); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
290 %!error <reduction value R is too high> [nv] = reducevolume (v, 5) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
291 %!error <reduction value R is too high> [nv] = reducevolume (v, [4 7 2]) |