annotate libinterp/corefcn/conv2.cc @ 20617:ba2b07c13913

use new string_value method to handle value extraction errors * __dispatch__.cc, balance.cc, colloc.cc, conv2.cc, data.cc, debug.cc, graphics.cc, input.cc, matrix_type.cc, oct-hist.cc, schur.cc, spparms.cc, symtab.cc, sysdep.cc, toplev.cc, utils.cc: Use new string_value method.
author John W. Eaton <jwe@octave.org>
date Fri, 09 Oct 2015 10:06:39 -0400
parents 4f45eaf83908
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5819
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
1 /*
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
2
19731
4197fc428c7d maint: Update copyright notices for 2015.
John W. Eaton <jwe@octave.org>
parents: 17837
diff changeset
3 Copyright (C) 1999-2015 Andy Adler
10498
8615b55b5caf fix & improve cat (bug #29465)
Jaroslav Hajek <highegg@gmail.com>
parents: 10384
diff changeset
4 Copyright (C) 2010 VZLU Prague
5819
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
5
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
6 This file is part of Octave.
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
7
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
8 Octave is free software; you can redistribute it and/or modify it
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
9 under the terms of the GNU General Public License as published by the
7016
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 5823
diff changeset
10 Free Software Foundation; either version 3 of the License, or (at your
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 5823
diff changeset
11 option) any later version.
5819
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
12
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
13 Octave is distributed in the hope that it will be useful, but WITHOUT
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
15 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
16 for more details.
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
17
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
18 You should have received a copy of the GNU General Public License
7016
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 5823
diff changeset
19 along with Octave; see the file COPYING. If not, see
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 5823
diff changeset
20 <http://www.gnu.org/licenses/>.
5819
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
21
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
22 */
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
23
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
24 #ifdef HAVE_CONFIG_H
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
25 #include <config.h>
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
26 #endif
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
27
10384
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
28 #include "oct-convn.h"
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
29
15039
e753177cde93 maint: Move non-dynamically linked functions from DLD-FUNCTIONS/ to corefcn/ directory
Rik <rik@octave.org>
parents: 14607
diff changeset
30 #include "defun.h"
5819
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
31 #include "error.h"
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
32 #include "oct-obj.h"
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
33 #include "utils.h"
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
34
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
35 enum Shape { SHAPE_FULL, SHAPE_SAME, SHAPE_VALID };
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
36
15039
e753177cde93 maint: Move non-dynamically linked functions from DLD-FUNCTIONS/ to corefcn/ directory
Rik <rik@octave.org>
parents: 14607
diff changeset
37 DEFUN (conv2, args, ,
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
38 "-*- texinfo -*-\n\
15039
e753177cde93 maint: Move non-dynamically linked functions from DLD-FUNCTIONS/ to corefcn/ directory
Rik <rik@octave.org>
parents: 14607
diff changeset
39 @deftypefn {Built-in Function} {} conv2 (@var{A}, @var{B})\n\
e753177cde93 maint: Move non-dynamically linked functions from DLD-FUNCTIONS/ to corefcn/ directory
Rik <rik@octave.org>
parents: 14607
diff changeset
40 @deftypefnx {Built-in Function} {} conv2 (@var{v1}, @var{v2}, @var{m})\n\
e753177cde93 maint: Move non-dynamically linked functions from DLD-FUNCTIONS/ to corefcn/ directory
Rik <rik@octave.org>
parents: 14607
diff changeset
41 @deftypefnx {Built-in Function} {} conv2 (@dots{}, @var{shape})\n\
20207
4f45eaf83908 doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents: 19731
diff changeset
42 Return the 2-D convolution of @var{A} and @var{B}.\n\
4f45eaf83908 doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents: 19731
diff changeset
43 \n\
4f45eaf83908 doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents: 19731
diff changeset
44 The size of the result is determined by the optional @var{shape} argument\n\
4f45eaf83908 doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents: 19731
diff changeset
45 which takes the following values\n\
5819
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
46 \n\
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
47 @table @asis\n\
17281
bc924baa2c4e doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents: 15241
diff changeset
48 @item @var{shape} = @qcode{\"full\"}\n\
11085
2beacd515e09 Update docstrings for convolution family of functions (conv, conv2, fftconv)
Rik <octave@nomad.inbox5.com>
parents: 11083
diff changeset
49 Return the full convolution. (default)\n\
10840
89f4d7e294cc Grammarcheck .cc files
Rik <octave@nomad.inbox5.com>
parents: 10498
diff changeset
50 \n\
17281
bc924baa2c4e doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents: 15241
diff changeset
51 @item @var{shape} = @qcode{\"same\"}\n\
11553
01f703952eff Improve docstrings for functions in DLD-FUNCTIONS directory.
Rik <octave@nomad.inbox5.com>
parents: 11523
diff changeset
52 Return the central part of the convolution with the same size as @var{A}.\n\
14209
846273dae16b Return correct part of convolution for 'same' parameter in conv2, convn (Bug #34893).
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
53 The central part of the convolution begins at the indices\n\
846273dae16b Return correct part of convolution for 'same' parameter in conv2, convn (Bug #34893).
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
54 @code{floor ([size(@var{B})/2] + 1)}.\n\
10840
89f4d7e294cc Grammarcheck .cc files
Rik <octave@nomad.inbox5.com>
parents: 10498
diff changeset
55 \n\
17281
bc924baa2c4e doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents: 15241
diff changeset
56 @item @var{shape} = @qcode{\"valid\"}\n\
11083
bb8bf77f2242 conv2.cc: style fixes; update docstrings
John W. Eaton <jwe@octave.org>
parents: 10840
diff changeset
57 Return only the parts which do not include zero-padded edges.\n\
14209
846273dae16b Return correct part of convolution for 'same' parameter in conv2, convn (Bug #34893).
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
58 The size of the result is @code{max (size (A) - size (B) + 1, 0)}.\n\
5819
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
59 @end table\n\
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
60 \n\
11553
01f703952eff Improve docstrings for functions in DLD-FUNCTIONS directory.
Rik <octave@nomad.inbox5.com>
parents: 11523
diff changeset
61 When the third argument is a matrix, return the convolution of the matrix\n\
01f703952eff Improve docstrings for functions in DLD-FUNCTIONS directory.
Rik <octave@nomad.inbox5.com>
parents: 11523
diff changeset
62 @var{m} by the vector @var{v1} in the column direction and by the vector\n\
14209
846273dae16b Return correct part of convolution for 'same' parameter in conv2, convn (Bug #34893).
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
63 @var{v2} in the row direction.\n\
11553
01f703952eff Improve docstrings for functions in DLD-FUNCTIONS directory.
Rik <octave@nomad.inbox5.com>
parents: 11523
diff changeset
64 @seealso{conv, convn}\n\
5819
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
65 @end deftypefn")
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
66 {
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
67 octave_value retval;
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
68 octave_value tmp;
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
69 int nargin = args.length ();
14209
846273dae16b Return correct part of convolution for 'same' parameter in conv2, convn (Bug #34893).
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
70 std::string shape = "full"; // default
10371
dc8637fd7a76 improve conv2 performance
John W. Eaton <jwe@octave.org>
parents: 10368
diff changeset
71 bool separable = false;
10384
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
72 convn_type ct;
5819
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
73
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
74 if (nargin < 2)
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
75 {
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
76 print_usage ();
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
77 return retval;
5819
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
78 }
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
79 else if (nargin == 3)
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
80 {
5822
4fdc2515ebad [project @ 2006-05-18 19:31:36 by jwe]
jwe
parents: 5819
diff changeset
81 if (args(2).is_string ())
5819
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
82 shape = args(2).string_value ();
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
83 else
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
84 separable = true;
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
85 }
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
86 else if (nargin >= 4)
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
87 {
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
88 separable = true;
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
89 shape = args(3).string_value ();
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
90 }
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
91
15241
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
92 if (args(0).ndims () > 2 || args(1).ndims () > 2)
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
93 {
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
94 error ("conv2: A and B must be 1-D vectors or 2-D matrices");
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
95 return retval;
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
96 }
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
97
5819
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
98 if (shape == "full")
10384
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
99 ct = convn_full;
5819
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
100 else if (shape == "same")
10384
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
101 ct = convn_same;
5819
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
102 else if (shape == "valid")
10384
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
103 ct = convn_valid;
5819
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
104 else
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
105 {
11553
01f703952eff Improve docstrings for functions in DLD-FUNCTIONS directory.
Rik <octave@nomad.inbox5.com>
parents: 11523
diff changeset
106 error ("conv2: SHAPE type not valid");
5823
080c08b192d8 [project @ 2006-05-19 05:32:17 by jwe]
jwe
parents: 5822
diff changeset
107 print_usage ();
5819
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
108 return retval;
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
109 }
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
110
15241
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
111 if (separable)
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
112 {
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
113 // If user requests separable, check first two params are vectors
5819
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
114
15241
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
115 if (! (1 == args(0).rows () || 1 == args(0).columns ())
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
116 || ! (1 == args(1).rows () || 1 == args(1).columns ()))
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
117 {
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
118 print_usage ();
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
119 return retval;
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
120 }
5819
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
121
15241
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
122 if (args(0).is_single_type () || args(1).is_single_type ()
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
123 || args(2).is_single_type ())
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
124 {
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
125 if (args(0).is_complex_type () || args(1).is_complex_type ()
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
126 || args(2).is_complex_type ())
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
127 {
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
128 FloatComplexMatrix a (args(2).float_complex_matrix_value ());
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
129 if (args(1).is_real_type () && args(2).is_real_type ())
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
130 {
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
131 FloatColumnVector v1 (args(0).float_vector_value ());
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
132 FloatRowVector v2 (args(1).float_vector_value ());
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
133 retval = convn (a, v1, v2, ct);
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
134 }
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
135 else
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
136 {
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
137 FloatComplexColumnVector v1 (args(0).float_complex_vector_value ());
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
138 FloatComplexRowVector v2 (args(1).float_complex_vector_value ());
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
139 retval = convn (a, v1, v2, ct);
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
140 }
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
141 }
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
142 else
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
143 {
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
144 FloatColumnVector v1 (args(0).float_vector_value ());
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
145 FloatRowVector v2 (args(1).float_vector_value ());
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
146 FloatMatrix a (args(2).float_matrix_value ());
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
147 retval = convn (a, v1, v2, ct);
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
148 }
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
149 }
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
150 else
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
151 {
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
152 if (args(0).is_complex_type () || args(1).is_complex_type ()
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
153 || args(2).is_complex_type ())
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
154 {
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
155 ComplexMatrix a (args(2).complex_matrix_value ());
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
156 if (args(1).is_real_type () && args(2).is_real_type ())
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
157 {
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
158 ColumnVector v1 (args(0).vector_value ());
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
159 RowVector v2 (args(1).vector_value ());
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
160 retval = convn (a, v1, v2, ct);
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
161 }
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
162 else
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
163 {
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
164 ComplexColumnVector v1 (args(0).complex_vector_value ());
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
165 ComplexRowVector v2 (args(1).complex_vector_value ());
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
166 retval = convn (a, v1, v2, ct);
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
167 }
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
168 }
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
169 else
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
170 {
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
171 ColumnVector v1 (args(0).vector_value ());
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
172 RowVector v2 (args(1).vector_value ());
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
173 Matrix a (args(2).matrix_value ());
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
174 retval = convn (a, v1, v2, ct);
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
175 }
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
176 }
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
177 } // if (separable)
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
178 else
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
179 {
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
180 if (args(0).is_single_type () || args(1).is_single_type ())
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
181 {
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
182 if (args(0).is_complex_type () || args(1).is_complex_type ())
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
183 {
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
184 FloatComplexMatrix a (args(0).float_complex_matrix_value ());
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
185 if (args(1).is_real_type ())
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
186 {
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
187 FloatMatrix b (args(1).float_matrix_value ());
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
188 retval = convn (a, b, ct);
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
189 }
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
190 else
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
191 {
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
192 FloatComplexMatrix b (args(1).float_complex_matrix_value ());
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
193 retval = convn (a, b, ct);
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
194 }
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
195 }
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
196 else
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
197 {
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
198 FloatMatrix a (args(0).float_matrix_value ());
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
199 FloatMatrix b (args(1).float_matrix_value ());
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
200 retval = convn (a, b, ct);
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
201 }
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
202 }
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
203 else
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
204 {
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
205 if (args(0).is_complex_type () || args(1).is_complex_type ())
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
206 {
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
207 ComplexMatrix a (args(0).complex_matrix_value ());
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
208 if (args(1).is_real_type ())
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
209 {
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
210 Matrix b (args(1).matrix_value ());
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
211 retval = convn (a, b, ct);
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
212 }
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
213 else
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
214 {
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
215 ComplexMatrix b (args(1).complex_matrix_value ());
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
216 retval = convn (a, b, ct);
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
217 }
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
218 }
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
219 else
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
220 {
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
221 Matrix a (args(0).matrix_value ());
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
222 Matrix b (args(1).matrix_value ());
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
223 retval = convn (a, b, ct);
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
224 }
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
225 }
5819
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
226
15241
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
227 } // if (separable)
5819
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
228
15241
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
229 return retval;
5819
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
230 }
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
231
14209
846273dae16b Return correct part of convolution for 'same' parameter in conv2, convn (Bug #34893).
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
232 /*
846273dae16b Return correct part of convolution for 'same' parameter in conv2, convn (Bug #34893).
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
233 %!test
846273dae16b Return correct part of convolution for 'same' parameter in conv2, convn (Bug #34893).
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
234 %! c = [0,1,2,3;1,8,12,12;4,20,24,21;7,22,25,18];
846273dae16b Return correct part of convolution for 'same' parameter in conv2, convn (Bug #34893).
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
235 %! assert (conv2 ([0,1;1,2], [1,2,3;4,5,6;7,8,9]), c);
846273dae16b Return correct part of convolution for 'same' parameter in conv2, convn (Bug #34893).
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
236
846273dae16b Return correct part of convolution for 'same' parameter in conv2, convn (Bug #34893).
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
237 %!test
846273dae16b Return correct part of convolution for 'same' parameter in conv2, convn (Bug #34893).
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
238 %! c = single ([0,1,2,3;1,8,12,12;4,20,24,21;7,22,25,18]);
846273dae16b Return correct part of convolution for 'same' parameter in conv2, convn (Bug #34893).
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
239 %! assert (conv2 (single ([0,1;1,2]), single ([1,2,3;4,5,6;7,8,9])), c);
846273dae16b Return correct part of convolution for 'same' parameter in conv2, convn (Bug #34893).
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
240
846273dae16b Return correct part of convolution for 'same' parameter in conv2, convn (Bug #34893).
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
241 %!test
846273dae16b Return correct part of convolution for 'same' parameter in conv2, convn (Bug #34893).
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
242 %! c = [1,4,4;5,18,16;14,48,40;19,62,48;15,48,36];
846273dae16b Return correct part of convolution for 'same' parameter in conv2, convn (Bug #34893).
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
243 %! assert (conv2 (1:3, 1:2, [1,2;3,4;5,6]), c);
846273dae16b Return correct part of convolution for 'same' parameter in conv2, convn (Bug #34893).
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
244
846273dae16b Return correct part of convolution for 'same' parameter in conv2, convn (Bug #34893).
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
245 %!assert (conv2 (1:3, 1:2, [1,2;3,4;5,6], "full"),
846273dae16b Return correct part of convolution for 'same' parameter in conv2, convn (Bug #34893).
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
246 %! conv2 (1:3, 1:2, [1,2;3,4;5,6]));
846273dae16b Return correct part of convolution for 'same' parameter in conv2, convn (Bug #34893).
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
247
846273dae16b Return correct part of convolution for 'same' parameter in conv2, convn (Bug #34893).
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
248 %% Test shapes
846273dae16b Return correct part of convolution for 'same' parameter in conv2, convn (Bug #34893).
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
249 %!shared A, B, C
846273dae16b Return correct part of convolution for 'same' parameter in conv2, convn (Bug #34893).
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
250 %! A = rand (3, 4);
846273dae16b Return correct part of convolution for 'same' parameter in conv2, convn (Bug #34893).
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
251 %! B = rand (4);
846273dae16b Return correct part of convolution for 'same' parameter in conv2, convn (Bug #34893).
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
252 %! C = conv2 (A, B);
846273dae16b Return correct part of convolution for 'same' parameter in conv2, convn (Bug #34893).
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
253 %!assert (conv2 (A,B, "full"), C)
846273dae16b Return correct part of convolution for 'same' parameter in conv2, convn (Bug #34893).
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
254 %!assert (conv2 (A,B, "same"), C(3:5,3:6))
846273dae16b Return correct part of convolution for 'same' parameter in conv2, convn (Bug #34893).
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
255 %!assert (conv2 (A,B, "valid"), zeros (0, 1))
846273dae16b Return correct part of convolution for 'same' parameter in conv2, convn (Bug #34893).
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
256 %!assert (size (conv2 (B,A, "valid")), [2 1])
846273dae16b Return correct part of convolution for 'same' parameter in conv2, convn (Bug #34893).
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
257
846273dae16b Return correct part of convolution for 'same' parameter in conv2, convn (Bug #34893).
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
258 %!test
846273dae16b Return correct part of convolution for 'same' parameter in conv2, convn (Bug #34893).
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
259 %! B = rand (5);
846273dae16b Return correct part of convolution for 'same' parameter in conv2, convn (Bug #34893).
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
260 %! C = conv2 (A, B);
846273dae16b Return correct part of convolution for 'same' parameter in conv2, convn (Bug #34893).
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
261 %!assert (conv2 (A,B, "full"), C)
846273dae16b Return correct part of convolution for 'same' parameter in conv2, convn (Bug #34893).
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
262 %!assert (conv2 (A,B, "same"), C(3:5,3:6))
846273dae16b Return correct part of convolution for 'same' parameter in conv2, convn (Bug #34893).
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
263 %!assert (conv2 (A,B, "valid"), zeros (0, 0))
846273dae16b Return correct part of convolution for 'same' parameter in conv2, convn (Bug #34893).
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
264 %!assert (size (conv2 (B,A, "valid")), [3 2])
846273dae16b Return correct part of convolution for 'same' parameter in conv2, convn (Bug #34893).
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
265
846273dae16b Return correct part of convolution for 'same' parameter in conv2, convn (Bug #34893).
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
266 %% Clear shared variables so they are not reported for tests below
846273dae16b Return correct part of convolution for 'same' parameter in conv2, convn (Bug #34893).
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
267 %!shared
846273dae16b Return correct part of convolution for 'same' parameter in conv2, convn (Bug #34893).
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
268
846273dae16b Return correct part of convolution for 'same' parameter in conv2, convn (Bug #34893).
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
269 %% Test cases from Bug #34893
14501
60e5cf354d80 Update %!tests in DLD-FUNCTIONS/ directory with Octave coding conventions.
Rik <octave@nomad.inbox5.com>
parents: 14209
diff changeset
270 %!assert (conv2 ([1:5;1:5], [1:2], "same"), [4 7 10 13 10; 4 7 10 13 10])
60e5cf354d80 Update %!tests in DLD-FUNCTIONS/ directory with Octave coding conventions.
Rik <octave@nomad.inbox5.com>
parents: 14209
diff changeset
271 %!assert (conv2 ([1:5;1:5]', [1:2]', "same"), [4 7 10 13 10; 4 7 10 13 10]')
14607
34f067bcac12 maint: Periodic merge of stable to default
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 14501 14597
diff changeset
272 %!assert (conv2 ([1:5;1:5], [1:2], "valid"), [4 7 10 13; 4 7 10 13])
14501
60e5cf354d80 Update %!tests in DLD-FUNCTIONS/ directory with Octave coding conventions.
Rik <octave@nomad.inbox5.com>
parents: 14209
diff changeset
273 %!assert (conv2 ([1:5;1:5]', [1:2]', "valid"), [4 7 10 13; 4 7 10 13]')
14209
846273dae16b Return correct part of convolution for 'same' parameter in conv2, convn (Bug #34893).
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
274
14597
6980b0f35df9 conv2.c: Unmark a test as a known failure (bug #34893)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 14596
diff changeset
275 %!test
14596
ad1d7a53b1ca perform convolution properly independently of matrix orientation (bug #34893)
Sunghyun Cho <sodomau@gmail.com>
parents: 14209
diff changeset
276 %! rand ("seed", 42);
ad1d7a53b1ca perform convolution properly independently of matrix orientation (bug #34893)
Sunghyun Cho <sodomau@gmail.com>
parents: 14209
diff changeset
277 %! x = rand (100);
ad1d7a53b1ca perform convolution properly independently of matrix orientation (bug #34893)
Sunghyun Cho <sodomau@gmail.com>
parents: 14209
diff changeset
278 %! y = ones (5);
ad1d7a53b1ca perform convolution properly independently of matrix orientation (bug #34893)
Sunghyun Cho <sodomau@gmail.com>
parents: 14209
diff changeset
279 %! A = conv2 (x, y)(5:end-4,5:end-4);
ad1d7a53b1ca perform convolution properly independently of matrix orientation (bug #34893)
Sunghyun Cho <sodomau@gmail.com>
parents: 14209
diff changeset
280 %! B = conv2 (x, y, "valid");
17336
b81b9d079515 Use '##' for comments which stand alone on a line.
Rik <rik@octave.org>
parents: 17281
diff changeset
281 %! assert (B, A); # Yes, this test is for *exact* equivalence.
14596
ad1d7a53b1ca perform convolution properly independently of matrix orientation (bug #34893)
Sunghyun Cho <sodomau@gmail.com>
parents: 14209
diff changeset
282
ad1d7a53b1ca perform convolution properly independently of matrix orientation (bug #34893)
Sunghyun Cho <sodomau@gmail.com>
parents: 14209
diff changeset
283
14209
846273dae16b Return correct part of convolution for 'same' parameter in conv2, convn (Bug #34893).
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
284 %% Test input validation
846273dae16b Return correct part of convolution for 'same' parameter in conv2, convn (Bug #34893).
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
285 %!error conv2 ()
846273dae16b Return correct part of convolution for 'same' parameter in conv2, convn (Bug #34893).
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
286 %!error conv2 (1)
15241
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
287 %!error <must be 1-D vectors or 2-D matrices> conv2 (ones (2), ones (2,2,2))
14209
846273dae16b Return correct part of convolution for 'same' parameter in conv2, convn (Bug #34893).
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
288 %!error <SHAPE type not valid> conv2 (1,2, "NOT_A_SHAPE")
846273dae16b Return correct part of convolution for 'same' parameter in conv2, convn (Bug #34893).
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
289 %% Test alternate calling form which should be 2 vectors and a matrix
846273dae16b Return correct part of convolution for 'same' parameter in conv2, convn (Bug #34893).
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
290 %!error conv2 (ones (2), 1, 1)
846273dae16b Return correct part of convolution for 'same' parameter in conv2, convn (Bug #34893).
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
291 %!error conv2 (1, ones (2), 1)
846273dae16b Return correct part of convolution for 'same' parameter in conv2, convn (Bug #34893).
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
292 */
846273dae16b Return correct part of convolution for 'same' parameter in conv2, convn (Bug #34893).
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
293
15039
e753177cde93 maint: Move non-dynamically linked functions from DLD-FUNCTIONS/ to corefcn/ directory
Rik <rik@octave.org>
parents: 14607
diff changeset
294 DEFUN (convn, args, ,
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
295 "-*- texinfo -*-\n\
15039
e753177cde93 maint: Move non-dynamically linked functions from DLD-FUNCTIONS/ to corefcn/ directory
Rik <rik@octave.org>
parents: 14607
diff changeset
296 @deftypefn {Built-in Function} {@var{C} =} convn (@var{A}, @var{B})\n\
e753177cde93 maint: Move non-dynamically linked functions from DLD-FUNCTIONS/ to corefcn/ directory
Rik <rik@octave.org>
parents: 14607
diff changeset
297 @deftypefnx {Built-in Function} {@var{C} =} convn (@var{A}, @var{B}, @var{shape})\n\
20207
4f45eaf83908 doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents: 19731
diff changeset
298 Return the n-D convolution of @var{A} and @var{B}.\n\
4f45eaf83908 doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents: 19731
diff changeset
299 \n\
4f45eaf83908 doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents: 19731
diff changeset
300 The size of the result is determined by the optional @var{shape} argument\n\
4f45eaf83908 doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents: 19731
diff changeset
301 which takes the following values\n\
10384
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
302 \n\
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
303 @table @asis\n\
17281
bc924baa2c4e doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents: 15241
diff changeset
304 @item @var{shape} = @qcode{\"full\"}\n\
14209
846273dae16b Return correct part of convolution for 'same' parameter in conv2, convn (Bug #34893).
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
305 Return the full convolution. (default)\n\
10840
89f4d7e294cc Grammarcheck .cc files
Rik <octave@nomad.inbox5.com>
parents: 10498
diff changeset
306 \n\
17281
bc924baa2c4e doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents: 15241
diff changeset
307 @item @var{shape} = @qcode{\"same\"}\n\
11553
01f703952eff Improve docstrings for functions in DLD-FUNCTIONS directory.
Rik <octave@nomad.inbox5.com>
parents: 11523
diff changeset
308 Return central part of the convolution with the same size as @var{A}.\n\
14209
846273dae16b Return correct part of convolution for 'same' parameter in conv2, convn (Bug #34893).
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
309 The central part of the convolution begins at the indices\n\
846273dae16b Return correct part of convolution for 'same' parameter in conv2, convn (Bug #34893).
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
310 @code{floor ([size(@var{B})/2] + 1)}.\n\
10840
89f4d7e294cc Grammarcheck .cc files
Rik <octave@nomad.inbox5.com>
parents: 10498
diff changeset
311 \n\
17281
bc924baa2c4e doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents: 15241
diff changeset
312 @item @var{shape} = @qcode{\"valid\"}\n\
11083
bb8bf77f2242 conv2.cc: style fixes; update docstrings
John W. Eaton <jwe@octave.org>
parents: 10840
diff changeset
313 Return only the parts which do not include zero-padded edges.\n\
14209
846273dae16b Return correct part of convolution for 'same' parameter in conv2, convn (Bug #34893).
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
314 The size of the result is @code{max (size (A) - size (B) + 1, 0)}.\n\
10384
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
315 @end table\n\
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
316 \n\
11553
01f703952eff Improve docstrings for functions in DLD-FUNCTIONS directory.
Rik <octave@nomad.inbox5.com>
parents: 11523
diff changeset
317 @seealso{conv2, conv}\n\
10384
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
318 @end deftypefn")
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
319 {
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
320 octave_value retval;
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
321 octave_value tmp;
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
322 int nargin = args.length ();
14209
846273dae16b Return correct part of convolution for 'same' parameter in conv2, convn (Bug #34893).
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
323 std::string shape = "full"; // default
10384
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
324 convn_type ct;
5819
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
325
10384
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
326 if (nargin < 2 || nargin > 3)
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
327 {
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
328 print_usage ();
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
329 return retval;
10384
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
330 }
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
331 else if (nargin == 3)
20617
ba2b07c13913 use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents: 20207
diff changeset
332 shape = args(2).string_value ("convn: SHAPE must be a string");
10384
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
333
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
334 if (shape == "full")
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
335 ct = convn_full;
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
336 else if (shape == "same")
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
337 ct = convn_same;
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
338 else if (shape == "valid")
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
339 ct = convn_valid;
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
340 else
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
341 {
11553
01f703952eff Improve docstrings for functions in DLD-FUNCTIONS directory.
Rik <octave@nomad.inbox5.com>
parents: 11523
diff changeset
342 error ("convn: SHAPE type not valid");
10384
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
343 print_usage ();
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
344 return retval;
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
345 }
5819
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
346
11083
bb8bf77f2242 conv2.cc: style fixes; update docstrings
John W. Eaton <jwe@octave.org>
parents: 10840
diff changeset
347 if (args(0).is_single_type () || args(1).is_single_type ())
10384
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
348 {
11083
bb8bf77f2242 conv2.cc: style fixes; update docstrings
John W. Eaton <jwe@octave.org>
parents: 10840
diff changeset
349 if (args(0).is_complex_type () || args(1).is_complex_type ())
10384
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
350 {
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
351 FloatComplexNDArray a (args(0).float_complex_array_value ());
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
352 if (args(1).is_real_type ())
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
353 {
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
354 FloatNDArray b (args(1).float_array_value ());
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
355 retval = convn (a, b, ct);
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
356 }
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
357 else
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
358 {
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
359 FloatComplexNDArray b (args(1).float_complex_array_value ());
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
360 retval = convn (a, b, ct);
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
361 }
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
362 }
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
363 else
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
364 {
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
365 FloatNDArray a (args(0).float_array_value ());
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
366 FloatNDArray b (args(1).float_array_value ());
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
367 retval = convn (a, b, ct);
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
368 }
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
369 }
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
370 else
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
371 {
11083
bb8bf77f2242 conv2.cc: style fixes; update docstrings
John W. Eaton <jwe@octave.org>
parents: 10840
diff changeset
372 if (args(0).is_complex_type () || args(1).is_complex_type ())
10384
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
373 {
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
374 ComplexNDArray a (args(0).complex_array_value ());
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
375 if (args(1).is_real_type ())
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
376 {
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
377 NDArray b (args(1).array_value ());
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
378 retval = convn (a, b, ct);
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
379 }
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
380 else
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
381 {
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
382 ComplexNDArray b (args(1).complex_array_value ());
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
383 retval = convn (a, b, ct);
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
384 }
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
385 }
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
386 else
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
387 {
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
388 NDArray a (args(0).array_value ());
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
389 NDArray b (args(1).array_value ());
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
390 retval = convn (a, b, ct);
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
391 }
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
392 }
5819
e54c11df0524 [project @ 2006-05-17 20:34:52 by jwe]
jwe
parents:
diff changeset
393
15241
2cdace1ba287 Validate conv2 inputs are 2-D matrices (Bug #37200)
Rik <rik@octave.org>
parents: 15195
diff changeset
394 return retval;
10384
978f5c94b11f initial implementation of conv2/convn in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10371
diff changeset
395 }
14209
846273dae16b Return correct part of convolution for 'same' parameter in conv2, convn (Bug #34893).
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
396
846273dae16b Return correct part of convolution for 'same' parameter in conv2, convn (Bug #34893).
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
397 /*
17696
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
398 ## Check for bug #39314
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
399 %!test
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
400 %! v = reshape ([1 2], [1 1 2]);
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
401 %! assert (convn (v, v), reshape ([1 4 4], [1 1 3]));
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
402 %! assert (convn (v, v, "same"), reshape ([4 4], [1 1 2]));
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
403 %! assert (convn (v, v, "valid"), 4);
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
404
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
405 ## The following test may look weird since we are using the output
17837
73b239db1594 Make known conv failures xtests.
Rik <rik@octave.org>
parents: 17834
diff changeset
406 ## of convn to test itself. However, because calculations are done
17696
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
407 ## differently based on the shape option, it will help to catch some
17837
73b239db1594 Make known conv failures xtests.
Rik <rik@octave.org>
parents: 17834
diff changeset
408 ## bugs. See also bug #39314.
73b239db1594 Make known conv failures xtests.
Rik <rik@octave.org>
parents: 17834
diff changeset
409 ## FIXME: The "valid" option uses an entirely different code path
73b239db1594 Make known conv failures xtests.
Rik <rik@octave.org>
parents: 17834
diff changeset
410 ## through C++ and Fortran to calculate inner convolution.
73b239db1594 Make known conv failures xtests.
Rik <rik@octave.org>
parents: 17834
diff changeset
411 ## The terms in the convolution added in reverse order compared
73b239db1594 Make known conv failures xtests.
Rik <rik@octave.org>
parents: 17834
diff changeset
412 ## to the "full" option. This produces differences on the order
73b239db1594 Make known conv failures xtests.
Rik <rik@octave.org>
parents: 17834
diff changeset
413 ## of tens of eps. This should be fixed, but in the meantime
73b239db1594 Make known conv failures xtests.
Rik <rik@octave.org>
parents: 17834
diff changeset
414 ## the tests will be marked as xtests.
17696
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
415 %!shared a, b, c
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
416 %! ## test 3D by 3D
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
417 %! a = rand (10, 10, 10);
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
418 %! b = rand (3, 3, 3);
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
419 %! c = convn (a, b, "full");
17834
7957aedf0b2d Fix 4 %!tests for convolution.
Rik <rik@octave.org>
parents: 17787
diff changeset
420 %!assert (convn (a, b, "same"), c(2:11,2:11,2:11))
17837
73b239db1594 Make known conv failures xtests.
Rik <rik@octave.org>
parents: 17834
diff changeset
421 %!xtest
73b239db1594 Make known conv failures xtests.
Rik <rik@octave.org>
parents: 17834
diff changeset
422 %! assert (convn (a, b, "valid"), c(3:10,3:10,3:10));
17696
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
423 %!
17834
7957aedf0b2d Fix 4 %!tests for convolution.
Rik <rik@octave.org>
parents: 17787
diff changeset
424 %!test
17696
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
425 %! ## test 3D by 2D
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
426 %! a = rand (10, 10, 10);
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
427 %! b = rand (3, 3);
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
428 %! c = convn (a, b, "full");
17834
7957aedf0b2d Fix 4 %!tests for convolution.
Rik <rik@octave.org>
parents: 17787
diff changeset
429 %!assert (convn (a, b, "same"), c(2:11,2:11,:))
17837
73b239db1594 Make known conv failures xtests.
Rik <rik@octave.org>
parents: 17834
diff changeset
430 %!xtest
73b239db1594 Make known conv failures xtests.
Rik <rik@octave.org>
parents: 17834
diff changeset
431 %! assert (convn (a, b, "valid"), c(3:10,3:10,:))
17696
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
432 %!
17834
7957aedf0b2d Fix 4 %!tests for convolution.
Rik <rik@octave.org>
parents: 17787
diff changeset
433 %!test
17696
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
434 %! ## test 2D by 3D
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
435 %! a = rand (10, 10);
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
436 %! b = rand (3, 3, 3);
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
437 %! c = convn (a, b, "full");
17834
7957aedf0b2d Fix 4 %!tests for convolution.
Rik <rik@octave.org>
parents: 17787
diff changeset
438 %!assert (convn (a, b, "same"), c(2:11,2:11,2))
7957aedf0b2d Fix 4 %!tests for convolution.
Rik <rik@octave.org>
parents: 17787
diff changeset
439 %!assert (convn (a, b, "valid"), c(3:10,3:10,3:2)) # a 7x7x0 matrix
17696
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
440 %!
17834
7957aedf0b2d Fix 4 %!tests for convolution.
Rik <rik@octave.org>
parents: 17787
diff changeset
441 %!test
7957aedf0b2d Fix 4 %!tests for convolution.
Rik <rik@octave.org>
parents: 17787
diff changeset
442 %! ## test multiple different number of dimensions, with odd and even numbers
17696
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
443 %! a = rand (10, 15, 7, 8, 10);
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
444 %! b = rand (4, 3, 2, 3);
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
445 %! c = convn (a, b, "full");
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
446 %!assert (convn (a, b, "same"), c(3:12,2:16,2:8,2:9,:))
17837
73b239db1594 Make known conv failures xtests.
Rik <rik@octave.org>
parents: 17834
diff changeset
447 %!xtest
73b239db1594 Make known conv failures xtests.
Rik <rik@octave.org>
parents: 17834
diff changeset
448 %! assert (convn (a, b, "valid"), c(4:10,3:15,2:7,3:8,:))
17696
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
449
17834
7957aedf0b2d Fix 4 %!tests for convolution.
Rik <rik@octave.org>
parents: 17787
diff changeset
450 %!test
17696
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
451 %! a = reshape (floor (magic (16) /10), [4 8 4 2]);
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
452 %! b = reshape (magic (6), [4 3 3]);
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
453 %! c = zeros (7, 10, 6, 2);
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
454 %! c(:,:,1,1) = [
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
455 %! 875 1415 1215 741 288 264 635 1109 687 171
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
456 %! 110 467 1551 1790 1891 1651 1165 900 659 568
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
457 %! 883 1047 1475 1964 2181 2302 2117 1674 579 234
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
458 %! 940 2330 3099 2573 2306 2207 2442 2918 2272 1004
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
459 %! 161 500 1564 2066 2355 2270 2099 1621 1144 831
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
460 %! 644 622 886 1121 1652 1967 1907 1668 529 228
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
461 %! 160 752 1232 768 360 284 668 1132 1380 864];
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
462 %! c(:,:,2,1) = [
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
463 %! 150 1174 1903 1971 2030 1719 1467 1420 1220 472
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
464 %! 986 2243 2603 2385 2308 2530 2971 3181 2266 768
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
465 %! 914 2443 3750 3782 3976 3821 3723 3709 2599 1178
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
466 %! 1922 3374 5198 5472 5563 5853 5794 5543 3578 1820
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
467 %! 1060 2471 3846 3724 3682 3803 3812 3927 2876 1390
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
468 %! 470 2078 3283 3225 2701 2265 2165 2261 2324 1124
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
469 %! 700 1130 1486 1515 1830 2097 2081 2028 1009 348];
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
470 %! c(:,:,3,1) = [
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
471 %! 1350 2127 2461 2082 1694 1909 2230 2621 1681 683
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
472 %! 877 2473 4362 4556 4543 4314 3879 3703 2863 1497
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
473 %! 1934 4219 5874 6117 5966 6051 5984 5714 3891 1562
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
474 %! 1927 5997 8573 8456 8517 8025 7957 8101 6121 2500
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
475 %! 1558 3533 5595 6064 6453 6491 6275 5743 3794 1832
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
476 %! 1950 2762 3455 3423 4019 4578 4807 4857 2304 907
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
477 %! 525 1860 2731 2392 1872 1724 1961 2312 2315 1141];
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
478 %! c(:,:,4,1) = [
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
479 %! 150 1317 2230 2621 2996 2767 2472 2049 1514 583
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
480 %! 1429 3056 3879 3703 3756 3964 4394 4570 3111 1250
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
481 %! 1833 4037 5984 5714 5846 5788 5883 6129 4157 2011
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
482 %! 3143 5469 7957 8101 8063 8475 8564 8439 5306 2538
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
483 %! 2001 4514 6275 5743 5391 5389 5578 6110 4473 1953
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
484 %! 817 3196 4807 4857 4229 3659 3477 3375 3208 1400
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
485 %! 750 1365 1961 2312 2840 2993 2722 2344 1092 323];
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
486 %! c(:,:,5,1) = [
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
487 %! 475 734 1296 1352 1400 1595 1557 1517 960 490
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
488 %! 751 1977 2831 2746 2607 2665 2733 2833 2186 912
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
489 %! 1065 3142 4344 4150 3768 3734 3876 4086 3366 1327
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
490 %! 976 3712 5530 5921 6158 5802 5481 5071 3821 1491
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
491 %! 1397 2996 3971 4003 4088 4180 4199 4146 2649 985
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
492 %! 1273 2121 2555 2247 2378 2624 2908 3229 1788 705
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
493 %! 365 1108 1530 1652 1550 1407 1274 1127 889 264];
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
494 %! c(:,:,6,1) = [
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
495 %! 0 133 345 683 982 1058 960 623 310 100
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
496 %! 437 806 1313 1332 1383 1391 1397 1370 864 495
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
497 %! 928 1573 2201 1928 1864 1932 2183 2445 1557 855
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
498 %! 1199 2083 2739 2573 2507 2656 2786 2928 1795 736
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
499 %! 912 1997 2404 2028 1692 1591 1803 2159 1603 599
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
500 %! 345 1092 1526 1666 1593 1437 1275 1116 863 253
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
501 %! 50 235 510 811 998 894 615 318 77 0];
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
502 %! c(:,:,1,2) = [
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
503 %! 840 1350 1176 697 293 320 674 1153 717 180
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
504 %! 142 490 1563 1824 1929 1604 1132 857 624 587
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
505 %! 890 1084 1539 1979 2238 2333 2072 1610 509 202
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
506 %! 966 2263 3034 2518 2250 2235 2512 2992 2305 1016
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
507 %! 200 561 1607 2107 2361 2277 2030 1548 1102 818
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
508 %! 652 631 922 1128 1670 1997 1895 1665 467 197
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
509 %! 160 744 1192 692 292 256 708 1208 1448 900];
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
510 %! c(:,:,2,2) = [
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
511 %! 179 1199 1886 1987 1997 1716 1479 1383 1215 485
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
512 %! 988 2213 2552 2358 2304 2615 3011 3210 2246 744
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
513 %! 921 2483 3747 3768 3960 3835 3712 3698 2588 1183
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
514 %! 1903 3416 5254 5490 5572 5826 5761 5505 3502 1814
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
515 %! 1064 2507 3825 3666 3680 3748 3821 3958 2892 1395
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
516 %! 495 2129 3277 3228 2566 2216 2154 2250 2390 1154
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
517 %! 700 1105 1472 1524 1856 2113 2059 2019 975 325];
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
518 %! c(:,:,3,2) = [
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
519 %! 1302 2104 2439 2006 1723 1931 2280 2685 1678 690
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
520 %! 877 2507 4408 4580 4523 4233 3852 3647 2850 1516
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
521 %! 1949 4238 5895 6143 6018 6063 5930 5656 3847 1538
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
522 %! 1953 5975 8547 8433 8407 8060 7955 8069 6170 2506
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
523 %! 1621 3536 5624 6117 6459 6456 6180 5666 3735 1815
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
524 %! 1904 2751 3429 3366 4122 4622 4840 4864 2242 882
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
525 %! 517 1843 2674 2337 1777 1686 2005 2367 2385 1175];
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
526 %! c(:,:,4,2) = [
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
527 %! 198 1346 2280 2685 2980 2759 2396 1982 1497 576
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
528 %! 1413 2994 3852 3647 3756 4035 4418 4595 3109 1231
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
529 %! 1873 4025 5930 5656 5792 5772 5909 6152 4185 2035
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
530 %! 3110 5510 7955 8069 8139 8456 8541 8439 5276 2541
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
531 %! 1964 4462 6180 5666 5315 5409 5631 6178 4536 1998
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
532 %! 869 3215 4840 4864 4121 3579 3420 3386 3271 1430
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
533 %! 725 1361 2005 2367 2925 3006 2667 2297 1054 325];
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
534 %! c(:,:,5,2) = [
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
535 %! 462 754 1285 1359 1441 1605 1556 1488 938 488
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
536 %! 729 1967 2788 2732 2608 2683 2744 2830 2195 912
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
537 %! 1052 3139 4302 4101 3742 3730 3895 4103 3403 1335
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
538 %! 1007 3725 5577 5964 6165 5754 5407 5006 3846 1507
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
539 %! 1375 2969 3951 3990 4144 4183 4200 4150 2661 998
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
540 %! 1258 2090 2495 2188 2403 2664 2954 3279 1814 723
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
541 %! 388 1127 1551 1673 1525 1390 1253 1139 912 275];
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
542 %! c(:,:,6,2) = [
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
543 %! 19 147 384 716 1016 1059 927 570 276 80
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
544 %! 441 791 1298 1320 1401 1396 1409 1367 865 500
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
545 %! 932 1537 2155 1870 1860 1946 2221 2487 1584 874
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
546 %! 1201 2067 2705 2538 2512 2687 2806 2971 1812 756
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
547 %! 925 1976 2363 1971 1636 1600 1844 2239 1664 626
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
548 %! 372 1133 1558 1687 1570 1401 1243 1122 883 264
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
549 %! 60 270 556 857 1024 870 569 282 66 0];
17834
7957aedf0b2d Fix 4 %!tests for convolution.
Rik <rik@octave.org>
parents: 17787
diff changeset
550 %!assert (convn(a, b, "full"), c)
7957aedf0b2d Fix 4 %!tests for convolution.
Rik <rik@octave.org>
parents: 17787
diff changeset
551 %!assert (convn(a, b, "same"), c(3:6,2:9,2:5,:))
7957aedf0b2d Fix 4 %!tests for convolution.
Rik <rik@octave.org>
parents: 17787
diff changeset
552 %!assert (convn(a, b, "valid"), c(4,3:8,3:4,:))
17696
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
553
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
554 ## test correct class
17834
7957aedf0b2d Fix 4 %!tests for convolution.
Rik <rik@octave.org>
parents: 17787
diff changeset
555 %!assert (class (convn (rand(5), rand(3))), "double")
7957aedf0b2d Fix 4 %!tests for convolution.
Rik <rik@octave.org>
parents: 17787
diff changeset
556 %!assert (class (convn (rand(5, "single"), rand(3))), "single")
7957aedf0b2d Fix 4 %!tests for convolution.
Rik <rik@octave.org>
parents: 17787
diff changeset
557 %!assert (class (convn (rand(5), rand(3, "single"))), "single")
7957aedf0b2d Fix 4 %!tests for convolution.
Rik <rik@octave.org>
parents: 17787
diff changeset
558 %!assert (class (convn (true (5), rand(3))), "double")
7957aedf0b2d Fix 4 %!tests for convolution.
Rik <rik@octave.org>
parents: 17787
diff changeset
559 %!assert (class (convn (true (5), rand(3, "single"))), "single")
7957aedf0b2d Fix 4 %!tests for convolution.
Rik <rik@octave.org>
parents: 17787
diff changeset
560 %!assert (class (convn (ones(5, "uint8"), rand(3))), "double")
7957aedf0b2d Fix 4 %!tests for convolution.
Rik <rik@octave.org>
parents: 17787
diff changeset
561 %!assert (class (convn (rand (3, "single"), ones(5, "uint8"))), "single")
17696
92226d09f91a Return correct convolution for valid shape argument in convn (bug #39314)
Marco Cecchetti <mrcekets@gmail.com>
parents: 17695
diff changeset
562
17695
d6f4b01075e0 convn: give error for non-string shape argument.
Carnë Draug <carandraug@octave.org>
parents: 17336
diff changeset
563 %!error convn ()
d6f4b01075e0 convn: give error for non-string shape argument.
Carnë Draug <carandraug@octave.org>
parents: 17336
diff changeset
564 %!error convn (1)
d6f4b01075e0 convn: give error for non-string shape argument.
Carnë Draug <carandraug@octave.org>
parents: 17336
diff changeset
565 %!error <SHAPE type not valid> convn (1,2, "NOT_A_SHAPE")
d6f4b01075e0 convn: give error for non-string shape argument.
Carnë Draug <carandraug@octave.org>
parents: 17336
diff changeset
566 %!error convn (rand (3), 1, 1)
14209
846273dae16b Return correct part of convolution for 'same' parameter in conv2, convn (Bug #34893).
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
567 */