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

一个简单的MATLAB读写文本文件程序--稀疏矩阵向量乘法

2010-11-06 16:09 701 查看
%矩阵向量乘,写入文件
%双重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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐