annotate scripts/signal/fftfilt.m @ 30875:5d3faba0342e

doc: Ensure documentation lists output argument when it exists for all m-files. For new users of Octave it is best to show explicit calling forms in the documentation and to show a return argument when it exists. * bp-table.cc, shift.m, accumarray.m, accumdim.m, bincoeff.m, bitcmp.m, bitget.m, bitset.m, blkdiag.m, celldisp.m, cplxpair.m, dblquad.m, flip.m, fliplr.m, flipud.m, idivide.m, int2str.m, interpft.m, logspace.m, num2str.m, polyarea.m, postpad.m, prepad.m, randi.m, repmat.m, rng.m, rot90.m, rotdim.m, structfun.m, triplequad.m, uibuttongroup.m, uicontrol.m, uipanel.m, uipushtool.m, uitoggletool.m, uitoolbar.m, waitforbuttonpress.m, help.m, __additional_help_message__.m, hsv.m, im2double.m, im2frame.m, javachk.m, usejava.m, argnames.m, char.m, formula.m, inline.m, __vectorize__.m, findstr.m, flipdim.m, strmatch.m, vectorize.m, commutation_matrix.m, cond.m, cross.m, duplication_matrix.m, expm.m, orth.m, rank.m, rref.m, trace.m, vech.m, cast.m, compare_versions.m, delete.m, dir.m, fileattrib.m, grabcode.m, gunzip.m, inputname.m, license.m, list_primes.m, ls.m, mexext.m, movefile.m, namelengthmax.m, nargoutchk.m, nthargout.m, substruct.m, swapbytes.m, ver.m, verLessThan.m, what.m, fminunc.m, fsolve.m, fzero.m, optimget.m, __fdjac__.m, matlabroot.m, savepath.m, campos.m, camroll.m, camtarget.m, camup.m, camva.m, camzoom.m, clabel.m, diffuse.m, legend.m, orient.m, rticks.m, specular.m, thetaticks.m, xlim.m, xtickangle.m, xticklabels.m, xticks.m, ylim.m, ytickangle.m, yticklabels.m, yticks.m, zlim.m, ztickangle.m, zticklabels.m, zticks.m, ellipsoid.m, isocolors.m, isonormals.m, stairs.m, surfnorm.m, __actual_axis_position__.m, __pltopt__.m, close.m, graphics_toolkit.m, pan.m, print.m, printd.m, __ghostscript__.m, __gnuplot_print__.m, __opengl_print__.m, rotate3d.m, subplot.m, zoom.m, compan.m, conv.m, poly.m, polyaffine.m, polyder.m, polyint.m, polyout.m, polyreduce.m, polyvalm.m, roots.m, prefdir.m, prefsfile.m, profexplore.m, profexport.m, profshow.m, powerset.m, unique.m, arch_rnd.m, arma_rnd.m, autoreg_matrix.m, bartlett.m, blackman.m, detrend.m, durbinlevinson.m, fftconv.m, fftfilt.m, fftshift.m, fractdiff.m, hamming.m, hanning.m, hurst.m, ifftshift.m, rectangle_lw.m, rectangle_sw.m, triangle_lw.m, sinc.m, sinetone.m, sinewave.m, spectral_adf.m, spectral_xdf.m, spencer.m, ilu.m, __sprand__.m, sprand.m, sprandn.m, sprandsym.m, treelayout.m, beta.m, betainc.m, betaincinv.m, betaln.m, cosint.m, expint.m, factorial.m, gammainc.m, gammaincinv.m, lcm.m, nthroot.m, perms.m, reallog.m, realpow.m, realsqrt.m, sinint.m, hadamard.m, hankel.m, hilb.m, invhilb.m, magic.m, pascal.m, rosser.m, toeplitz.m, vander.m, wilkinson.m, center.m, corr.m, cov.m, discrete_cdf.m, discrete_inv.m, discrete_pdf.m, discrete_rnd.m, empirical_cdf.m, empirical_inv.m, empirical_pdf.m, empirical_rnd.m, kendall.m, kurtosis.m, mad.m, mean.m, meansq.m, median.m, mode.m, moment.m, range.m, ranks.m, run_count.m, skewness.m, spearman.m, statistics.m, std.m, base2dec.m, bin2dec.m, blanks.m, cstrcat.m, deblank.m, dec2base.m, dec2bin.m, dec2hex.m, hex2dec.m, index.m, regexptranslate.m, rindex.m, strcat.m, strjust.m, strtrim.m, strtrunc.m, substr.m, untabify.m, __have_feature__.m, __prog_output_assert__.m, __run_test_suite__.m, example.m, fail.m, asctime.m, calendar.m, ctime.m, date.m, etime.m: Add return arguments to @deftypefn macros where they were missing. Rename variables in functions (particularly generic "retval") to match documentation. Rename some return variables for (hopefully) better clarity (e.g., 'ax' to 'hax' to indicate it is a graphics handle to an axes object).
author Rik <rik@octave.org>
date Wed, 30 Mar 2022 20:40:27 -0700
parents 796f54d4ddbf
children 597f3ee61a48
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
27923
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
1 ########################################################################
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
2 ##
30564
796f54d4ddbf update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents: 30330
diff changeset
3 ## Copyright (C) 1994-2022 The Octave Project Developers
27918
b442ec6dda5c use centralized file for copyright info for individual contributors
John W. Eaton <jwe@octave.org>
parents: 26376
diff changeset
4 ##
27923
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
5 ## See the file COPYRIGHT.md in the top-level directory of this
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
6 ## distribution or <https://octave.org/copyright/>.
2313
5ca126254d15 [project @ 1996-07-11 21:25:22 by jwe]
jwe
parents: 2312
diff changeset
7 ##
5ca126254d15 [project @ 1996-07-11 21:25:22 by jwe]
jwe
parents: 2312
diff changeset
8 ## This file is part of Octave.
5ca126254d15 [project @ 1996-07-11 21:25:22 by jwe]
jwe
parents: 2312
diff changeset
9 ##
24534
194eb4bd202b maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents: 23220
diff changeset
10 ## Octave is free software: you can redistribute it and/or modify it
2313
5ca126254d15 [project @ 1996-07-11 21:25:22 by jwe]
jwe
parents: 2312
diff changeset
11 ## under the terms of the GNU General Public License as published by
24534
194eb4bd202b maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents: 23220
diff changeset
12 ## the Free Software Foundation, either version 3 of the License, or
22755
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22323
diff changeset
13 ## (at your option) any later version.
2313
5ca126254d15 [project @ 1996-07-11 21:25:22 by jwe]
jwe
parents: 2312
diff changeset
14 ##
5ca126254d15 [project @ 1996-07-11 21:25:22 by jwe]
jwe
parents: 2312
diff changeset
15 ## Octave is distributed in the hope that it will be useful, but
5ca126254d15 [project @ 1996-07-11 21:25:22 by jwe]
jwe
parents: 2312
diff changeset
16 ## WITHOUT ANY WARRANTY; without even the implied warranty of
22755
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22323
diff changeset
17 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22323
diff changeset
18 ## GNU General Public License for more details.
2313
5ca126254d15 [project @ 1996-07-11 21:25:22 by jwe]
jwe
parents: 2312
diff changeset
19 ##
5ca126254d15 [project @ 1996-07-11 21:25:22 by jwe]
jwe
parents: 2312
diff changeset
20 ## 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: 6046
diff changeset
21 ## along with Octave; see the file COPYING. If not, see
24534
194eb4bd202b maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents: 23220
diff changeset
22 ## <https://www.gnu.org/licenses/>.
27923
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
23 ##
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
24 ########################################################################
1026
9fc405c8c06c [project @ 1995-01-11 21:17:01 by jwe]
jwe
parents: 904
diff changeset
25
3367
0748b03c3510 [project @ 1999-11-20 14:52:38 by jwe]
jwe
parents: 2847
diff changeset
26 ## -*- texinfo -*-
30875
5d3faba0342e doc: Ensure documentation lists output argument when it exists for all m-files.
Rik <rik@octave.org>
parents: 30564
diff changeset
27 ## @deftypefn {} {@var{y} =} fftfilt (@var{b}, @var{x})
5d3faba0342e doc: Ensure documentation lists output argument when it exists for all m-files.
Rik <rik@octave.org>
parents: 30564
diff changeset
28 ## @deftypefnx {} {@var{y} =} fftfilt (@var{b}, @var{x}, @var{n})
20165
f1d0f506ee78 doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents: 19833
diff changeset
29 ## Filter @var{x} with the FIR filter @var{b} using the FFT.
3426
f8dde1807dee [project @ 2000-01-13 08:40:00 by jwe]
jwe
parents: 3367
diff changeset
30 ##
20165
f1d0f506ee78 doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents: 19833
diff changeset
31 ## If @var{x} is a matrix, filter each column of the matrix.
3426
f8dde1807dee [project @ 2000-01-13 08:40:00 by jwe]
jwe
parents: 3367
diff changeset
32 ##
3367
0748b03c3510 [project @ 1999-11-20 14:52:38 by jwe]
jwe
parents: 2847
diff changeset
33 ## Given the optional third argument, @var{n}, @code{fftfilt} uses the
20165
f1d0f506ee78 doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents: 19833
diff changeset
34 ## overlap-add method to filter @var{x} with @var{b} using an N-point FFT@.
f1d0f506ee78 doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents: 19833
diff changeset
35 ## The FFT size must be an even power of 2 and must be greater than or equal to
f1d0f506ee78 doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents: 19833
diff changeset
36 ## the length of @var{b}. If the specified @var{n} does not meet these
f1d0f506ee78 doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents: 19833
diff changeset
37 ## criteria, it is automatically adjusted to the nearest value that does.
3890
9652abf2c297 [project @ 2002-04-04 23:24:39 by jwe]
jwe
parents: 3457
diff changeset
38 ##
12546
39ca02387a32 Improve docstrings for a number of functions.
Rik <octave@nomad.inbox5.com>
parents: 11523
diff changeset
39 ## @seealso{filter, filter2}
3367
0748b03c3510 [project @ 1999-11-20 14:52:38 by jwe]
jwe
parents: 2847
diff changeset
40 ## @end deftypefn
2312
204cc7db6f4a [project @ 1996-07-11 21:20:36 by jwe]
jwe
parents: 2311
diff changeset
41
11469
c776f063fefe Overhaul m-script files to use common variable name between code and documentation.
Rik <octave@nomad.inbox5.com>
parents: 7017
diff changeset
42 function y = fftfilt (b, x, n)
787
c5d35bb139b6 [project @ 1994-10-11 00:34:13 by jwe]
jwe
parents:
diff changeset
43
2325
b5568c31ee2c [project @ 1996-07-15 22:20:21 by jwe]
jwe
parents: 2313
diff changeset
44 ## If N is not specified explicitly, we do not use the overlap-add
2303
5cffc4b8de57 [project @ 1996-06-24 09:15:24 by jwe]
jwe
parents: 1887
diff changeset
45 ## method at all because loops are really slow. Otherwise, we only
5cffc4b8de57 [project @ 1996-06-24 09:15:24 by jwe]
jwe
parents: 1887
diff changeset
46 ## ensure that the number of points in the FFT is the smallest power
5cffc4b8de57 [project @ 1996-06-24 09:15:24 by jwe]
jwe
parents: 1887
diff changeset
47 ## of two larger than N and length(b). This could result in length
5cffc4b8de57 [project @ 1996-06-24 09:15:24 by jwe]
jwe
parents: 1887
diff changeset
48 ## one blocks, but if the user knows better ...
2325
b5568c31ee2c [project @ 1996-07-15 22:20:21 by jwe]
jwe
parents: 2313
diff changeset
49
28789
28de41192f3c Eliminate unneeded verification of nargin, nargout in m-files.
Rik <rik@octave.org>
parents: 27985
diff changeset
50 if (nargin < 2)
6046
34f96dd5441b [project @ 2006-10-10 16:10:25 by jwe]
jwe
parents: 5428
diff changeset
51 print_usage ();
787
c5d35bb139b6 [project @ 1994-10-11 00:34:13 by jwe]
jwe
parents:
diff changeset
52 endif
2325
b5568c31ee2c [project @ 1996-07-15 22:20:21 by jwe]
jwe
parents: 2313
diff changeset
53
3890
9652abf2c297 [project @ 2002-04-04 23:24:39 by jwe]
jwe
parents: 3457
diff changeset
54 transpose = (rows (x) == 1);
9652abf2c297 [project @ 2002-04-04 23:24:39 by jwe]
jwe
parents: 3457
diff changeset
55
9652abf2c297 [project @ 2002-04-04 23:24:39 by jwe]
jwe
parents: 3457
diff changeset
56 if (transpose)
9652abf2c297 [project @ 2002-04-04 23:24:39 by jwe]
jwe
parents: 3457
diff changeset
57 x = x.';
9652abf2c297 [project @ 2002-04-04 23:24:39 by jwe]
jwe
parents: 3457
diff changeset
58 endif
9652abf2c297 [project @ 2002-04-04 23:24:39 by jwe]
jwe
parents: 3457
diff changeset
59
787
c5d35bb139b6 [project @ 1994-10-11 00:34:13 by jwe]
jwe
parents:
diff changeset
60 [r_x, c_x] = size (x);
c5d35bb139b6 [project @ 1994-10-11 00:34:13 by jwe]
jwe
parents:
diff changeset
61 [r_b, c_b] = size (b);
c5d35bb139b6 [project @ 1994-10-11 00:34:13 by jwe]
jwe
parents:
diff changeset
62
13092
186c3b80ba54 codesprint: Tests for fftfilt()
Rik <octave@nomad.inbox5.com>
parents: 12546
diff changeset
63 if (! isvector (b))
186c3b80ba54 codesprint: Tests for fftfilt()
Rik <octave@nomad.inbox5.com>
parents: 12546
diff changeset
64 error ("fftfilt: B must be a vector");
186c3b80ba54 codesprint: Tests for fftfilt()
Rik <octave@nomad.inbox5.com>
parents: 12546
diff changeset
65 endif
186c3b80ba54 codesprint: Tests for fftfilt()
Rik <octave@nomad.inbox5.com>
parents: 12546
diff changeset
66
186c3b80ba54 codesprint: Tests for fftfilt()
Rik <octave@nomad.inbox5.com>
parents: 12546
diff changeset
67 if (ndims (x) != 2)
186c3b80ba54 codesprint: Tests for fftfilt()
Rik <octave@nomad.inbox5.com>
parents: 12546
diff changeset
68 error ("fftfilt: X must be a 1-D or 2-D array");
787
c5d35bb139b6 [project @ 1994-10-11 00:34:13 by jwe]
jwe
parents:
diff changeset
69 endif
2325
b5568c31ee2c [project @ 1996-07-15 22:20:21 by jwe]
jwe
parents: 2313
diff changeset
70
3890
9652abf2c297 [project @ 2002-04-04 23:24:39 by jwe]
jwe
parents: 3457
diff changeset
71 l_b = r_b * c_b;
9652abf2c297 [project @ 2002-04-04 23:24:39 by jwe]
jwe
parents: 3457
diff changeset
72 b = reshape (b, l_b, 1);
2325
b5568c31ee2c [project @ 1996-07-15 22:20:21 by jwe]
jwe
parents: 2313
diff changeset
73
787
c5d35bb139b6 [project @ 1994-10-11 00:34:13 by jwe]
jwe
parents:
diff changeset
74 if (nargin == 2)
2303
5cffc4b8de57 [project @ 1996-06-24 09:15:24 by jwe]
jwe
parents: 1887
diff changeset
75 ## Use FFT with the smallest power of 2 which is >= length (x) +
5cffc4b8de57 [project @ 1996-06-24 09:15:24 by jwe]
jwe
parents: 1887
diff changeset
76 ## length (b) - 1 as number of points ...
13092
186c3b80ba54 codesprint: Tests for fftfilt()
Rik <octave@nomad.inbox5.com>
parents: 12546
diff changeset
77 n = 2 ^ nextpow2 (r_x + l_b - 1);
11469
c776f063fefe Overhaul m-script files to use common variable name between code and documentation.
Rik <octave@nomad.inbox5.com>
parents: 7017
diff changeset
78 B = fft (b, n);
13092
186c3b80ba54 codesprint: Tests for fftfilt()
Rik <octave@nomad.inbox5.com>
parents: 12546
diff changeset
79 y = ifft (fft (x, n) .* B(:, ones (1, c_x)));
787
c5d35bb139b6 [project @ 1994-10-11 00:34:13 by jwe]
jwe
parents:
diff changeset
80 else
2303
5cffc4b8de57 [project @ 1996-06-24 09:15:24 by jwe]
jwe
parents: 1887
diff changeset
81 ## Use overlap-add method ...
11469
c776f063fefe Overhaul m-script files to use common variable name between code and documentation.
Rik <octave@nomad.inbox5.com>
parents: 7017
diff changeset
82 if (! (isscalar (n)))
11472
1740012184f9 Use uppercase for variable names in error() strings to match Info documentation. Only m-files done.
Rik <octave@nomad.inbox5.com>
parents: 11469
diff changeset
83 error ("fftfilt: N has to be a scalar");
787
c5d35bb139b6 [project @ 1994-10-11 00:34:13 by jwe]
jwe
parents:
diff changeset
84 endif
13092
186c3b80ba54 codesprint: Tests for fftfilt()
Rik <octave@nomad.inbox5.com>
parents: 12546
diff changeset
85 n = 2 ^ nextpow2 (max ([n, l_b]));
11469
c776f063fefe Overhaul m-script files to use common variable name between code and documentation.
Rik <octave@nomad.inbox5.com>
parents: 7017
diff changeset
86 L = n - l_b + 1;
c776f063fefe Overhaul m-script files to use common variable name between code and documentation.
Rik <octave@nomad.inbox5.com>
parents: 7017
diff changeset
87 B = fft (b, n);
13092
186c3b80ba54 codesprint: Tests for fftfilt()
Rik <octave@nomad.inbox5.com>
parents: 12546
diff changeset
88 B = B(:, ones (c_x,1));
3890
9652abf2c297 [project @ 2002-04-04 23:24:39 by jwe]
jwe
parents: 3457
diff changeset
89 R = ceil (r_x / L);
9652abf2c297 [project @ 2002-04-04 23:24:39 by jwe]
jwe
parents: 3457
diff changeset
90 y = zeros (r_x, c_x);
26268
6dd232798997 maint: Remove useless ';' from end of for, if, while, etc. statements.
Rik <rik@octave.org>
parents: 25586
diff changeset
91 for r = 1:R
3890
9652abf2c297 [project @ 2002-04-04 23:24:39 by jwe]
jwe
parents: 3457
diff changeset
92 lo = (r - 1) * L + 1;
9652abf2c297 [project @ 2002-04-04 23:24:39 by jwe]
jwe
parents: 3457
diff changeset
93 hi = min (r * L, r_x);
11469
c776f063fefe Overhaul m-script files to use common variable name between code and documentation.
Rik <octave@nomad.inbox5.com>
parents: 7017
diff changeset
94 tmp = zeros (n, c_x);
3890
9652abf2c297 [project @ 2002-04-04 23:24:39 by jwe]
jwe
parents: 3457
diff changeset
95 tmp(1:(hi-lo+1),:) = x(lo:hi,:);
9652abf2c297 [project @ 2002-04-04 23:24:39 by jwe]
jwe
parents: 3457
diff changeset
96 tmp = ifft (fft (tmp) .* B);
11469
c776f063fefe Overhaul m-script files to use common variable name between code and documentation.
Rik <octave@nomad.inbox5.com>
parents: 7017
diff changeset
97 hi = min (lo+n-1, r_x);
3890
9652abf2c297 [project @ 2002-04-04 23:24:39 by jwe]
jwe
parents: 3457
diff changeset
98 y(lo:hi,:) = y(lo:hi,:) + tmp(1:(hi-lo+1),:);
2325
b5568c31ee2c [project @ 1996-07-15 22:20:21 by jwe]
jwe
parents: 2313
diff changeset
99 endfor
787
c5d35bb139b6 [project @ 1994-10-11 00:34:13 by jwe]
jwe
parents:
diff changeset
100 endif
2325
b5568c31ee2c [project @ 1996-07-15 22:20:21 by jwe]
jwe
parents: 2313
diff changeset
101
13092
186c3b80ba54 codesprint: Tests for fftfilt()
Rik <octave@nomad.inbox5.com>
parents: 12546
diff changeset
102 y = y(1:r_x, :);
16429
586972e3ea7a Correct errors in the fftfilt rounding (bug #37297), add more robust tests.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 14363
diff changeset
103
586972e3ea7a Correct errors in the fftfilt rounding (bug #37297), add more robust tests.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 14363
diff changeset
104 ## Final cleanups:
586972e3ea7a Correct errors in the fftfilt rounding (bug #37297), add more robust tests.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 14363
diff changeset
105
586972e3ea7a Correct errors in the fftfilt rounding (bug #37297), add more robust tests.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 14363
diff changeset
106 ## - If both b and x are real, y should be real.
586972e3ea7a Correct errors in the fftfilt rounding (bug #37297), add more robust tests.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 14363
diff changeset
107 ## - If b is real and x is imaginary, y should be imaginary.
586972e3ea7a Correct errors in the fftfilt rounding (bug #37297), add more robust tests.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 14363
diff changeset
108 ## - If b is imaginary and x is real, y should be imaginary.
586972e3ea7a Correct errors in the fftfilt rounding (bug #37297), add more robust tests.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 14363
diff changeset
109 ## - If both b and x are imaginary, y should be real.
16436
39847dcd2568 * fftfilt.m: simplify computation of xisreal and xisimag
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 16429
diff changeset
110 xisreal = all (imag (x) == 0);
39847dcd2568 * fftfilt.m: simplify computation of xisreal and xisimag
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 16429
diff changeset
111 xisimag = all (real (x) == 0);
39847dcd2568 * fftfilt.m: simplify computation of xisreal and xisimag
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 16429
diff changeset
112
16429
586972e3ea7a Correct errors in the fftfilt rounding (bug #37297), add more robust tests.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 14363
diff changeset
113 if (all (imag (b) == 0))
586972e3ea7a Correct errors in the fftfilt rounding (bug #37297), add more robust tests.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 14363
diff changeset
114 y (:,xisreal) = real (y (:,xisreal));
586972e3ea7a Correct errors in the fftfilt rounding (bug #37297), add more robust tests.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 14363
diff changeset
115 y (:,xisimag) = complex (real (y (:,xisimag)) * 0, imag (y (:,xisimag)));
586972e3ea7a Correct errors in the fftfilt rounding (bug #37297), add more robust tests.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 14363
diff changeset
116 elseif (all (real (b) == 0))
586972e3ea7a Correct errors in the fftfilt rounding (bug #37297), add more robust tests.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 14363
diff changeset
117 y (:,xisreal) = complex (real (y (:,xisreal)) * 0, imag (y (:,xisreal)));
586972e3ea7a Correct errors in the fftfilt rounding (bug #37297), add more robust tests.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 14363
diff changeset
118 y (:,xisimag) = real (y (:,xisimag));
3890
9652abf2c297 [project @ 2002-04-04 23:24:39 by jwe]
jwe
parents: 3457
diff changeset
119 endif
787
c5d35bb139b6 [project @ 1994-10-11 00:34:13 by jwe]
jwe
parents:
diff changeset
120
16429
586972e3ea7a Correct errors in the fftfilt rounding (bug #37297), add more robust tests.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 14363
diff changeset
121 ## - If both x and b are integer in both real and imaginary
586972e3ea7a Correct errors in the fftfilt rounding (bug #37297), add more robust tests.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 14363
diff changeset
122 ## components, y should be integer.
586972e3ea7a Correct errors in the fftfilt rounding (bug #37297), add more robust tests.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 14363
diff changeset
123 if (! any (b - fix (b)))
586972e3ea7a Correct errors in the fftfilt rounding (bug #37297), add more robust tests.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 14363
diff changeset
124 idx = find (! any (x - fix (x)));
586972e3ea7a Correct errors in the fftfilt rounding (bug #37297), add more robust tests.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 14363
diff changeset
125 y (:, idx) = round (y (:, idx));
586972e3ea7a Correct errors in the fftfilt rounding (bug #37297), add more robust tests.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 14363
diff changeset
126 endif
1026
9fc405c8c06c [project @ 1995-01-11 21:17:01 by jwe]
jwe
parents: 904
diff changeset
127
16429
586972e3ea7a Correct errors in the fftfilt rounding (bug #37297), add more robust tests.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 14363
diff changeset
128 ## Transpose after cleanup, otherwise rounding fails.
586972e3ea7a Correct errors in the fftfilt rounding (bug #37297), add more robust tests.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 14363
diff changeset
129 if (transpose)
586972e3ea7a Correct errors in the fftfilt rounding (bug #37297), add more robust tests.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 14363
diff changeset
130 y = y.';
787
c5d35bb139b6 [project @ 1994-10-11 00:34:13 by jwe]
jwe
parents:
diff changeset
131 endif
c5d35bb139b6 [project @ 1994-10-11 00:34:13 by jwe]
jwe
parents:
diff changeset
132
c5d35bb139b6 [project @ 1994-10-11 00:34:13 by jwe]
jwe
parents:
diff changeset
133 endfunction
13092
186c3b80ba54 codesprint: Tests for fftfilt()
Rik <octave@nomad.inbox5.com>
parents: 12546
diff changeset
134
186c3b80ba54 codesprint: Tests for fftfilt()
Rik <octave@nomad.inbox5.com>
parents: 12546
diff changeset
135
186c3b80ba54 codesprint: Tests for fftfilt()
Rik <octave@nomad.inbox5.com>
parents: 12546
diff changeset
136 %!shared b, x, r
16429
586972e3ea7a Correct errors in the fftfilt rounding (bug #37297), add more robust tests.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 14363
diff changeset
137
25586
59f4fda5c548 remove fftpack sources
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
138 %!testif HAVE_FFTW
14363
f3d52523cde1 Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
139 %! b = [1 1];
f3d52523cde1 Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
140 %! x = [1, zeros(1,9)];
16429
586972e3ea7a Correct errors in the fftfilt rounding (bug #37297), add more robust tests.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 14363
diff changeset
141 %! assert (fftfilt (b, x ), [1 1 0 0 0 0 0 0 0 0] );
586972e3ea7a Correct errors in the fftfilt rounding (bug #37297), add more robust tests.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 14363
diff changeset
142 %! assert (fftfilt (b, x.'), [1 1 0 0 0 0 0 0 0 0].');
586972e3ea7a Correct errors in the fftfilt rounding (bug #37297), add more robust tests.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 14363
diff changeset
143 %! assert (fftfilt (b.',x ), [1 1 0 0 0 0 0 0 0 0] );
586972e3ea7a Correct errors in the fftfilt rounding (bug #37297), add more robust tests.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 14363
diff changeset
144 %! assert (fftfilt (b.',x.'), [1 1 0 0 0 0 0 0 0 0].');
586972e3ea7a Correct errors in the fftfilt rounding (bug #37297), add more robust tests.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 14363
diff changeset
145 %! assert (fftfilt (b, [x.' x.']), [1 1 0 0 0 0 0 0 0 0].'*[1 1]);
30330
01de0045b2e3 maint: Shorten some long lines to <= 80 characters (bug #57599)
Rik <rik@octave.org>
parents: 29359
diff changeset
146 %! assert (fftfilt (b, [x.'+2*eps x.']) == [1 1 0 0 0 0 0 0 0 0].'*[1 1],
01de0045b2e3 maint: Shorten some long lines to <= 80 characters (bug #57599)
Rik <rik@octave.org>
parents: 29359
diff changeset
147 %! [false(10, 1) true(10, 1)]);
13092
186c3b80ba54 codesprint: Tests for fftfilt()
Rik <octave@nomad.inbox5.com>
parents: 12546
diff changeset
148
25586
59f4fda5c548 remove fftpack sources
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
149 %!testif HAVE_FFTW
14363
f3d52523cde1 Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
150 %! r = sqrt (1/2) * (1+i);
f3d52523cde1 Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
151 %! b = b*r;
16429
586972e3ea7a Correct errors in the fftfilt rounding (bug #37297), add more robust tests.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 14363
diff changeset
152 %! assert (fftfilt (b, x ), r*[1 1 0 0 0 0 0 0 0 0] , eps );
586972e3ea7a Correct errors in the fftfilt rounding (bug #37297), add more robust tests.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 14363
diff changeset
153 %! assert (fftfilt (b, r*x), r*r*[1 1 0 0 0 0 0 0 0 0], 2*eps);
586972e3ea7a Correct errors in the fftfilt rounding (bug #37297), add more robust tests.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 14363
diff changeset
154 %! assert (fftfilt (b, x.'), r*[1 1 0 0 0 0 0 0 0 0].', eps );
13092
186c3b80ba54 codesprint: Tests for fftfilt()
Rik <octave@nomad.inbox5.com>
parents: 12546
diff changeset
155
25586
59f4fda5c548 remove fftpack sources
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
156 %!testif HAVE_FFTW
16429
586972e3ea7a Correct errors in the fftfilt rounding (bug #37297), add more robust tests.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 14363
diff changeset
157 %! b = [1 1];
586972e3ea7a Correct errors in the fftfilt rounding (bug #37297), add more robust tests.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 14363
diff changeset
158 %! x = zeros (10,3); x(1,1)=-1; x(1,2)=1;
14363
f3d52523cde1 Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
159 %! y0 = zeros (10,3); y0(1:2,1)=-1; y0(1:2,2)=1;
16429
586972e3ea7a Correct errors in the fftfilt rounding (bug #37297), add more robust tests.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 14363
diff changeset
160 %! y = fftfilt (b, x);
586972e3ea7a Correct errors in the fftfilt rounding (bug #37297), add more robust tests.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 14363
diff changeset
161 %! assert (y0, y);
586972e3ea7a Correct errors in the fftfilt rounding (bug #37297), add more robust tests.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 14363
diff changeset
162 %! y = fftfilt (b*i, x);
586972e3ea7a Correct errors in the fftfilt rounding (bug #37297), add more robust tests.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 14363
diff changeset
163 %! assert (y0*i, y);
586972e3ea7a Correct errors in the fftfilt rounding (bug #37297), add more robust tests.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 14363
diff changeset
164 %! y = fftfilt (b, x*i);
586972e3ea7a Correct errors in the fftfilt rounding (bug #37297), add more robust tests.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 14363
diff changeset
165 %! assert (y0*i, y);
586972e3ea7a Correct errors in the fftfilt rounding (bug #37297), add more robust tests.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 14363
diff changeset
166 %! y = fftfilt (b*i, x*i);
586972e3ea7a Correct errors in the fftfilt rounding (bug #37297), add more robust tests.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 14363
diff changeset
167 %! assert (-y0, y);
586972e3ea7a Correct errors in the fftfilt rounding (bug #37297), add more robust tests.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 14363
diff changeset
168 %! x = rand (10, 1);
586972e3ea7a Correct errors in the fftfilt rounding (bug #37297), add more robust tests.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 14363
diff changeset
169 %! y = fftfilt (b, [x x*i]);
586972e3ea7a Correct errors in the fftfilt rounding (bug #37297), add more robust tests.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 14363
diff changeset
170 %! assert (true, isreal (y(:,1)));
586972e3ea7a Correct errors in the fftfilt rounding (bug #37297), add more robust tests.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 14363
diff changeset
171 %! assert (false, any (real (y(:,2))));
13092
186c3b80ba54 codesprint: Tests for fftfilt()
Rik <octave@nomad.inbox5.com>
parents: 12546
diff changeset
172
25586
59f4fda5c548 remove fftpack sources
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
173 %!testif HAVE_FFTW
14363
f3d52523cde1 Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
174 %! b = rand (10, 1);
f3d52523cde1 Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
175 %! x = rand (10, 1);
f3d52523cde1 Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
176 %! y0 = filter (b, 1, x);
16429
586972e3ea7a Correct errors in the fftfilt rounding (bug #37297), add more robust tests.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 14363
diff changeset
177 %! y = fftfilt (b, x);
586972e3ea7a Correct errors in the fftfilt rounding (bug #37297), add more robust tests.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 14363
diff changeset
178 %! assert (y0, y, 16*eps);
586972e3ea7a Correct errors in the fftfilt rounding (bug #37297), add more robust tests.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 14363
diff changeset
179 %! y0 = filter (b*i, 1, x*i);
586972e3ea7a Correct errors in the fftfilt rounding (bug #37297), add more robust tests.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 14363
diff changeset
180 %! y = fftfilt (b*i, x*i);
586972e3ea7a Correct errors in the fftfilt rounding (bug #37297), add more robust tests.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 14363
diff changeset
181 %! assert (y0, y, 16*eps);
586972e3ea7a Correct errors in the fftfilt rounding (bug #37297), add more robust tests.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 14363
diff changeset
182
25586
59f4fda5c548 remove fftpack sources
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
183 %!testif HAVE_FFTW
16429
586972e3ea7a Correct errors in the fftfilt rounding (bug #37297), add more robust tests.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 14363
diff changeset
184 %! b = rand (10, 1) + i*rand (10, 1);
586972e3ea7a Correct errors in the fftfilt rounding (bug #37297), add more robust tests.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 14363
diff changeset
185 %! x = rand (10, 1) + i*rand (10, 1);
586972e3ea7a Correct errors in the fftfilt rounding (bug #37297), add more robust tests.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 14363
diff changeset
186 %! y0 = filter (b, 1, x);
586972e3ea7a Correct errors in the fftfilt rounding (bug #37297), add more robust tests.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 14363
diff changeset
187 %! y = fftfilt (b, x);
586972e3ea7a Correct errors in the fftfilt rounding (bug #37297), add more robust tests.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 14363
diff changeset
188 %! assert (y0, y, 55*eps);
13092
186c3b80ba54 codesprint: Tests for fftfilt()
Rik <octave@nomad.inbox5.com>
parents: 12546
diff changeset
189
19833
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19697
diff changeset
190 ## Test input validation
28886
d8318c12d903 test: remove unnecessary BIST tests in m-files checking for excessive number of inputs.
Rik <rik@octave.org>
parents: 28789
diff changeset
191 %!error <Invalid call> fftfilt (1)
13092
186c3b80ba54 codesprint: Tests for fftfilt()
Rik <octave@nomad.inbox5.com>
parents: 12546
diff changeset
192 %!error fftfilt (ones (2), 1)
186c3b80ba54 codesprint: Tests for fftfilt()
Rik <octave@nomad.inbox5.com>
parents: 12546
diff changeset
193 %!error fftfilt (2, ones (3,3,3))
186c3b80ba54 codesprint: Tests for fftfilt()
Rik <octave@nomad.inbox5.com>
parents: 12546
diff changeset
194 %!error fftfilt (2, 1, ones (2))