# fftnconv

Below is a demonstration of the features of the fftnconv function

## Contents

```clear; close all; clc;
```

## Syntax

[MF]=fftnconv(M,F);

DEPRICATED

## Examples

Plot settings

```lineWidth=3;
```

## Example 1: 1D convolution

```n=50;
m=[ones(1,n) 2*ones(1,n)];

kernelSigma=3;

%Compose filter
f=gauss_kernel(numel(mp),1,kernelSigma,'sigma');

%FFT based convolution
mfp=fftnconv(mp,f);

%Crop back to original size
siz=size(mp);
mf=reshape(mfp(indOriginal),siz);
```

Visualization

```cFigure;
subplot(3,1,1); hold on;
title('Original');
plot(m,'r-','LineWidth',lineWidth);
axis tight; grid on; box on;

subplot(3,1,2); hold on;
title('filter');
plot(f,'g-','LineWidth',lineWidth);
axis tight; grid on; box on;

subplot(3,1,3); hold on;
title('filtered');
plot(mf,'b-','LineWidth',lineWidth);
axis tight; grid on; box on;

drawnow;
``` ## Example 2: 2D convolution

```n=50;
m=[ones(25,n) 2*ones(25,n)];

kernelSigma=3;

%Compose filter
k=[size(mp,1) size(mp,2)];

[y,x] = meshgrid(linspace(-((k(2)-1)/2),((k(2)-1)/2),k(2)),linspace(-((k(1)-1)/2),((k(1)-1)/2),k(1)));
f=exp(-(x.^2 + y.^2)./(2*kernelSigma^2));

%FFT based convolution
mfp=fftnconv(mp,f);

%Crop back to original size
mf=reshape(mfp(indOriginal),size(m));
```

Visualization

```cFigure;
subplot(3,1,1); hold on;
title('Original');
imagesc(m);
axis tight; axis equal;

subplot(3,1,2); hold on;
title('filter');
imagesc(f);
axis tight; axis equal;

subplot(3,1,3); hold on;
title('filtered');
imagesc(mf);
axis tight; axis equal;

drawnow;
```   GIBBON www.gibboncode.org

Kevin Mattheus Moerman, [email protected]

GIBBON footer text

GIBBON: The Geometry and Image-based Bioengineering add-On. A toolbox for image segmentation, image-based modeling, meshing, and finite element analysis.

Copyright (C) 2006-2023 Kevin Mattheus Moerman and the GIBBON contributors

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.