Mercurial > octave
annotate scripts/plot/draw/reducevolume.m @ 27923:bd51beb6205e
update formatting of copyright notices
* Use <https://octave.org/copyright/> instead of
<https://octave.org/COPYRIGHT.html/>.
* For consistency with other comments in the Octave sources, use
C++-style comments for copyright blocks in C and C++ files.
* Use delimiters above and below copyright blocks that are appropriate
for the language used in the file.
* Eliminate extra spacing inside copyright blocks.
* lex.ll (looks_like_copyright): Also allow newlines and carriage
returns before the word "Copyright".
* scripts/mk-doc.pl (gethelp): Also skip empty comment lines.
* bp-table.cc, type.m: Adjust tests.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Wed, 08 Jan 2020 11:59:41 -0500 |
parents | 1891570abac8 |
children | a4268efb7334 |
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 ## |
27919
1891570abac8
update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents:
27918
diff
changeset
|
3 ## Copyright (C) 2016-2020 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 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
46 ## which case they are expanded to matrices (@pxref{XREFmeshgrid,,meshgrid}). |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
47 ## |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
48 ## 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
|
49 ## 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
|
50 ## |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
51 ## The reduced matrix is returned in @var{nv}. |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
52 ## |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
53 ## 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
|
54 ## @var{ny}, and @var{nz}, respectively. |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
55 ## |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
56 ## Examples: |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
57 ## |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
58 ## @example |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
59 ## @group |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
60 ## @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
|
61 ## @var{nv} = reducevolume (@var{v}, [4 3 2]); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
62 ## @end group |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
63 ## @end example |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
64 ## |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
65 ## @example |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
66 ## @group |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
67 ## @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
|
68 ## @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
|
69 ## [@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
|
70 ## @end group |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
71 ## @end example |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
72 ## |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
73 ## @seealso{isosurface, isonormals} |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
74 ## @end deftypefn |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
75 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
76 ## Author: mmuetzel |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
77 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
78 function [nx, ny, nz, nv] = reducevolume (varargin) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
79 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
80 if (nargin < 2 || nargin > 5) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
81 print_usage (); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
82 endif |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
83 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
84 [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
|
85 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
86 [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
|
87 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
88 if (nargout <= 1) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
89 nx = nv; |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
90 endif |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
91 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
92 endfunction |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
93 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
94 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
|
95 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
96 x = y = z = []; |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
97 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
98 switch (nargin) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
99 case 3 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
100 v = varargin{1}; |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
101 r = varargin{2}; |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
102 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
103 case 6 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
104 if (naout == 4) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
105 x = varargin{1}; |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
106 y = varargin{2}; |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
107 z = varargin{3}; |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
108 endif |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
109 v = varargin{4}; |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
110 r = varargin{5}; |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
111 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
112 otherwise |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
113 error ("reducevolume: incorrect number of arguments"); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
114 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
115 endswitch |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
116 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
117 ## Check reduction values R |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
118 if (isscalar (r)) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
119 r = [r, r, r]; |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
120 elseif (numel (r) != 3) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
121 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
|
122 "a vector of length 3"]); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
123 endif |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
124 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
125 if (any (r < 1 | r != fix (r))) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
126 error ("reducevolume: reduction values R must be positive integers"); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
127 endif |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
128 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
129 ## Check dimensions of data |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
130 if (ndims (v) < 3) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
131 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
|
132 endif |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
133 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
134 v_sz = size (v); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
135 if (any (v_sz(1:3) < 2)) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
136 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
|
137 endif |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
138 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
139 if (naout == 4) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
140 if (isempty (x)) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
141 x = 1:size (v, 2); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
142 endif |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
143 if (isempty (y)) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
144 y = 1:size (v, 1); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
145 endif |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
146 if (isempty (z)) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
147 z = 1:size (v, 3); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
148 endif |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
149 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
150 ## check x |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
151 if (isvector (x) && length (x) == v_sz(2)) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
152 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
|
153 elseif (! size_equal (v, x)) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
154 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
|
155 endif |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
156 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
157 ## check y |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
158 if (isvector (y) && length (y) == v_sz(1)) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
159 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
|
160 elseif (! size_equal (v, y)) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
161 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
|
162 endif |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
163 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
164 ## check z |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
165 if (isvector (z) && length (z) == v_sz(3)) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
166 z = repmat (reshape (z(:), [1 1 length(z)]), ... |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
167 [v_sz(1) v_sz(2) 1]); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
168 elseif (! size_equal (v, z)) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
169 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
|
170 endif |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
171 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
172 endif |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
173 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
174 endfunction |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
175 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
176 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
|
177 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
178 v_sz = size (v); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
179 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
|
180 nv_sz = size (nv); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
181 if (length (nv_sz) < 3 || min (nv_sz) < 2) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
182 error ("reducevolume: reduction value R is too high"); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
183 endif |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
184 if (length (v_sz) > 3) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
185 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
|
186 endif |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
187 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
188 if (isempty (x)) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
189 nx = ny = nz = []; |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
190 else |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
191 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
|
192 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
|
193 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
|
194 endif |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
195 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
196 endfunction |
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 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
199 %!shared v, x, y, z, xx, yy, zz |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
200 %! v = reshape (1:6*8*4, [6 8 4]); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
201 %! 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
|
202 %! [xx, yy, zz] = meshgrid (x, y, z); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
203 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
204 ## two inputs, one output |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
205 %!test |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
206 %! nv = reducevolume (v, [4 3 2]); |
22295
12f1d273d22a
maint: Remove trailing spaces from code.
Rik <rik@octave.org>
parents:
22231
diff
changeset
|
207 %! 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
|
208 %! assert (nv, nv_expected); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
209 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
210 ## two inputs, four outputs |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
211 %!test |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
212 %! [nx, ny, nz, nv] = reducevolume (v, [4 3 2]); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
213 %! 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
|
214 %! 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
|
215 %! 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
|
216 %! 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
|
217 %! assert (nx, nx_expected); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
218 %! assert (ny, ny_expected); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
219 %! assert (nz, nz_expected); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
220 %! assert (nv, nv_expected); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
221 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
222 ## five inputs, one output |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
223 %!test |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
224 %! 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
|
225 %! 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
|
226 %! assert (nv, nv_expected); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
227 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
228 ## five inputs, four outputs (coordinates are vectors) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
229 %!test |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
230 %! [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
|
231 %! 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
|
232 %! 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
|
233 %! 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
|
234 %! 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
|
235 %! assert (nx, nx_expected); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
236 %! assert (ny, ny_expected); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
237 %! assert (nz, nz_expected); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
238 %! assert (nv, nv_expected); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
239 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
240 ## five inputs, four outputs (coordinates are matrices) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
241 %!test |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
242 %! [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
|
243 %! 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
|
244 %! 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
|
245 %! 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
|
246 %! 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
|
247 %! assert (nx, nx_expected); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
248 %! assert (ny, ny_expected); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
249 %! assert (nz, nz_expected); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
250 %! assert (nv, nv_expected); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
251 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
252 ## 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
|
253 %!test |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
254 %! [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
|
255 %! 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
|
256 %! nx_expected(:,3,:) = x(7); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
257 %! 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
|
258 %! 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
|
259 %! nv_expected = [1 19 37; 4 22 40]; |
22295
12f1d273d22a
maint: Remove trailing spaces from code.
Rik <rik@octave.org>
parents:
22231
diff
changeset
|
260 %! 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
|
261 %! assert (nx, nx_expected); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
262 %! assert (ny, ny_expected); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
263 %! assert (nz, nz_expected); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
264 %! assert (nv, nv_expected); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
265 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
266 ## Test for each error |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
267 %!test |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
268 %!error reducevolume () |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
269 %!error reducevolume (1) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
270 %!error reducevolume (1,2,3,4,5,6) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
271 %!error <incorrect number of arguments> reducevolume (1, 2, 3) |
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, []) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
273 %!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
|
274 %!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
|
275 %!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
|
276 %!error <data V must have at least 3 dimensions> |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
277 %! v = reshape(1:6*8, [6 8]); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
278 %! [nv] = reducevolume (v, [4 3 2]); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
279 %!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
|
280 %! v = reshape(1:6*8, [6 1 8]); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
281 %! nv = reducevolume (v, [4 3 2]); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
282 %!error <X must match the size of data V> |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
283 %! x = 1:2:24; |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
284 %! [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
|
285 %!error <Y must match the size of data V> |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
286 %! y = -14:6:11; |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
287 %! [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
|
288 %!error <Z must match the size of data V> |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
289 %! z = linspace (16, 18, 5); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
290 %! [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
|
291 %!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
|
292 %!error <reduction value R is too high> [nv] = reducevolume (v, [4 7 2]) |