Matlab Reverb and Image Smoothing Functions

Recently, I enrolled in a class on Digital Signals and Systems. One of our first homework assignments was to implement a reverb filter and image smoother in Matlab. I’m not a Matlab expert, but I thought someone else might like to see what I did. Please suggest improvements!

function [ y ] = reverb( Fs, D, Attenuation, x )
%REVERB (Fs, D, Attenuation, x) 
%   Applies reverb to the given sound file
%   Fs - Sample Rate
%   D - Delay in milliseconds
%   Attenuation - Attenuation factor
%   x - WAV file as a column vector

    % Convert delay to samples
    D = round(Fs * D / 1000);

    % Generate the b array (corresponds to X coeffecients)
    b = [1 zeros(1,D+1)];

    % Generate the a array (corresponds to Y coeffecients)
    a = [1 zeros(1,D-1) Attenuation];

    % Apply the filter
    y = filter(b, a, x);
end

The image smoothing function is as follows

 

function [ y ] = imagesmooth( filename, N )
%IMAGESMOOTH Smooths the given image with an NxN matrix
%   filename - The image file to use
%   N - The size of the smoothing matrix
    image = imread(filename);
    h = ones(N) / (N*N);
    newimage = filter2(h,image);
    y = uint8(newimage);
end

 

Basically, a reverb and an image smoother are types of difference equations. This is one of the things I’m learning about in my signals class. Essentially, what is happening is every sample y[N] of the output is calculated from an input sample, x[N], along with other past samples from either the input or the output. In the case of the reverb, x[N] is combined with y[N-D] to compute y[N]. For the image smoother, y[N,M] is a function of x[N,M] and all the surrounding samples, x[N-1,M-1], x[N-1,M]], x[N-1,M+1], x[N,M-1], x[N,M], x[N,M+1], x[N+1,M-1], x[N+1,M], and x[N+1,M+1].

About samkerr

I'm an eclectic person. I like to dabble in a multitude of things. I'm sure you'll find my blog reflects that.
This entry was posted in Code. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *