Matlab小技巧—mat2cell对大矩阵分成若干块-程序员宅基地

技术标签: matlab  Matlab小技巧  

Matlab小技巧—mat2cell对大矩阵分成若干块

目的

我写这篇文章的目的就是为了能够将大矩阵简单的分为若干块,例如500x500的矩阵,分成100x100个5x5的分块矩阵。文档上只写了通过dim1Dist = [5,5,5,...,5,5]对矩阵进行划分,但是我们不能直接写100个5,那样太麻烦了,我们这里有一个小技巧能够简单的进行划分。

mat2cell函数

我们先介绍一下mat2cell函数的用法:
mat2cell是将数组转化为在元胞中包含子数组的元胞数组,其中包括两种语法的用法

C = mat2cell(A,dim1Dist,...,dimNDist)
C = mat2cell(A,rowDist)
  • 第一种语法C = mat2cell(A,rowDist)

其中rowDist指的是行分布,描述输入数组行分布情况的向量,指定为数值向量。当您未指定如何沿其他任何维度划分 A 时,mat2cell 函数将返回一个 n×1 元胞数组 C,其中 n 等于 rowDist 中的元素数。
rowDist 的每个元素指定 C 中对应元胞所含子数组的行数。rowDist 的元素总和必须等于 A 的行数。

A = reshape(1:20,5,4)'
A = 4×5

     1     2     3     4     5
     6     7     8     9    10
    11    12    13    14    15
    16    17    18    19    20

划分 A 的行,以使元胞数组包含两个子数组。rowDist 的元素总和等于 A 的行数。划分后的结果为:

C{
    1} =
 
     1     2     3     4     5

 
 
C{
    2} =
 
     6     7     8     9    10
    11    12    13    14    15
    16    17    18    19    20
  • 第二种语法C = mat2cell(A,dim1Dist,...,dimNDist)

其中dim1Dist是将大矩阵分成块的尺寸,每一块的尺寸和需要和大矩阵的尺寸相同,例如:大矩阵是9x9的矩阵,分块的大小是3x3的,
在这里插入图片描述
那么

dim1Dist = [3 3 3]
C = mat2cell(A,dim1Dist,dim1Dist)

这样我们就将原先的矩阵分成了3x3的9个分块。
但是如果矩阵过大,是个500x500的矩阵,我们如何避免写一个dim1Dist = [5,5,5,...,5,5]而对矩阵进行分块处理。

  • 小技巧

这里我们有一个小技巧,我们的dim1Dist = ones(1, 100)*5, 其中,ones(1, 100)是生成一个1x100的全为1的矩阵,5为我们需要分成的块的尺寸,这样,C = mat2cell(A,dim1Dist,dim1Dist) 就能直接把500x500的矩阵分成100x100个5x5的块。

如果看到了这里,对你有所帮助,能否动动你的小手指,点个赞呢~

参考文献
https://ww2.mathworks.cn/help/matlab/ref/mat2cell.html?searchHighlight=mat2cell&s_tid=doc_srchtitle

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_43852752/article/details/104194720

智能推荐

ITK/VTK对DICOM文件的读取_sitk读取mnc文件-程序员宅基地

文章浏览阅读6.6k次。在ITK中,对dicom的读取使用的是GDCM库,而在VTK库中使用的是直接是DicomFileReader库。在ITK中,读取DICOM文件的程序示例如下:_sitk读取mnc文件

求二维数组a[3][4]中的最大数和最小数_在二维数组中查找最大值和最小值并输出-程序员宅基地

文章浏览阅读2.2k次。求二维数组a[3][4]中的最大数和最小数#include<stdio.h>void main(){ int a[3][4],i,j,max,min; //输入 for(i=0;i<3;i++){ for(j=0;j<4;j++){ scanf("%d",&a[i][j]); } } //找最大数、最小数 min=a[0][0]; max=a[0][0]; for(i=0;i<3;i++){ for(j=0;j<4;j++){_在二维数组中查找最大值和最小值并输出

JUC锁——共享锁和可重入读写锁_共享锁 支持重入吗-程序员宅基地

文章浏览阅读452次。概要  JUC中的共享锁有CountDownLatch、CyclicBarrier、Semaphore、ReentrantReadWriteLock等,本章会以ReentrantReadWriteLock为蓝本对共享锁进行说明。ReadWriteLock 和 ReentrantReadWriteLock介绍  ReadWriteLock,顾名思义,是读写锁。它维护了一对相关的锁——“读取锁”..._共享锁 支持重入吗

Android内核开发:为什么刷机后系统第一次启动会很慢?_手机刷机完后开机慢-程序员宅基地

文章浏览阅读218次。转载自http://blog.51cto.com/ticktick/1677216 在做Android内核开发的过程中,我们会发现,每次编译完系统源码,烧录到设备/手机中后,第一次启动都会很慢很慢,要好几分钟甚至十几分钟,为什么会出现这样的现象呢?系统刷机后第一次启动与后面再次启动有什么不同呢?要解答这个问题,首先我们需要了解一下Android Dalvik虚拟机,以及Dalvik-cache。..._手机刷机完后开机慢

数据验证技术的应用场景:如何实现区块链网络的可扩展性-程序员宅基地

文章浏览阅读995次,点赞23次,收藏24次。1.背景介绍区块链技术作为一种去中心化的分布式账本,具有很高的潜力。然而,随着区块链网络的扩展和应用,一些挑战也随之而来。其中,可扩展性是一个非常重要的问题。数据验证技术在这方面发挥着关键作用。本文将从以下几个方面进行探讨:背景介绍核心概念与联系核心算法原理和具体操作步骤以及数学模型公式详细讲解具体代码实例和详细解释说明未来发展趋势与挑战附录常见问题与解答1.背景介绍..._区块链可扩展性问题

迁移学习在图像生成与修复中的应用-程序员宅基地

文章浏览阅读873次,点赞11次,收藏5次。1.背景介绍图像生成和修复是计算机视觉领域的重要研究方向,它们在人工智能、计算机视觉和图像处理等领域具有广泛的应用。图像生成涉及到通过某种算法或模型生成新的图像,而图像修复则涉及到通过某种方法修复损坏或缺失的图像。迁移学习是一种深度学习技术,它可以帮助我们在有限的数据集上训练更好的模型,并在新的任务上获得更好的性能。在这篇文章中,我们将讨论迁移学习在图像生成和修复中的应用,以及其核心概念、算法...

随便推点

javascript将canvas的ImageData转Image和DataURL_js getimagedata 转为 image-程序员宅基地

文章浏览阅读490次。【代码】javascript将canvas的ImageData转Image和DataURL。_js getimagedata 转为 image

Visual Studio 2022 从下载安装到如何使用的全面讲解 (图文详解)_vs2022-程序员宅基地

文章浏览阅读1.7k次,点赞44次,收藏49次。Visual Studio 2022做为一款集成开发软件是一款非常好用的代码开发软件,而且可调试让我们快速找到错误!和理解代码出了那些问题!可以说是初学者的必备利器!_vs2022

如何复制word的图文到TinyMCE中自动上传_tinymce复制上传word文档-程序员宅基地

文章浏览阅读203次。这种方法是servlet,编写好在web.xml里配置servlet-class和servlet-mapping即可使用后台(服务端)java服务代码:(上传至ROOT/lqxcPics文件夹下)<%@pagelanguage="java"import="java.util.*"pageEncoding="utf-8"%><%@pagecontentType="text/html;charset=utf-8"%><%@pageim..._tinymce复制上传word文档

jBPM4.2 安装到tomcat 和 mysql上的步骤。并且创建一个最简单的应用-程序员宅基地

文章浏览阅读2.4k次。1.前提条件已经安装好 jdk1.6,并且配置好已经下载好jbpm4.2,并且解压。已经安装好tomcat6已经安装好 mysql5.1已经安装好 ant1.7已经安装好 eclipse-jee-galileo-win32 2.设置ant的环境变量 ANT_HOME=D:/Program Files/Apa_jbpm4.2

keepalived简易安装及配置文件详解_dynamic_interfaces allow_if_changes-程序员宅基地

文章浏览阅读2k次。设置主机名称[root@localhost keepalived]# hostnamectl set-hostname node1[root@localhost keepalived]# hostnamenode1[root@localhost data]# hostnamectl set-hostname node2[root@localhost data]# hostnamenode2keepalived源码版本[root@node2 ~]# ll /data/keepalive._dynamic_interfaces allow_if_changes

高速电机的特性及工作原理(深度总结)_高速电机原理图-程序员宅基地

文章浏览阅读1.4w次,点赞3次,收藏18次。高速电机的命名定义:高速电机,也称主轴电机,广义范围来讲,高速电机又可以被称为电主轴,高速电主轴等等,通常是指转速超过10000r/min的电机,目前最高转速可达300000r/min高速电机又分为:AC交流异步电机 、DC同步永磁电机、BLDC无刷电机、bldc变频电机等高速电机优点:一、由于转速高,所以电机功率密度高,而体积远小于同等功率的普通电机,可以有效的节约材料;二、..._高速电机原理图

推荐文章

热门文章

相关标签