您的位置:首页 > 编程语言 > MATLAB

matlab 生成 稀疏 对称正定 矩阵

2015-04-22 12:53 471 查看
参考 matlab 读写文件程序

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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: