Mercurial > octave
annotate scripts/plot/draw/reducevolume.m @ 22295:12f1d273d22a
maint: Remove trailing spaces from code.
* graphics.cc, help.cc, ov-oncleanup.cc, material.m, __axis_label__.m,
title.m, isocaps.m, reducepatch.m, reducevolume.m:
Remove trailing spaces from code.
author | Rik <rik@octave.org> |
---|---|
date | Sun, 14 Aug 2016 20:16:09 -0700 |
parents | 01ba6ebc52e4 |
children | 3a2b891d0b33 e9a0469dedd9 |
rev | line source |
---|---|
22231
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
1 ## Copyright (C) 2016 Markus Muetzel |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
2 ## |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
3 ## This file is part of Octave. |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
4 ## |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
5 ## Octave is free software; you can redistribute it and/or modify it |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
6 ## under the terms of the GNU General Public License as published by |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
7 ## the Free Software Foundation; either version 3 of the License, or (at |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
8 ## your option) any later version. |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
9 ## |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
10 ## 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
|
11 ## WITHOUT ANY WARRANTY; without even the implied warranty of |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
12 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
13 ## General Public License for more details. |
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 ## 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
|
16 ## along with Octave; see the file COPYING. If not, see |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
17 ## <http://www.gnu.org/licenses/>. |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
18 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
19 ## -*- texinfo -*- |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
20 ## @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
|
21 ## @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
|
22 ## @deftypefnx {} {@var{nv} =} reducevolume (@dots{}) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
23 ## |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
24 ## 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
|
25 ## @var{r}. |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
26 ## |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
27 ## @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
|
28 ## |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
29 ## @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
|
30 ## 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
|
31 ## reduction factor is used in all three dimensions. |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
32 ## |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
33 ## @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
|
34 ## 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
|
35 ## |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
36 ## 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
|
37 ## 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
|
38 ## 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
|
39 ## 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
|
40 ## |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
41 ## 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
|
42 ## 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
|
43 ## |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
44 ## The reduced matrix is returned in @var{nv}. |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
45 ## |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
46 ## 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
|
47 ## @var{ny}, and @var{nz}, respectively. |
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 ## Examples: |
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 ## @example |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
52 ## @group |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
53 ## @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
|
54 ## @var{nv} = reducevolume (@var{v}, [4 3 2]); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
55 ## @end group |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
56 ## @end example |
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{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
|
62 ## [@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
|
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 ## @seealso{isosurface, isonormals} |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
67 ## @end deftypefn |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
68 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
69 ## Author: mmuetzel |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
70 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
71 function [nx, ny, nz, nv] = reducevolume (varargin) |
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 if (nargin < 2 || nargin > 5) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
74 print_usage (); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
75 endif |
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 [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
|
78 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
79 [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
|
80 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
81 if (nargout <= 1) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
82 nx = nv; |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
83 endif |
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 endfunction |
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 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
|
88 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
89 x = y = z = []; |
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 switch (nargin) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
92 case 3 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
93 v = varargin{1}; |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
94 r = varargin{2}; |
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 case 6 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
97 if (naout == 4) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
98 x = varargin{1}; |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
99 y = varargin{2}; |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
100 z = varargin{3}; |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
101 endif |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
102 v = varargin{4}; |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
103 r = varargin{5}; |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
104 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
105 otherwise |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
106 error ("reducevolume: incorrect number of arguments"); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
107 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
108 endswitch |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
109 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
110 ## Check reduction values R |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
111 if (isscalar (r)) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
112 r = [r, r, r]; |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
113 elseif (numel (r) != 3) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
114 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
|
115 "a vector of length 3"]); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
116 endif |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
117 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
118 if (any (r < 1 | r != fix (r))) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
119 error ("reducevolume: reduction values R must be positive integers"); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
120 endif |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
121 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
122 ## Check dimensions of data |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
123 if (ndims (v) < 3) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
124 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
|
125 endif |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
126 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
127 v_sz = size (v); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
128 if (any (v_sz(1:3) < 2)) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
129 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
|
130 endif |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
131 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
132 if (naout == 4) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
133 if (isempty (x)) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
134 x = 1:size (v, 2); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
135 endif |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
136 if (isempty (y)) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
137 y = 1:size (v, 1); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
138 endif |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
139 if (isempty (z)) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
140 z = 1:size (v, 3); |
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 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
143 ## check x |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
144 if (isvector (x) && length (x) == v_sz(2)) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
145 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
|
146 elseif (! size_equal (v, x)) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
147 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
|
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 y |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
151 if (isvector (y) && length (y) == v_sz(1)) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
152 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
|
153 elseif (! size_equal (v, y)) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
154 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
|
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 z |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
158 if (isvector (z) && length (z) == v_sz(3)) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
159 z = repmat (reshape (z(:), [1 1 length(z)]), ... |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
160 [v_sz(1) v_sz(2) 1]); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
161 elseif (! size_equal (v, z)) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
162 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
|
163 endif |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
164 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
165 endif |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
166 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
167 endfunction |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
168 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
169 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
|
170 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
171 v_sz = size (v); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
172 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
|
173 nv_sz = size (nv); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
174 if (length (nv_sz) < 3 || min (nv_sz) < 2) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
175 error ("reducevolume: reduction value R is too high"); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
176 endif |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
177 if (length (v_sz) > 3) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
178 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
|
179 endif |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
180 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
181 if (isempty (x)) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
182 nx = ny = nz = []; |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
183 else |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
184 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
|
185 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
|
186 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
|
187 endif |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
188 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
189 endfunction |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
190 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
191 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
192 %!shared v, x, y, z, xx, yy, zz |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
193 %! v = reshape (1:6*8*4, [6 8 4]); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
194 %! 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
|
195 %! [xx, yy, zz] = meshgrid (x, y, z); |
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 ## two inputs, one output |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
198 %!test |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
199 %! nv = reducevolume (v, [4 3 2]); |
22295
12f1d273d22a
maint: Remove trailing spaces from code.
Rik <rik@octave.org>
parents:
22231
diff
changeset
|
200 %! 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
|
201 %! assert (nv, nv_expected); |
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, four outputs |
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 %! [nx, ny, nz, nv] = reducevolume (v, [4 3 2]); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
206 %! 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
|
207 %! 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
|
208 %! 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
|
209 %! 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
|
210 %! assert (nx, nx_expected); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
211 %! assert (ny, ny_expected); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
212 %! assert (nz, nz_expected); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
213 %! assert (nv, nv_expected); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
214 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
215 ## five inputs, one output |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
216 %!test |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
217 %! 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
|
218 %! 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
|
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, four outputs (coordinates are vectors) |
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 %! [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
|
224 %! 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
|
225 %! 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
|
226 %! 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
|
227 %! 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
|
228 %! assert (nx, nx_expected); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
229 %! assert (ny, ny_expected); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
230 %! assert (nz, nz_expected); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
231 %! assert (nv, nv_expected); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
232 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
233 ## five inputs, four outputs (coordinates are matrices) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
234 %!test |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
235 %! [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
|
236 %! 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
|
237 %! 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
|
238 %! 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
|
239 %! 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
|
240 %! assert (nx, nx_expected); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
241 %! assert (ny, ny_expected); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
242 %! assert (nz, nz_expected); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
243 %! assert (nv, nv_expected); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
244 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
245 ## 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
|
246 %!test |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
247 %! [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
|
248 %! 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
|
249 %! nx_expected(:,3,:) = x(7); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
250 %! 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
|
251 %! 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
|
252 %! nv_expected = [1 19 37; 4 22 40]; |
22295
12f1d273d22a
maint: Remove trailing spaces from code.
Rik <rik@octave.org>
parents:
22231
diff
changeset
|
253 %! 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
|
254 %! assert (nx, nx_expected); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
255 %! assert (ny, ny_expected); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
256 %! assert (nz, nz_expected); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
257 %! assert (nv, nv_expected); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
258 |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
259 ## Test for each error |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
260 %!test |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
261 %!error reducevolume () |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
262 %!error reducevolume (1) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
263 %!error reducevolume (1,2,3,4,5,6) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
264 %!error <incorrect number of arguments> reducevolume (1, 2, 3) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
265 %!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
|
266 %!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
|
267 %!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
|
268 %!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
|
269 %!error <data V must have at least 3 dimensions> |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
270 %! v = reshape(1:6*8, [6 8]); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
271 %! [nv] = reducevolume (v, [4 3 2]); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
272 %!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
|
273 %! v = reshape(1:6*8, [6 1 8]); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
274 %! nv = reducevolume (v, [4 3 2]); |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
275 %!error <X must match the size of data V> |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
276 %! x = 1:2:24; |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
277 %! [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
|
278 %!error <Y must match the size of data V> |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
279 %! y = -14:6:11; |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
280 %! [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
|
281 %!error <Z must match the size of data V> |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
282 %! z = linspace (16, 18, 5); |
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 <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
|
285 %!error <reduction value R is too high> [nv] = reducevolume (v, [4 7 2]) |
01ba6ebc52e4
Add function "reducevolume" (patch #8856).
Markus Muetzel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
286 |