Code covered by the BSD License

### Highlights from updownsample

4.75
4.8 | 8 ratings Rate this file 7 Downloads (last 30 days) File Size: 3.1 KB File ID: #4658 Version: 1.0

# updownsample

by

### Ohad Gal (view profile)

21 Mar 2004 (Updated )

up/down sample an input matrix using the fourier domain.

File Information
Description

Up/down sample an image/matrix/vector (can be of complex numbers) using the frequency domain.
The matrix/vector should be continuous of a high degree (has continuous derivatives) in order to obtain a reasonable up/down sampling

Speed-up can be achieved if the user up-samples to a near power of 2. no optimization is done inside this code for efficient fft usage.

Documentation is found inside the *.m file.

type "updownsample" for the example

Acknowledgements

Fft Upsample inspired this file.

MATLAB release MATLAB 6.1 (R12.1)
Tags for This File   Please login to tag files.
Comments and Ratings (11)
22 Jan 2015 psucale

### psucale (view profile)

correction:
working good, forgot my sampling theory...
n = 5
ts = 1/5
tvec = (0:(n-1))*ts
zMat = hann(n)*hann(n).'
zMatUp = updownsample( abs(zMat), 50, 50, 0, 2)
nUp = 50
tsUp = 1/50
tvecUp = (0:(nUp-1))*tsUp
subplot(121)
imagesc(tvec,tvec,abs(zMat))
subplot(122)
imagesc(tvecUp,tvecUp,abs(zMatUp))

21 Jan 2015 psucale

### psucale (view profile)

This code is "off by one" somewhere
If you run the following code you will see that the up sampled peak is in the wrong place.
I will figure this out and upload a fixed file.

zMat = hann(5)*hann(5).'
zMatUp = updownsample( abs(zMat), 50, 50, 0, 2)
subplot(121)
imagesc(abs(zMat))
subplot(122)
imagesc(abs(zMatUp))

Comment only
21 Sep 2014 Mikhail Konnik

### Mikhail Konnik (view profile)

@ David Felguera

Well, technically speaking the code is correct - in terms of what _exactly_ is it doing. The code claims to do downSAMPLING, which is just throwing away specified frequencies. Unlike the _decimation_, which uses the low-pass filtering to mitigate the downsampling effects (slower and more complicated).

The effect that you experiencing in this example is called ringing, and this exactly what happens in up/downsampling without filtering.

Comment only
21 Sep 2014 Mikhail Konnik

### Mikhail Konnik (view profile)

29 Sep 2010 Aravind Kumar

### Aravind Kumar (view profile)

The code works great ! Thanks.

31 Mar 2010 Sumedh Joshi

### Sumedh Joshi (view profile)

26 Nov 2009 Jong Rah

### Jong Rah (view profile)

14 Sep 2007 Jeroen Corthout
12 Jan 2005 David Felguera

Problems with circular convolutions ...

Just try:

in_m = ones(10,10);
in_m = [zeros(10,10);in_m;zeros(10,10)];
in_m = [in_m,zeros(30,10)];
figure(100);
imagesc(in_m);
out_x_sz = 320;
out_y_sz = 320;
out_m = updownsample( in_m,out_x_sz,out_y_sz,0,1);
figure(200);
imagesc(out_m);

I dont know exactly if its a circular convolution but it seems to. (could be some kind of aliasing too, when processing some kind of images)

10 Apr 2004 Ahmed Zakzouk

nice work

Comment only
09 Apr 2004 Aaron Clarke

Nice function. Works great.