Mercurial > octave-antonio
comparison scripts/special-matrix/gallery.m @ 20170:af2b7695f1c4 draft default tip @
gallery.m: clean and vectorize part of qmult.
* scripts/special-matrix/gallery.m: make qmult() follow Octave guidelines, vectorize last for loop in qmult().
author | Antonio Pino Robles <data.script93@gmail.com> |
---|---|
date | Thu, 28 May 2015 18:32:47 +0200 |
parents | 6f8c572f27fe |
children |
comparison
equal
deleted
inserted
replaced
20169:6f8c572f27fe | 20170:af2b7695f1c4 |
---|---|
2013 | 2013 |
2014 if (nargin < 1 || nargin > 2) | 2014 if (nargin < 1 || nargin > 2) |
2015 error ("gallery: 1 to 2 arguments are required for pei matrix."); | 2015 error ("gallery: 1 to 2 arguments are required for pei matrix."); |
2016 elseif (! isnumeric (n) || ! isscalar (n) || fix (n) != n) | 2016 elseif (! isnumeric (n) || ! isscalar (n) || fix (n) != n) |
2017 error ("gallery: N must be an integer for pei matrix."); | 2017 error ("gallery: N must be an integer for pei matrix."); |
2018 elseif (! isnumeric (alpha) || ! isscalar (alpha)) # change w to alpha | 2018 elseif (! isnumeric (alpha) || ! isscalar (alpha)) |
2019 error ("gallery: ALPHA must be a scalar for pei matrix."); | 2019 error ("gallery: ALPHA must be a scalar for pei matrix."); |
2020 endif | 2020 endif |
2021 | 2021 |
2022 P = alpha * eye (n) + ones (n); | 2022 P = alpha * eye (n) + ones (n); |
2023 endfunction | 2023 endfunction |
2874 [n, m] = size (A); | 2874 [n, m] = size (A); |
2875 | 2875 |
2876 # Handle scalar A. | 2876 # Handle scalar A. |
2877 if (max (n,m) == 1) | 2877 if (max (n,m) == 1) |
2878 n = A; | 2878 n = A; |
2879 A = eye(n); | 2879 A = eye (n); |
2880 endif | 2880 endif |
2881 | 2881 |
2882 d = zeros (n); | 2882 d = zeros (n); |
2883 | 2883 |
2884 for k = n-1:-1:1 | 2884 for k = n-1:-1:1 |
2894 y = x' * A(k:n,:); | 2894 y = x' * A(k:n,:); |
2895 A(k:n,:) = A(k:n,:) - x * (y/beta); | 2895 A(k:n,:) = A(k:n,:) - x * (y/beta); |
2896 endfor | 2896 endfor |
2897 | 2897 |
2898 # Tidy up signs. | 2898 # Tidy up signs. |
2899 for i=1:n-1 | 2899 A = [d'; sign(randn)] .* A; |
2900 A(i,:) = d(i) * A(i,:); | |
2901 endfor | |
2902 A(n,:) = A(n,:) * sign (randn); | |
2903 B = A; | 2900 B = A; |
2904 endfunction | 2901 endfunction |
2905 | 2902 |
2906 | 2903 |
2907 | 2904 |