comparison scripts/special-matrix/vander.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
comparison
equal deleted inserted replaced
30874:2b07748dbae3 30875:5d3faba0342e
22 ## <https://www.gnu.org/licenses/>. 22 ## <https://www.gnu.org/licenses/>.
23 ## 23 ##
24 ######################################################################## 24 ########################################################################
25 25
26 ## -*- texinfo -*- 26 ## -*- texinfo -*-
27 ## @deftypefn {} {} vander (@var{c}) 27 ## @deftypefn {} {@var{V} =} vander (@var{c})
28 ## @deftypefnx {} {} vander (@var{c}, @var{n}) 28 ## @deftypefnx {} {@var{V} =} vander (@var{c}, @var{n})
29 ## Return the @nospell{Vandermonde} matrix whose next to last column is 29 ## Return the @nospell{Vandermonde} matrix whose next to last column is
30 ## @var{c}. 30 ## @var{c}.
31 ## 31 ##
32 ## If @var{n} is specified, it determines the number of columns; otherwise, 32 ## If @var{n} is specified, it determines the number of columns; otherwise,
33 ## @var{n} is taken to be equal to the length of @var{c}. 33 ## @var{n} is taken to be equal to the length of @var{c}.
56 ## 56 ##
57 ## @end ifnottex 57 ## @end ifnottex
58 ## @seealso{polyfit} 58 ## @seealso{polyfit}
59 ## @end deftypefn 59 ## @end deftypefn
60 60
61 function retval = vander (c, n) 61 function V = vander (c, n)
62 62
63 if (nargin == 1) 63 if (nargin < 1)
64 n = length (c);
65 elseif (nargin != 2)
66 print_usage (); 64 print_usage ();
67 endif 65 endif
68 66
69 if (! isvector (c)) 67 if (! isvector (c))
70 error ("vander: polynomial C must be a vector"); 68 error ("vander: polynomial C must be a vector");
71 endif 69 endif
72 70
71 if (nargin == 1)
72 n = length (c);
73 elseif (! isscalar (n))
74 error ("vander: N must be a positive scalar integer");
75 endif
76
73 ## avoiding many ^s appears to be faster for n >= 100. 77 ## avoiding many ^s appears to be faster for n >= 100.
74 retval = zeros (length (c), n, class (c)); 78 V = zeros (numel (c), n, class (c));
79 c = c(:);
75 d = 1; 80 d = 1;
76 c = c(:);
77 for i = n:-1:1 81 for i = n:-1:1
78 retval(:,i) = d; 82 V(:,i) = d;
79 d .*= c; 83 d .*= c;
80 endfor 84 endfor
81 85
82 endfunction 86 endfunction
83 87
93 %!assert (vander ([1, 2, 3]*i), [-1, i, 1; -4, 2i, 1; -9, 3i, 1]) 97 %!assert (vander ([1, 2, 3]*i), [-1, i, 1; -4, 2i, 1; -9, 3i, 1])
94 98
95 %!assert (vander (2, 3), [4, 2, 1]) 99 %!assert (vander (2, 3), [4, 2, 1])
96 %!assert (vander ([2, 3], 3), [4, 2, 1; 9, 3, 1]) 100 %!assert (vander ([2, 3], 3), [4, 2, 1; 9, 3, 1])
97 101
102 ## Test input validation
98 %!error <Invalid call> vander () 103 %!error <Invalid call> vander ()
99 %!error <polynomial C must be a vector> vander ([1, 2; 3, 4]) 104 %!error <polynomial C must be a vector> vander ([1, 2; 3, 4])
105 %!error <N must be a positive scalar integer> vander (1, [1, 2])