基于 MAF 的 HPF的设计分析
简言
MAF(Moving Average Filter,滑动平均滤波器)
基于 MAF 的 HPF(High-Pass Filter,高通滤波器)
2.设计目标
1.抑制 dc
2.抑制 极低频
3.尽量不影响二次谐波分量 2fo
所以窗口长度选成:
这意味着滑动平均窗口时间为:
也就是说:窗口长度刚好等于二次谐波周期。
3. 两个滤波器的频率特性
MAF:低通滤波器
MAF 的特点:
对 dc 增益 = 1
对低频保留较多
在某些频率点会出现陷波
当窗口长度取为 1/(2fo)$时,
在 2fo处会出现零点或很强衰减
所以它会把二次谐波滤掉。
HPF = 1 - MAF:高通滤波器
由于 MAF 在 dc 处增益为 1,所以:
因此 HPF 可以完全去掉 dc。
而当 MAF 在 2fo处接近 0 时:
所以 HPF 对二次谐波基本不影响。
4. MATLAB 分析
频率响应对比
clc; clear; close all;
%% 参数设置
fs = 10000; % 采样频率 [Hz]
fo = 50; % 电网基频 [Hz]
f2 = 2fo; % 二次谐波频率 [Hz]
Ts = 1/fs; % 采样周期
Ns = round(fs/(2fo)); % 按论文设计:Ns = fs/(2fo)
fprintf(‘fs = %d Hz\n’, fs);
fprintf(‘fo = %d Hz\n’, fo);
fprintf(‘2fo = %d Hz\n’, f2);
fprintf(‘Ns = %d\n’, Ns);
fprintf('T_MAF = NsTs = %.6f s\n’, NsTs);
%% 构造离散域滤波器
% MAF: H(z) = (1/Ns)*(1-z-Ns)/(1-z-1)
b_maf = ones(1, Ns)/Ns;
a_maf = 1;
% HPF = 1 - MAF
% 先构造统一长度
b_hpf = -b_maf;
b_hpf(1) = b_hpf(1) + 1; % 对应 1 - MAF
a_hpf = 1;
%% 频率响应
nfft = 8192;
[H_maf, f] = freqz(b_maf, a_maf, nfft, fs);
[H_hpf, ~] = freqz(b_hpf, a_hpf, nfft, fs);
%% 幅频响应
figure;
subplot(2,1,1);
plot(f, 20log10(abs(H_maf)+1e-12), ‘b’, ‘LineWidth’, 1.5); hold on;
plot(f, 20log10(abs(H_hpf)+1e-12), ‘r’, ‘LineWidth’, 1.5);
xline(f2, ‘–k’, ‘2f_o’);
grid on;
xlim([0 500]);
xlabel(‘Frequency (Hz)’);
ylabel(‘Magnitude (dB)’);
legend(‘MAF’, ‘HPF = 1 - MAF’);
title(‘Magnitude Response’);
%% 相频响应
subplot(2,1,2);
plot(f, angle(H_maf)*180/pi, ‘b’, ‘LineWidth’, 1.5); hold on;
plot(f, angle(H_hpf)*180/pi, ‘r’, ‘LineWidth’, 1.5);
xline(f2, ‘–k’, ‘2f_o’);
grid on;
xlim([0 500]);
xlabel(‘Frequency (Hz)’);
ylabel(‘Phase (deg)’);
legend(‘MAF’, ‘HPF = 1 - MAF’);
title(‘Phase Response’);
MAF 的特征:
在 0 Hz 附近增益接近 0 dB
在 100 Hz(若 fo=50Hz) 附近会明显衰减,甚至接近陷波
说明它会保留 dc/低频,但抑制二次谐波
HPF 的特征:
在 0 Hz 处增益接近负无穷 dB
在低频区有抑制
在 100 Hz 附近增益接近 0 dB
说明它能滤除 dc/极低频,同时保留二次谐波
5.关键频点增益对比
%% 关键频点增益
freq_points = [0.1 1 10 50 100 150 200]; % Hz
w = 2pifreq_points/fs; % 归一化频率(rad/sample)
Hmaf_pts = freqz(b_maf, a_maf, freq_points, fs);
Hhpf_pts = freqz(b_hpf, a_hpf, freq_points, fs);
fprintf(‘\n频点增益对比:\n’);
fprintf(‘Freq(Hz)\t| MAF(dB)\t| HPF(dB)\n’);
fprintf(‘--------------------------------------\n’);
for k = 1:length(freq_points)
fprintf(‘%8.1f\t| %8.2f\t| %8.2f\n’, …
freq_points(k), …
20log10(abs(Hmaf_pts(k))+1e-12), …
20log10(abs(Hhpf_pts(k))+1e-12));
end
频点增益对比:
Freq(Hz) | MAF(dB) | HPF(dB)
0.1 | -0.00 | -50.14 1.0 | -0.00 | -30.15 10.0 | -0.14 | -10.24 50.0 | -3.92 | 1.42100.0 | -240.00 | 0.00
150.0 | -13.46 | 0.11
200.0 | -240.00 | 0.00
0~1 Hz:MAF 大,HPF 很小
100 Hz:MAF 很小,HPF 接近 1(0 dB)
6.时域仿真对比
下面构造一个信号:
代码:
%% 时域信号仿真
t = 0:Ts:0.2;
x = 1 + 0.2sin(2pi5t) + 0.5sin(2pi100t);
y_maf = filter(b_maf, a_maf, x);
y_hpf = filter(b_hpf, a_hpf, x);
figure;
subplot(3,1,1);
plot(t, x, ‘k’, ‘LineWidth’, 1.2);
grid on;
xlabel(‘Time (s)’);
ylabel(‘x’);
title(‘Input Signal: DC + Low-frequency + 2f_o’);
subplot(3,1,2);
plot(t, y_maf, ‘b’, ‘LineWidth’, 1.2);
grid on;
xlabel(‘Time (s)’);
ylabel(‘y_{MAF}’);
title(‘Output of MAF’);
subplot(3,1,3);
plot(t, y_hpf, ‘r’, ‘LineWidth’, 1.2);
grid on;
xlabel(‘Time (s)’);
ylabel(‘y_{HPF}’);
title(‘Output of HPF = 1 - MAF’);
含义:
1:直流分量
5 Hz:极低频扰动
100 Hz:二次谐波(当fo=50Hzf_o=50Hzfo=50Hz时)
看两个滤波器输出。
MAF 输出:
会保留平均值
会平滑低频分量
会显著削弱 100 Hz 二次谐波
HPF 输出:
直流分量基本被消除
极低频扰动被削弱
100 Hz 分量保留较好
7.和“普通一阶高通”再比较
代码:
%% 一阶高通滤波器用于对比
fc = 20; % 截止频率
[b1, a1] = butter(1, fc/(fs/2), ‘high’);
[H1, f] = freqz(b1, a1, nfft, fs);
figure;
plot(f, 20log10(abs(H_hpf)+1e-12), ‘r’, ‘LineWidth’, 1.5); hold on;
plot(f, 20log10(abs(H1)+1e-12), ‘g–’, ‘LineWidth’, 1.5);
xline(f2, ‘–k’, ‘2f_o’);
grid on;
xlim([0 500]);
xlabel(‘Frequency (Hz)’);
ylabel(‘Magnitude (dB)’);
legend(‘MAF-based HPF’, ‘1st-order HPF’);
title(‘Comparison of HPFs’);
对比结果:
一阶高通在 100 Hz 处可能仍有幅值误差或相位偏差
MAF-based HPF 在目标频率2fo2f_o2fo处更容易做到“近似无影响”
因为它是按TMAF=1/(2fo)T_{MAF}=1/(2f_o)TMAF=1/(2fo)专门设计的
结论
基于 MATLAB 对 MAF 与 MAF-based HPF 的频域和时域分析可知:
MAF 本质上表现为低通滤波器,在直流和低频处增益较高,而在2fo2f_o2fo处具有显著衰减。
由GHPF=1−GMAFG_{HPF}=1-G_{MAF}GHPF=1−GMAF构造的 MAF-based HPF 在直流处增益为零,可有效抑制 dc 偏置与极低频扰动。
当窗口长度设置为
Ns=fs2foN_s=\frac{f_s}{2f_o}Ns=2fofs
时,MAF 在2fo2f_o2fo处接近零,因此 HPF 在2fo2f_o2fo处增益接近 1,可基本保留二次谐波分量不受影响。
该特性非常适合应用于 LCFF 控制中,用于消除前馈通道中的直流偏置,同时避免削弱用于补偿的二次谐波信号。
