Mercurial > octave-libtiff
comparison scripts/sparse/treelayout.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 | 397d29f7135c |
children |
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 {} {} treelayout (@var{tree}) | 27 ## @deftypefn {} {[@var{x}, @var{y}] =} treelayout (@var{tree}) |
28 ## @deftypefnx {} {} treelayout (@var{tree}, @var{permutation}) | 28 ## @deftypefnx {} {[@var{x}, @var{y}] =} treelayout (@var{tree}, @var{permutation}) |
29 ## @deftypefnx {} {[@var{x}, @var{y}, @var{h}, @var{s}] =} treelayout (@dots{}) | |
29 ## treelayout lays out a tree or a forest. | 30 ## treelayout lays out a tree or a forest. |
30 ## | 31 ## |
31 ## The first argument @var{tree} is a vector of predecessors. | 32 ## The first argument @var{tree} is a vector of predecessors. |
32 ## | 33 ## |
33 ## The parameter @var{permutation} is an optional postorder permutation. | 34 ## The optional parameter @var{permutation} is a postorder permutation. |
34 ## | 35 ## |
35 ## The complexity of the algorithm is O(n) in terms of time and memory | 36 ## The complexity of the algorithm is O(n) in terms of time and memory |
36 ## requirements. | 37 ## requirements. |
37 ## @seealso{etreeplot, gplot, treeplot} | 38 ## @seealso{etreeplot, gplot, treeplot} |
38 ## @end deftypefn | 39 ## @end deftypefn |
39 | 40 |
40 function [x_coordinate, y_coordinate, height, s] = ... | 41 function [x, y, h, s] = treelayout (tree, permutation) |
41 treelayout (tree, permutation) | |
42 | 42 |
43 if (nargin < 1) | 43 if (nargin < 1) |
44 print_usage (); | 44 print_usage (); |
45 elseif (! isvector (tree) || rows (tree) != 1 || ! isnumeric (tree) | 45 elseif (! isvector (tree) || rows (tree) != 1 || ! isnumeric (tree) |
46 || any (tree > length (tree)) || any (tree < 0)) | 46 || any (tree > length (tree)) || any (tree < 0)) |
160 top_level = 0; | 160 top_level = 0; |
161 endif | 161 endif |
162 ## If there is not any descendant of "parent node": | 162 ## If there is not any descendant of "parent node": |
163 if (stk(end,2) != par_number) | 163 if (stk(end,2) != par_number) |
164 left_most += 1; | 164 left_most += 1; |
165 x_coordinate_r(par_number) = left_most; | 165 x_r(par_number) = left_most; |
166 max_ht = min (max_ht, level); | 166 max_ht = min (max_ht, level); |
167 if (length (stk) > 1 && find ((circshift (stk,1) - stk) == 0) > 1 | 167 if (length (stk) > 1 && find ((circshift (stk,1) - stk) == 0) > 1 |
168 && stk(end,2) != stk(end-1,2)) | 168 && stk(end,2) != stk(end-1,2)) |
169 ## Return to the nearest branching the position to return | 169 ## Return to the nearest branching the position to return |
170 ## position is the position on the stack, where should be | 170 ## position is the position on the stack, where should be |
179 | 179 |
180 level += length (par_number_vec); | 180 level += length (par_number_vec); |
181 | 181 |
182 ## The level have to be decreased. | 182 ## The level have to be decreased. |
183 | 183 |
184 x_coordinate_r(par_number_vec) = left_most; | 184 x_r(par_number_vec) = left_most; |
185 stk(position:end,:) = []; | 185 stk(position:end,:) = []; |
186 endif | 186 endif |
187 | 187 |
188 ## Remove the next node from "searched branch". | 188 ## Remove the next node from "searched branch". |
189 | 189 |
190 stk(end,:) = []; | 190 stk(end,:) = []; |
191 ## Choose new "parent node". | 191 ## Choose new "parent node". |
192 par_number = stk(end,1); | 192 par_number = stk(end,1); |
193 ## If there is another branch start to search it. | 193 ## If there is another branch start to search it. |
194 if (par_number != -1) | 194 if (par_number != -1) |
195 y_coordinate(par_number) = level; | 195 y(par_number) = level; |
196 x_coordinate_l(par_number) = left_most + 1; | 196 x_l(par_number) = left_most + 1; |
197 endif | 197 endif |
198 else | 198 else |
199 | 199 |
200 ## There were descendants of "parent nod" choose the last of | 200 ## There were descendants of "parent nod" choose the last of |
201 ## them and go on through it. | 201 ## them and go on through it. |
202 level -= 1; | 202 level -= 1; |
203 par_number = stk(end,1); | 203 par_number = stk(end,1); |
204 y_coordinate(par_number) = level; | 204 y(par_number) = level; |
205 x_coordinate_l(par_number) = left_most + 1; | 205 x_l(par_number) = left_most + 1; |
206 endif | 206 endif |
207 endwhile | 207 endwhile |
208 | 208 |
209 ## Calculate the x coordinates (the known values are the position | 209 ## Calculate the x coordinates (the known values are the position |
210 ## of most left and most right descendants). | 210 ## of most left and most right descendants). |
211 x_coordinate = (x_coordinate_l + x_coordinate_r) / 2; | 211 x = (x_l + x_r) / 2; |
212 | 212 |
213 height = num_nodes - max_ht - 1; | 213 h = num_nodes - max_ht - 1; |
214 | 214 |
215 endfunction | 215 endfunction |
216 | 216 |
217 | 217 |
218 %!test | 218 %!test |