Как извлечь все подматрицы большего - PullRequest
3 голосов
/ 20 сентября 2010

У меня есть матрица, которая говорит:

Q = [05 11 12 16 25;
     17 18 02 07 10;
     04 23 20 03 01;
     24 21 19 14 09;
     06 22 08 13 15]

Я бы хотел перечислить все возможные матрицы 3x3.Вот некоторые примеры:

11 12 16;
18  2  7;
23 20  3

и

 5 11 12;
17 18  2;
 4 23 20;

и т. Д. В основном все возможные матрицы 3 на 3.Как мне это сделать?Я должен использовать for цикл?

Ответы [ 2 ]

5 голосов
/ 20 сентября 2010

Если у вас есть Панель инструментов обработки изображений , вы можете использовать функцию IM2COL :

subMats = im2col(Q,[3 3]);

Каждый столбец subMats содержит элементыМатрица 3 на 3, извлеченная из Q.Каждый из этих столбцов может быть преобразован в матрицу 3 на 3 следующим образом:

Q1 = reshape(subMats(:,1),[3 3]);  %# Reshape column 1 into a 3-by-3 matrix
0 голосов
/ 20 сентября 2010

Я предполагаю, что это домашнее задание (если нет, пожалуйста, прости меня), так что вот несколько советов.

  • Нарисуйте структуру вашей матрицы 5x5.в верхнем левом углу и нарисуйте подматрицу 3x3 в пределах этого 5x5.Какие элементы охватываются этой матрицей?
  • Перейти в верхний правый угол.Какие элементы там покрыты?
  • Теперь идите в нижний левый угол.А что там?

Вы видите, как охватить все это?

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