MATLAB с использованием MAT2CELL - PullRequest
       18

MATLAB с использованием MAT2CELL

1 голос
/ 13 января 2011

у меня есть следующие матрицы

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, но я хотел бы разбить его на ячейки 42 на 24, используя mat2cell. Как я могу сделать это, каждый раз, когда я пытаюсь получить сообщение об ошибке ????

1 Ответ

3 голосов
/ 13 января 2011

Приведенные вами примеры матриц не имеют особого смысла, учитывая проблему, которую вы описываете в тексте. Если у вас есть матрица размером 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. Если это не так, то вам придется распределять столбцы по своим ячейкам гетерогенным образом (то есть каждая ячейка может иметь различное количество столбцов в своей подматрице). Некоторые способы справиться с такой ситуацией обсуждаются в этом другом вопросе SO .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...