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