读书笔记(七)
这是第七部分稀疏矩阵操作 复制代码即可运行 %% 稀疏矩阵 n = 6 i = [2 6 3 4 4 5 6 1 1] j = [1 1 2 2 3 3 3 4 6] G = sparse(i,j,1,n,n) % i和j是稀疏矩阵中的位置 % 第三个参数是该位置上的数值 % 最后两个是确定稀疏矩阵的行列数 spy(G) %做稀疏矩阵的图
% 如果一个矩阵包含很多个零 % 将矩阵转换为稀疏存储可以节省内存 % 通过只存储不为零的数值 % 把一个完整的矩阵转换为稀疏的形式 %% 对稀疏矩阵的一些处理方法 p = 0.85; delta = (1-p)/n; c = sum(G,1); k = find(c~=0); D = sparse(k,k,1./c(k),n,n); e = ones(n,1);j I = speye(n,n); x = (I - p*G*D)\e; x = x/sum(x) %% 常规的运算方法 z = ((1-p)*(c~=0) + (c==0))/n; A = p*G*D + e*z; x = e/n; oldx = zeros(n,1); while norm(x - oldx) > .01 oldx = x; x = A*x; end x = x/sum(x) %% 稀疏运算方法 G = p*G*D; x = e/n; oldx = zeros(n,1); while norm(x - oldx) > .01 oldx = x; x = G*x + e*(z*x); end x = x/sum(x) %% 作图显示结果 bar(x) title('Page Rank')