# HG changeset patch # User Carnë Draug # Date 1491832825 -3600 # Node ID e15ffa2b22620215c260c5cbb63690d858a4c55e # Parent c319e6d737f266fc1a0bd5e654eb6a58b9448d73 gallery: use broadcasting to generate cauchy and fiedler matrices diff -r c319e6d737f2 -r e15ffa2b2262 scripts/special-matrix/gallery.m --- a/scripts/special-matrix/gallery.m Mon Apr 10 07:02:42 2017 +0200 +++ b/scripts/special-matrix/gallery.m Mon Apr 10 15:00:25 2017 +0100 @@ -555,8 +555,7 @@ error ("gallery: X and Y must be vectors of same length for cauchy matrix."); endif - C = x * ones (1, n) + ones (n, 1) * y.'; - C = ones (n) ./ C; + C = 1 ./ (x .+ y.'); endfunction function C = chebspec (n, k = 0) @@ -1097,8 +1096,7 @@ endif c = c(:).'; # Ensure c is a row vector. - A = ones (n, 1) * c; - A = abs (A - A.'); # NB. array transpose. + A = abs (c - c.'); endfunction function A = forsythe (n, alpha = sqrt (eps), lambda = 0) @@ -2918,8 +2916,43 @@ %!assert (gallery ("minij", 0), []) %!assert (gallery ("minij", -1), []) -%!assert (size (gallery ("cauchy", 5)), [5 5]) -%!assert (size (gallery ("cauchy", 2:5, 5:8)), [4 4]) +%!test +%! exp = 1 ./ [ +%! 2 3 4 5 6 +%! 3 4 5 6 7 +%! 4 5 6 7 8 +%! 5 6 7 8 9 +%! 6 7 8 9 10]; +%! assert (gallery ("cauchy", 5), exp) +%! assert (gallery ("cauchy", 1:5), exp) +%! assert (gallery ("cauchy", 1:5, 1:5), exp) +%! +%! exp = 1 ./ [ +%! 1 2 3 4 5 +%! 2 3 4 5 6 +%! 3 4 5 6 7 +%! 4 5 6 7 8 +%! 5 6 7 8 9]; +%! assert (gallery ("cauchy", 0:4, 1:5), exp) +%! assert (gallery ("cauchy", 1:5, 0:4), exp) +%! assert (gallery ("cauchy", 1:5, 4:-1:0), fliplr (exp)) +%! +%! exp = 1 ./ [ +%! -1 0 1 2 3 +%! 0 1 2 3 4 +%! 1 2 3 4 5 +%! 2 3 4 5 6 +%! 3 4 5 6 7]; +%! assert (gallery ("cauchy", 1:5, -2:2), exp) +%! +%! exp = 1 ./ [ +%! 8 18 -4 2 +%! 13 23 1 7 +%! 9 19 -3 3 +%! 15 25 3 9]; +%! assert (gallery ("cauchy", [-2 3 -1 5], [10 20 -2 4]), exp) +%! assert (gallery ("cauchy", [-2 3 -1 5], [10 20 -2 4]'), exp) +%! assert (gallery ("cauchy", [-2 3 -1 5]', [10 20 -2 4]), exp) %!assert (size (gallery ("chebspec", 5)), [5 5]) %!assert (size (gallery ("chebspec", 5, 1)), [5 5]) @@ -2959,8 +2992,17 @@ %!assert (size (gallery ("dramadah", 5)), [5 5]) %!assert (size (gallery ("dramadah", 5, 2)), [5 5]) -%!assert (size (gallery ("fiedler", 5)), [5 5]) -%!assert (size (gallery ("fiedler", 2:5)), [4 4]) +%!test +%! exp = [ +%! 0 1 2 3 4 +%! 1 0 1 2 3 +%! 2 1 0 1 2 +%! 3 2 1 0 1 +%! 4 3 2 1 0]; +%! assert (gallery ("fiedler", 5), exp) +%! assert (gallery ("fiedler", 1:5), exp) +%! assert (gallery ("fiedler", -2:2), exp) +%! assert (gallery ("fiedler", 2:4), exp(1:4,1:4)) %!assert (size (gallery ("forsythe", 5)), [5 5]) %!assert (size (gallery ("forsythe", 5, 1, 0.5)), [5 5])