Académique Documents
Professionnel Documents
Culture Documents
% select filter
while 1
clc;
v = input('lowpass(1), highpass(2), bandpass(3), notch(4) ? ');
if v >= 1 & v <= 4;
break
end
end
% design filter
clc;
switch v
case 1
a = ['LOWPASS'];
filter = zeros(1, n); % initialization by 0
filter(1, 1 : lp) = 1; % filter design in real
number
filter(1, n - lp : n) = 1; % filter design in
imaginary number
case 2
a = ['HIGHPASS'];
filter = ones(1, n); % initialization by 1
filter(1, 1 : hp) = 0; % filter design in real
number
filter(1, n - hp : n) = 0; % filter design in imaginary
number
case 3
a = ['BANDPASS'];
filter = zeros(1, n); % initialization by 0
filter(1, lp : hp) = 1; % filter design in real
number
filter(1, n - hp : n - lp) = 1; % filter design in imaginary
number
case 4
a = ['NOTCH'];
filter = ones(1, n);
filter(1, lp : hp) = 0;
filter(1, n - hp : n - lp) = 0;
end
% make noise
rand('state',sum(100 * clock)); % initialize random seed
noise = randn(1, n); % Gaussian noise
noise = noise / max(abs(noise)); % -1 to 1 normalization
% do filter
s = fft(noise); % FFT
s = s .* filter; % filtering
s = ifft(s); % inverse FFT
s = real(s);
% play noise
disp('Cute noise');
sound(noise, sf); % playing sound
pause(d + 0.7); % waiting for sound end
% plot sound
x = linspace(0, d, n);
subplot(2,2,1); plot(x, noise); xlabel('time (s)'); title('sound: noise');
figure(1);