Создайте простое 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
, более подробные коды будут высоко оценены.