Matlab小技巧 您所在的位置:网站首页 怎么将数据分成若干组 Matlab小技巧

Matlab小技巧

2024-06-03 15:19| 来源: 网络整理| 查看: 265

Matlab小技巧—mat2cell对大矩阵分成若干块 目的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



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有