Можно ли отобразить все подматрицы, каждая из которых представлена ​​переменной в matlab?

Есть ли встроенная функция для отображения всех подматриц из матрицы в Matlab? Для отображения одной подматрицы у нас есть функция x(:,m:n). Например: рассмотрим матрицу 4 x 4

   A = 14    11    16    16
       15     2    16     8
        3     5     3    13
       15     9    16     3

Если размер всех подматриц равен 1 x 2, как отобразить все подматрицы, присутствующие в A? Также, как представить каждую подматрицу переменной (например, a1,a2..etc)

   a{1}=[14 11]
   a{2}=[16 16]
   .
   .
   a{8}=[16 3] 

Как отобразить все подматрицы в виде массива ячеек? пожалуйста помоги. заранее спасибо

2 ответа

  1. Преобразуйте матрицу в линейный массив
  2. Измените линейный массив в любой формат, который вы хотите, который в этом случае 2 x матрица, так что каждая строка представляет собой одну подматрицу.

    reshape(reshape(A', numel(A), 1), 2, numel(A)/2)'
    

Если вы хотите преобразовать результаты в ячейки, вы можете использовать команду mat2cell(),

Вы можете использовать команду mat2cell, чтобы разделить исходную матрицу по желанию, а затем cell2mat, чтобы снова получить результат в виде (под) матрицы. В вашем конкретном примере, используя тот же matix A, что и выше, вы можете использовать его следующим образом:

B = mat2cell(A,[1 1 1 1],[2 2])

cell2mat(B(1,1))
ans =

   14   11

cell2mat(B(1,2))
ans =

   16   16

cell2mat(B(4,2))
ans =

   16    3
Другие вопросы по тегам