sparse matrix demo for krylov subspace iterative methods
% Generate SPD for CG test
clear
clc
method = 'poisson';
switch method
case'poisson'
disp( 'Poisson Matrix');
Dim = 2;
Dim2 = Dim^2;
MatrixGen = gallery('poisson', Dim);
case'tridiag'
disp ('Tridiagonal matrix');
n = 4;
c = -1;
e = -1;
d = 4;
MatrixGen = gallery('tridiag', n, c, d, e);
case'wathen'
disp ('FEM Sparse Random Matrix');
nx = 2;
ny = 2;
MatrixGen = gallery('wathen', nx, ny);
end
totalNnz = nnz(MatrixGen);
nonzerosInRow = zeros(Dim2, 1);
for j = 1: Dim2
nonzerosInRow(j) = nnz(MatrixGen(:, j));
end
fid1 = fopen('matrix.dat', 'w');
P_full = full(MatrixGen);
for j= 1:Dim2
for i = 1:Dim2
if(P_full(i,j) ~= 0)
fprintf(fid1, '%d %d %f\n', i, j, P_full(i,j));
end
end
end
b = sprand(Dim2, 1, 0.9);
b_full = full(b);
fid2 = fopen('Bvector.dat', 'w');
for i=1:Dim2
fprintf(fid2, '%d\n', b_full(i,1));
end
assert( size(b_full,1) == size(MatrixGen,1));
fclose(fid1);
fclose(fid2);