zoukankan      html  css  js  c++  java
  • matlab学习(1)——sparse函数和full函数处理稀疏矩阵

    sparse函数和full函数

    稀疏矩阵与非稀疏矩阵的转换

    矩阵中非零元素的个数远远小于矩阵元素的总数),并且非零元素的分布没有规律,则称该矩阵为稀疏矩阵(sparse matrix)。

    二维数组Amn中有N个非零元素,若N<<m*n(N/m*n<=0.2),则称A为稀疏矩阵。
     
    函数功能:生成稀疏矩阵
    使用方法 : S = sparse(A)
    一般意义上的稀疏矩阵,就是看起来很松散的,也就是说,在这个矩阵中,绝大多数元素是零元素。例如:
    0, 0, 0, 0;
    0, 0, 1, 0;
    0, 0, 0, 0;
    0, 1, 0, 2;
    计算机存储稀疏矩阵可以有两种思路:
    1.按照存储一个普通矩阵一样存储一个稀疏矩阵,比如上面这个稀疏矩阵中总共十六个元素(三个非零元素),把这些元素全部放入存储空间中。这种存储方式,在matlab就叫做full storage organization。
    2.只存储非零元素,那么怎么存储呢?
    (4,2)        1
    (2,3)        1
    (4,4)        2
    看出来了吧, 只存储非零元素在稀疏矩阵中的位置和值。比如,上面所举的这个例子,值为2的项在第4行第4列,那么我们就只需要存储这一非零项在稀疏矩阵中的“坐标”(4,4)和这一非零项的值2。在MATLAB中,这种存储方式就叫做sparse storage organization。虽然,这样要多存储一组坐标,但如果稀疏矩阵中非零元素非常少,以这种存储方式存储稀疏矩阵反而节省了内存空间。
     
    sparse函数的功能就是把以第一种存储形式存储的稀疏矩阵转换成第二种形式存储。对应的函数为full,即把以第二种方式存储的稀疏矩阵转换成第一种方式存储。
    在MATLAB中,存储一个稀疏矩阵有两种方法。
     
    S = sparse(A)
    将矩阵A转化为稀少矩阵情势,即矩阵A中任何0元素被去除,非零元素及其下标构成矩阵S。
    若是A本身是稀少的,sparse(S)返回S。
    程序示例
    >> A = [0, 0, 0, 0;
    0, 0, 1, 0;
    0, 0, 0, 0;
    0, 1, 0, 2];
    >> sparse(A)
    ans =
    (4,2)        1
    (2,3)        1
    (4,4)        2
     
    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, 稀少矩阵不克不及被创建。

    我抬头仰望星空不是为了摘取流星,而是为了一个永不屈服的梦想。
  • 相关阅读:
    Qt 智能指针学习(7种指针)
    Springmvc+Spring+Hibernate搭建方法
    DDD分层架构之领域实体(基础篇)
    LeetCode
    RabbitMQ
    Cocos2d-x环境搭建
    使用快捷键提升C#开发效率
    C# 6.0
    avalonjs 1.3.7发布
    VS2015安装
  • 原文地址:https://www.cnblogs.com/happycaoyue/p/3020702.html
Copyright © 2011-2022 走看看