我有以下矩阵
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 http://www.mathworks.com/help/techdoc/ref/mat2cell.html要将其分解为包含 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 http://www.mathworks.com/help/techdoc/ref/mat2cell.html定义如何沿行维度在单元格之间分解行。在本例中,单个值 42(即nRows
) 表示生成的元胞数组将包含一行,并且元胞将包含 42 行的矩阵。
第三个输入为MAT2CELL http://www.mathworks.com/help/techdoc/ref/mat2cell.html定义如何沿列维度在单元格之间分解列。在本例中,它是 61 个元素(即nCols/nSubCols
)行向量,其元素全部包含数字 24(即nSubCols
)。这表明生成的元胞数组将有 61 列,并且元胞将包含 24 列的矩阵。
最终结果是cellArray
最终成为一个 1×61 元胞数组,其中每个元胞包含一个 42×24 子矩阵mat
.
上面的工作时nCols
是的精确倍数nSubCols
。如果不是,那么您将必须以异构方式将列分配给单元格(即每个单元格的子矩阵中可能有不同数量的列)。处理这种情况的一些方法在这另一个问题 https://stackoverflow.com/questions/4550136/mat2cell-to-divide-matrix-of-size-mxn-into-10-submatrices.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)