使用 MAT2CELL 的 MATLAB

标签 matlab matrix

我有以下矩阵

letter=[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z ...
        a b c d e f g h ii jj k l m o p q r s t u v w x y z];

number=[one two three four five six seven eight nine zero];

character =[number letter];

字符变成 42 x 1464 的矩阵,但我想使用 mat2cell 将其分解为 42 x 24 的单元格。 我该怎么办,每次我尝试都会出错???

最佳答案

考虑到您在文中描述的问题,您给出的示例矩阵没有多大意义。如果您有一个大小为 42×1464 的矩阵,并且您想使用 MAT2CELL要将其分解为包含 42×24 元素的元胞数组,您可以执行以下操作:

mat = repmat('a',42,1464);  %# A sample character matrix containing all 'a's
[nRows nCols] = size(mat);  %# Get the number of rows and columns in mat
nSubCols = 24;              %# The number of desired columns in each submatrix
cellArray = mat2cell(mat,nRows,nSubCols.*ones(1,nCols/nSubCols));

第二个输入MAT2CELL定义如何沿行维度在单元格之间分解行。在本例中,单个值 42(即 nRows)表示生成的元胞数组将具有一行,并且元胞将包含 42 行的矩阵。

第三个输入MAT2CELL定义如何沿列维度在单元格之间分解列。在本例中,它是一个 61 个元素(即 nCols/nSubCols)的行向量,其元素全部包含数字 24(即 nSubCols)。这表明生成的元胞数组将有 61 列,并且元胞将包含 24 列的矩阵。

最终结果是 cellArray 最终成为一个 1×61 元胞数组,其中每个元胞包含一个 mat 的 42×24 子矩阵。

nColsnSubCols 的精确倍数时,上述方法有效。如果不是,那么您将必须以异构方式将列分配给单元格(即每个单元格的子矩阵中可能有不同数量的列)。 this other SO question中讨论了处理这种情况的一些方法。 .

关于使用 MAT2CELL 的 MATLAB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4682927/

相关文章:

matlab - 如何使模数和逻辑索引工作得更快?

matlab - MATLAB hough 和我的实现之间的区别

matlab - Matlab 中的并行处理

matlab - 如何在 Matlab 绘图中显示较浅边缘的深色边缘?

GLSL 中的矩阵转换被无限拉伸(stretch)

java - 高效获取Java 2D数组的row.max和row.sum

matlab - matlab中从文本文件读取函数

dataframe - 如何在 Julia Dataframes 中创建关联矩阵

c++ - 比较 bool 矩阵

c++ - Eigen 和 glm 产品产生不同的结果