a7af33ba25
Created functions bandreject_filter(), fade_in(), and fade_out(). Should be in the standards asked, but if not please contact me
62 lines
1.8 KiB
Matlab
62 lines
1.8 KiB
Matlab
function output_y = bandreject_filter(Input, Fs, Low, High)
|
|
% A filter that lets through most frequencies unaltered
|
|
% but attentuates the frequencies in the specified range to
|
|
% very low levels
|
|
% (basically exliminates them)
|
|
% By Yalu Ouyang
|
|
|
|
|
|
% Input: the input signal in the time domain
|
|
% Fs: the sampling frequency
|
|
% Low: the lower limit of the specified range
|
|
% High: the upper limit of the specified range
|
|
% Returns Output: the filtered signal in the time domain
|
|
|
|
len = length(Input);
|
|
|
|
F = Fs * (-len/2 : (len/2 - 1)) / len ;
|
|
|
|
% modified signal in the frequency domain
|
|
% using Fourier Transform
|
|
mod_freq = fftshift(fft(Input));
|
|
|
|
len_f = length(mod_freq);
|
|
|
|
% use this array to record the frequencies
|
|
% that should pass through
|
|
% 0 indicates reject
|
|
% 1 indicates pass
|
|
multiplier = zeros([1,len_f]);
|
|
|
|
for index = 1 : len_f
|
|
|
|
% within range of band reject
|
|
% so elminate these frequencies
|
|
if ((Low < abs(F(index))) && (abs(F(index)) < High))
|
|
multiplier(index) = 0;
|
|
|
|
% outside of specified range
|
|
% so shoudln't be altered
|
|
else
|
|
multiplier(index) = 1;
|
|
end
|
|
end
|
|
|
|
% filtered signal in the frequency domain
|
|
filtered_mod_freq = fftshift(mod_freq .* multiplier);
|
|
|
|
% convert signal back to the time domain
|
|
Output = real(ifft(filtered_mod_freq));
|
|
|
|
end
|
|
|
|
% This function is useful for eliminating
|
|
% unwanted signals that have frequencies close to the
|
|
% median frequency of the original signal
|
|
% (consider overall frequencies as one part,
|
|
% this elminates the middle portion)
|
|
|
|
% Fourier transform is applied in this function
|
|
% to make it easier to eliminate specified
|
|
% frequencies of the signal
|
|
% (easier to do so in the frequency domain) |