zoukankan      html  css  js  c++  java
  • 【Matlab】sparse函数和full函数(稀疏矩阵和非稀疏矩阵转换)

    函数功能:生成稀疏矩阵

    使用方法 :
    S = sparse(A)
    将矩阵A转化为稀疏矩阵形式,即矩阵A中任何0元素被去除,非零元素及其下标组成矩阵S。
    如果A本身是稀疏的,sparse(S)返回S。
    S = sparse(i,j,s,m,n,nzmax)
    由向量i,j,s生成一个m*n的含有nzmax个非零元素的稀疏矩阵S,并且有 S(i(k),j(k)) = s(k)。
    向量 i,j 和 s 有相同的长度。对应对向量i和j的值,s 中任何零元素将被忽略。 book.iLoveMatlab.cn
    s 中在 i 和 j 处的重复值将被叠加。
    注意:如果i或j任意一个大于最大整数值范围,2^31-1, 稀疏矩阵不能被创建。

    S = sparse(i,j,s,m,n)
    用 nzmax = length(s)
    S = sparse(i,j,s)
    使m = max(i) 和 n = max(j),在s中零元素被移除前计算最大值,[i j s]中其中一行可能为[m n 0]。
    S = sparse(m,n)
    sparse([],[],[],m,n,0)的缩写,生成一个m*n的所有元素都是0的稀疏矩阵。


    备注:
    MATLAB中所有内置的算术,逻辑和索引操作都可以应用到稀疏矩阵或混合于稀疏和全矩阵上。
    稀疏矩阵的操作返回稀疏矩阵,全矩阵的操作返回权矩阵。
    在大多数情况下,稀疏和全矩阵的混合操作返回全矩阵,例外的一种情况是混合操作的结果在结构上稀疏,例如,A.*S至少和矩阵S一样稀疏。

    应用举例:
    S = sparse(1:n,1:n,1) 生成一个n*n的单位稀疏矩阵,和S = sparse(eye(n,n))有相同的结果,但是如果它的元素大部分是零元素的情况下也会暂时性的生成n*n的全矩阵。 book.iLoveMatlab.cn

    B = sparse(10000,10000,pi) 可能不是非常有用的,但是它是能运行和允许的,它生成一个10000*10000的仅仅包含一个非零原色的矩阵,不要用full(B),因为这需要800兆储存单元。

    分析和重组一个稀疏矩阵:
    [i,j,s] = find(S);
    [m,n] = size(S);
    S = sparse(i,j,s,m,n);

    如果最后一行和最后一列是非零项,有下面:
    [i,j,s] = find(S);
    S = sparse(i,j,s);

  • 相关阅读:
    vue导入excel表格
    正则表达式:输入六位数或六位数以下的正整数。
    iview下拉框支持多选
    vue通过jquery方式获取元素
    获取对象属性
    原生JS获取元素,添加事件
    打印当前页面,关闭当前页面
    Andrew Ng 机器学习公开课
    机器学习4《朴素贝叶斯》
    机器学习3《数据集与k-近邻算法》
  • 原文地址:https://www.cnblogs.com/xianghang123/p/2277628.html
Copyright © 2011-2022 走看看