我有以下矩阵
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乘1464的矩阵,但我想使用mat2cell将其分解为42乘24的单元格。 我怎么能请它,每次我尝试我得到一个错误????
答案 0 :(得分:3)
鉴于您在文本中描述的问题,您提供的示例矩阵没有多大意义。如果您有一个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的单元阵列,其中每个单元格包含一个42乘24的mat
子矩阵。
如果nCols
是nSubCols
的精确倍数,则上述方法有效。如果不是,则必须以异构方式将列分发到您的单元格(即,每个单元格的子矩阵中可能具有不同数量的列)。 this other SO question中讨论了处理这种情况的一些方法。