Mercurial > hg > gccphat-windowing
annotate Simulation/createFiltNoise.m @ 0:ab043bd3b162 tip
First commit
author | Alice Clifford <alice.clifford@eecs.qmul.ac.uk> |
---|---|
date | Mon, 11 Jun 2012 17:42:13 +0100 |
parents | |
children |
rev | line source |
---|---|
alice@0 | 1 function [output]=createFiltNoise(input,centreFreq,bandWidth,filterOrder,Fs) |
alice@0 | 2 |
alice@0 | 3 % create filtered noise for bandwidth simulation |
alice@0 | 4 % |
alice@0 | 5 % Input: |
alice@0 | 6 % - input: input to be filtered |
alice@0 | 7 % - centreFreq: centre frequency or cutoff frequency |
alice@0 | 8 % - bandWidth: width of filter |
alice@0 | 9 % - filterOrder: order of butterworth filter (4) |
alice@0 | 10 % - Fs: sampling frequency (44100) |
alice@0 | 11 % |
alice@0 | 12 % Output: |
alice@0 | 13 % - output: array |
alice@0 | 14 % |
alice@0 | 15 |
alice@0 | 16 % Developer: - Alice Clifford (alice.clifford@eecs.qmul.ac.uk) |
alice@0 | 17 |
alice@0 | 18 |
alice@0 | 19 |
alice@0 | 20 if centreFreq==0 %LOW PASS FILTER FOR CENTRE FREQ ==0 |
alice@0 | 21 |
alice@0 | 22 cutoffFreq=bandWidth; |
alice@0 | 23 |
alice@0 | 24 normCutFreq=(cutoffFreq/(Fs/2)); |
alice@0 | 25 |
alice@0 | 26 [b,a]=butter(filterOrder,normCutFreq,'low'); |
alice@0 | 27 |
alice@0 | 28 output=filter(b,a,input); |
alice@0 | 29 |
alice@0 | 30 |
alice@0 | 31 |
alice@0 | 32 elseif centreFreq==22050 %HIGH PASS FILTER FOR CENTREFREQ == FS/2 |
alice@0 | 33 |
alice@0 | 34 cutoffFreq=(Fs/2)-bandWidth; |
alice@0 | 35 |
alice@0 | 36 normCutFreq=(cutoffFreq/(Fs/2)); |
alice@0 | 37 |
alice@0 | 38 [b,a]=butter(filterOrder,normCutFreq,'high'); %HIGH PASS FILTER |
alice@0 | 39 |
alice@0 | 40 output=filter(b,a,input); |
alice@0 | 41 |
alice@0 | 42 |
alice@0 | 43 |
alice@0 | 44 |
alice@0 | 45 else% %BAND PASS - NEED LOW AND HIGH PASS |
alice@0 | 46 |
alice@0 | 47 lowBandFreq=centreFreq-(bandWidth/2); |
alice@0 | 48 highBandFreq=centreFreq+(bandWidth/2); |
alice@0 | 49 |
alice@0 | 50 highNormBandFreq=(highBandFreq/(Fs/2)); |
alice@0 | 51 lowNormBandFreq=(lowBandFreq/(Fs/2)); |
alice@0 | 52 |
alice@0 | 53 |
alice@0 | 54 [b,a]=butter(filterOrder,[lowNormBandFreq highNormBandFreq]); |
alice@0 | 55 |
alice@0 | 56 |
alice@0 | 57 |
alice@0 | 58 output=filter(b,a,input); |
alice@0 | 59 |
alice@0 | 60 end |