• MATLAB中的稀疏矩阵和密集矩阵


    MATLAB中,矩阵可以表示为密集或稀疏格式。通常,矩阵默认以密集格式存储,这意味着每个元素都明确地存储在内存中,无论它的值是多少。然而,当矩阵含有大量的零元素时,这种存储方式就会变得非常低效。为了更有效地存储和操作这种矩阵,可以使用稀疏矩阵表示,其中只记录非零元素和它们的索引位置。

    创建稀疏矩阵

    在MATLAB中,可以使用sparse函数创建稀疏矩阵。当你有一个大型矩阵,特别是当大部分元素为零时,使用稀疏矩阵表示可以显著减少内存使用,并提高数值计算的速度。

    例如:

    X = 1:100 > 80;
    y = sparse(X);
    
    • 1
    • 2

    这里,X = 1:100 > 80; 生成一个逻辑行向量,其中元素值为true的地方对应于1:100中大于80的元素位置。然后,sparse(X)函数将这个向量转换成稀疏表示形式,仅存储非零元素。

    转换回密集矩阵

    可以使用full函数将稀疏矩阵转换成密集矩阵:

    k = full(y);
    
    • 1

    这里,full(y)函数取稀疏矩阵y作为输入,返回相应的密集矩阵k

    MATLAB实现

    演示代码

    为了展示以上过程,我们可以运行以下MATLAB代码:

    % 创建逻辑向量X,表示1到100中大于80的元素
    X = 1:100 > 80;
    
    % 将逻辑向量转换为稀疏矩阵y
    y = sparse(X);
    
    % 查看稀疏矩阵y
    disp(y);
    
    % 将稀疏矩阵y转换回密集矩阵k
    k = full(y);
    
    % 查看密集矩阵k
    disp(k);
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    输出

    执行上述代码,我们会得到以下输出:
    稀疏表示输出:
    在这里插入图片描述
    密集输出

    首先,打印稀疏矩阵y,它仅存储了非零元素的位置和值。接着,打印密集矩阵k,其中包含了相同的元素,但是以一个标准的密集数组形式。

    在MATLAB环境中,可以看到yk如何反映相同的数据,但以不同的方式存储。

    请注意,稀疏矩阵在处理具有大量零值元素的大型矩阵时尤其有用,例如在有限元分析或大型图结构中。使用稀疏矩阵可以显著提高内存利用率和计算速度。

    相关博文

    理解并实现OpenCV中的图像平滑技术

    OpenCV中的边缘检测技术及实现

    OpenCV识别人脸案例实战

    入门OpenCV:图像阈值处理

    我的图书

    下面两本书欢迎大家参考学习。

    OpenCV轻松入门

    李立宗,OpenCV轻松入门,电子工业出版社,2023
    本书基于面向 Python 的 OpenCV(OpenCV for Python),介绍了图像处理的方方面面。本书以 OpenCV 官方文档的知识脉络为主线,并对细节进行补充和说明。书中不仅介绍了 OpenCV 函数的使用方法,还介绍了函数实现的算法原理。

    在介绍 OpenCV 函数的使用方法时,提供了大量的程序示例,并以循序渐进的方式展开。首先,直观地展示函数在易于观察的小数组上的使用方法、处理过程、运行结果,方便读者更深入地理解函数的原理、使用方法、运行机制、处理结果。在此基础上,进一步介绍如何更好地使用函数处理图像。在介绍具体的算法原理时,本书尽量使用通俗易懂的语言和贴近生活的实例来说明问题,避免使用过多复杂抽象的公式。

    本书适合计算机视觉领域的初学者阅读,包括在校学生、教师、专业技术人员、图像处理爱好者。
    本书第1版出版后,深受广大读者朋友的喜爱,被很多高校选为教材,目前已经累计重印9次。为了更好地方便大家学习,对本书进行了修订。
    在这里插入图片描述

    计算机视觉40例

    李立宗,计算机视觉40例,电子工业出版社,2022
    近年来,我深耕计算机视觉领域的课程研发工作,在该领域尤其是OpenCV-Python方面积累了一点儿经验。因此,我经常会收到该领域相关知识点的咨询,内容涵盖图像处理的基础知识、OpenCV工具的使用、深度学习的具体应用等多个方面。为了更好地把所积累的知识以图文的形式分享给大家,我将该领域内的知识点进行了系统的整理,编写了本书。希望本书的内容能够对大家在计算机视觉方向的学习有所帮助。
    本书以OpenCV-Python(the Python API for OpenCV)为工具,以案例为载体,系统介绍了计算机视觉从入门到深度学习的相关知识点。
    本书从计算机视觉基础、经典案例、机器学习、深度学习、人脸识别应用等五个方面对计算机视觉的相关知识点做了全面、系统、深入的介绍。书中共介绍了40余个经典的计算机视觉案例,其中既有字符识别、信息加密、指纹识别、车牌识别、次品检测等计算机视觉的经典案例,也包含图像分类、目标检测、语义分割、实例分割、风格迁移、姿势识别等基于深度学习的计算机视觉案例,还包括表情识别、驾驶员疲劳监测、易容术、识别年龄和性别等针对人脸的应用案例。
    在介绍具体的算法原理时,本书尽量使用通俗易懂的语言和贴近生活的示例来说明问题,避免使用复杂抽象的公式来介绍。
    本书适合计算机视觉领域的初学者阅读,适于在校学生、教师、专业技术人员、图像处理爱好者使用。

    在这里插入图片描述

  • 相关阅读:
    【Vue】路由
    python 笔记:h5py 读取HDF5文件
    阿里P8专家爆出:入职阿里必备的598道java面试题,内含算法
    Python面试高频问题:self到底是什么
    ASP.NET Core 8 的内存占用可以更低吗?
    【ubuntu20.04安装MySQL以及MySQL-workbench可视化工具】
    ES6 入门教程 28 异步遍历器 28.4 异步 Generator 函数 & 28.5 yield星号 语句
    faster lio 回环 加入GTSAM优化的记录
    【多目标进化优化】 Pareto 最优解集的构造方法
    赋能心理大模型,景联文科技推出高质量心理大模型数据库
  • 原文地址:https://blog.csdn.net/superdont/article/details/136264135