Matlab小技巧 | 您所在的位置:网站首页 › 怎么将数据分成若干组 › Matlab小技巧 |
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 实验室设备网 版权所有 |