Создайте простое 2D скользящее окно на матрице 6 на 6

Фон:

У меня есть матрица 6 на 6. Мне нужно обновить значения между точками сетки, сдвинув окно 3 на 3 в соответствии с этими шагами:

введите описание изображения здесь

(1) Первое раздвижное окно: лечить x8 как центр, и у меня есть w1 = {x1, x2, x3, x7, x8, x9, x13, x14, x15},

(2) Значения этих 9 точек обновляются путем добавления 1 к каждой точке сетки.

(3) Перейти к следующему окну: лечить x9 как центр, и у меня есть w2 = {x2, x3, x4, x8, x9, x10, x14, x15, x16}, Значения этих точек сетки обновляются снова, добавляя 1 к каждому из них. Обратите внимание, что я использую исходные значения x2, x8 and x14 вместо обновленных значений в шаге 2.

(4) Процесс продолжается, и у меня будет 16 окон / наборов 9-точечных данных.


Моя проблема в том, что:

(5) Некоторые пересекающиеся точки, говорит, x8 перекрывается 4 окнами. Тогда я хочу забрать x8 из 4 окон и сложите их вместе, затем разделите на 4 (усреднение).

(6) Некоторые пересекающиеся точки, говорит, x15 действительно перекрывается 9 окнами. Опять же, я хотел бы получить среднее значение среди этих 9 значений x15,

(7) После этих обновлений я хотел бы иметь обновленную матрицу 6 на 6 для сохранения результата.


Моя мысль:

(1) Примените "добавление одного" в каждом окне, w1, w2, ..., w16,

(2) Подберите общие значения среди окон:

если x8 пересекается 4 раза, добавьте те x8 и делится на 4;

если x15 пересекается 9 раз, добавить те x15 и делится на 9.


Нужна помощь:

Я хочу написать свой код в Matlab. Итак, я планирую использовать ismember извлечь общие значения среди окон, но кажется, что ismember не может иметь несколько входов. Могу ли я узнать, есть ли какие-либо аккуратные способы в matlab достичь этой цели?

Так как я новичок в matlab, более подробные коды будут высоко оценены.

0 ответов

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