登 录
%矩阵向量乘,写入文件 %双重for循环处,运行了很久,还需要改进,请多关照 clear clc n=150000;%矩阵的维数 a = sprand(n, n, 0.0001);%产生一个稀疏矩阵 fid1 = fopen('matrix.mtx', 'w');%要写入的矩阵文件 fid2 = fopen('matrix_b.mtx', 'w');%向量文件 disp('1') len = nnz(a);%稀疏矩阵中非零元个数 disp('2') fprintf(fid1, '%d %d %d/n', n, n, len);%行、列、非零元个数 disp('3') for j = 1:n for i = 1:n if a(i,j) ~= 0 fprintf(fid1, '%d %d %f/n', i, j, a(i,j));%三元组形式写入文件 end end end disp('4') fprintf(fid2, '%d/n', n); b = sprand(n, 1, 0.9);%产生一个稀疏向量 disp('6') for i = 1:n fprintf(fid2, '%d/n', b(i,1));%写入向量 end disp('5') s = a *b; full_s = full(s);%将结果转换成全矩阵 save s.txt full_s -ascii %保存矩阵向量乘的结果 fclose(fid1); fclose(fid2);
抱歉!评论已关闭.