ReSpeaker DSP V02
Dependencies: mbed MbedJSONValue
Matlab_Script/HighPassFilter_Igor.txt@14:8a4699aa69b5, 2019-06-20 (annotated)
- Committer:
- Arkadi
- Date:
- Thu Jun 20 09:06:46 2019 +0000
- Revision:
- 14:8a4699aa69b5
- Parent:
- 1:574b54755983
experiments version
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Arkadi | 1:574b54755983 | 1 | %% Filter test Based on http://www.mathworks.com/help/dsp/ref/dsp.biquadfilter-class.html |
Arkadi | 1:574b54755983 | 2 | % Biquad Direct Form 1 |
Arkadi | 1:574b54755983 | 3 | % For board F446RE |
Arkadi | 1:574b54755983 | 4 | % Fd12 = 372 * 2; % for 2 sections, filter order 4; V2 of software |
Arkadi | 1:574b54755983 | 5 | Fd12 = 314 * 2; % for 3 sections, filter order 6; V2 of software |
Arkadi | 1:574b54755983 | 6 | %Fd12 = 272 * 2; % for 4 sections, filter order 8; V2 of software |
Arkadi | 1:574b54755983 | 7 | |
Arkadi | 1:574b54755983 | 8 | FilterFs=Fd12*10^3; % sampling frequency, taken from D12 pin |
Arkadi | 1:574b54755983 | 9 | Fc = 20*10^3; % 20KHz cut off freq |
Arkadi | 1:574b54755983 | 10 | |
Arkadi | 1:574b54755983 | 11 | % design a second order filter: |
Arkadi | 1:574b54755983 | 12 | FilterOrder=6; |
Arkadi | 1:574b54755983 | 13 | RipplePass=1; |
Arkadi | 1:574b54755983 | 14 | RippleStop=80; |
Arkadi | 1:574b54755983 | 15 | FilterType = 'butter'; |
Arkadi | 1:574b54755983 | 16 | % FilterType = 'cheby2'; |
Arkadi | 1:574b54755983 | 17 | % FilterType = 'ellip'; |
Arkadi | 1:574b54755983 | 18 | |
Arkadi | 1:574b54755983 | 19 | [MyHd, MySOS, MyG] = HighPassFilterDesign(FilterFs,Fc, FilterOrder, RipplePass, RippleStop, FilterType); |
Arkadi | 1:574b54755983 | 20 | |
Arkadi | 1:574b54755983 | 21 | % [z,p,k] = butter(FilterOrder,Wn,'high'); FilterType = 'butter'; |
Arkadi | 1:574b54755983 | 22 | % [z,p,k] = cheby2(FilterOrder,RippleStop, Wn, 'high'); FilterType = 'cheby2'; |
Arkadi | 1:574b54755983 | 23 | % [z,p,k]=ellip(FilterOrder,RipplePass,RippleStop,Wn,'high'); FilterType = 'ellip'; |
Arkadi | 1:574b54755983 | 24 | % Convert to Coeficients matrix |
Arkadi | 1:574b54755983 | 25 | %[SOS,G] = zp2sos(z,p,k); |
Arkadi | 1:574b54755983 | 26 | %MyHd = dfilt.df1sos(SOS,G) |
Arkadi | 1:574b54755983 | 27 | |
Arkadi | 1:574b54755983 | 28 | % Plot The filter response: |
Arkadi | 1:574b54755983 | 29 | |
Arkadi | 1:574b54755983 | 30 | fvtool(MyHd,'Fs',FilterFs) |
Arkadi | 1:574b54755983 | 31 | |
Arkadi | 1:574b54755983 | 32 | % Print filter in the form, suitable for copying into C code |
Arkadi | 1:574b54755983 | 33 | columns = size(MySOS,2); |
Arkadi | 1:574b54755983 | 34 | lines = size(MySOS,1); |
Arkadi | 1:574b54755983 | 35 | fprintf('/*\n%s FILTER DESIGN, %s, %d sections, for sampling frequency %5.1f Hz \n', FilterType, datestr(now), lines, FilterFs); |
Arkadi | 1:574b54755983 | 36 | fprintf('Filter Order %d, Cut Off Frequency %d Hz\n', FilterOrder, Fc); |
Arkadi | 1:574b54755983 | 37 | fprintf('*/\n'); |
Arkadi | 1:574b54755983 | 38 | % fprintf('char FilterTypeHP[] = "%s";\n', FilterType); |
Arkadi | 1:574b54755983 | 39 | fprintf('float SOSMatHP[%d][%d] = {\n', lines, columns); |
Arkadi | 1:574b54755983 | 40 | for i =1:lines |
Arkadi | 1:574b54755983 | 41 | fprintf(' %f, ', MySOS(i,1:columns)); |
Arkadi | 1:574b54755983 | 42 | fprintf('\n'); |
Arkadi | 1:574b54755983 | 43 | end |
Arkadi | 1:574b54755983 | 44 | fprintf('\b\b\b\n};\n'); %\b\b\b - erase <\n>, <space> and <,> |
Arkadi | 1:574b54755983 | 45 | fprintf('float GscaleHP = %f;\n\n',MyG); |
Arkadi | 1:574b54755983 | 46 | |
Arkadi | 1:574b54755983 | 47 | % Copy coeficients to the mbed code |
Arkadi | 1:574b54755983 | 48 | |
Arkadi | 1:574b54755983 | 49 | |
Arkadi | 1:574b54755983 | 50 |