フィルター (デジタル ハイパス IIR フィルター) を実装して、500 Hz 未満の周波数を減らし、より高い周波数を許可するタスクが与えられました。sptool と ellip 関数を使用して、次のように作成しました
% Sampling Rate (Hz)
Fs = 46875;
% High-pass filter
N = 4; % Filter Order
Wn = 500/(46875/2); % Cutoff Frequency in terms of Passband / Nyquist frequency ratio
Rp = 0.5; % Passband ripple specification
Rs = 20; % Stopband attenuation
[Num,Den] = ellip(N,Rp,Rs,Wn,'high');
secondOrderSection = tf2sos(Num,Den)./2
次に、L1 ノルムを使用してスケールファクタを計算しました。これを 16 ビット Atmel マイクロコントローラ (AC3U3 Xplained) に実装する必要があるため、スケールファクタを Q_0.15 形式で計算する必要があります。
% FIRST SECTION
firstScaleFactor = 1/(sum(abs(impz(1,secondOrderSection(1,4:6)))))
sf1_2_Q = round(firstScaleFactor*(2^15))
% SECOND SECTION
secondScaleFactor = 1/(sum(abs(impz(1,secondOrderSection(2,4:6)))))
sf2_2_Q = round(secondScaleFactor*(2^15))
問題: スケール ファクターが少し低いようです。最初のスケール ファクターは 77、2 番目のスケール ファクターは 14 です。計算にエラーはありますか?