Как предлагает @AnderBiguri, вы можете использовать опцию 'same'
в своей функции свертки, чтобы сохранить исходный размер вашего массива.
Но если вы применяете свертку с помощью своего нормализованного фильтра Гаусса gf
, выполучит эффект границы.
Чтобы избежать эффекта границы, вы можете применить следующие приемы:
gf = exp(-x .^ 2 / (2 * sigma ^ 2)); %do not normalize gf now
f_filter = conv(f,gf,'same')./conv(ones(length(f),1),gf,'same') %normalization taking into account the lenght of the convolution
Например, я только что преобразовал f
в f = f+3
Если мы не примем во внимание эффект границы, мы получим:
![enter image description here](https://i.stack.imgur.com/ia4B6.png)