Mercurial > octave
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 |
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 | 7 ## |
8 ## This file is part of Octave. | |
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 | 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 | 14 ## |
15 ## Octave is distributed in the hope that it will be useful, but | |
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 | 19 ## |
20 ## You should have received a copy of the GNU General Public License | |
7016 | 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 | 25 |
3367 | 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 | 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 | 32 ## |
3367 | 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 | 38 ## |
12546
39ca02387a32
Improve docstrings for a number of functions.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
39 ## @seealso{filter, filter2} |
3367 | 40 ## @end deftypefn |
2312 | 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 | 43 |
2325 | 44 ## If N is not specified explicitly, we do not use the overlap-add |
2303 | 45 ## method at all because loops are really slow. Otherwise, we only |
46 ## ensure that the number of points in the FFT is the smallest power | |
47 ## of two larger than N and length(b). This could result in length | |
48 ## one blocks, but if the user knows better ... | |
2325 | 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 | 51 print_usage (); |
787 | 52 endif |
2325 | 53 |
3890 | 54 transpose = (rows (x) == 1); |
55 | |
56 if (transpose) | |
57 x = x.'; | |
58 endif | |
59 | |
787 | 60 [r_x, c_x] = size (x); |
61 [r_b, c_b] = size (b); | |
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 | 69 endif |
2325 | 70 |
3890 | 71 l_b = r_b * c_b; |
72 b = reshape (b, l_b, 1); | |
2325 | 73 |
787 | 74 if (nargin == 2) |
2303 | 75 ## Use FFT with the smallest power of 2 which is >= length (x) + |
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 | 80 else |
2303 | 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 | 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 | 89 R = ceil (r_x / L); |
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 | 92 lo = (r - 1) * L + 1; |
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 | 95 tmp(1:(hi-lo+1),:) = x(lo:hi,:); |
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 | 98 y(lo:hi,:) = y(lo:hi,:) + tmp(1:(hi-lo+1),:); |
2325 | 99 endfor |
787 | 100 endif |
2325 | 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 | 119 endif |
787 | 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 | 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 | 131 endif |
132 | |
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 | 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 | 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 | 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 | 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 | 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)) |