电力系统在带非线性负载时,电压会产生很大的谐波和畸变,为了便于对电压包络线进行理论分析,需要对数据进行滤波处理。当然简单的平滑函数也可以简单处理,如使用smooth函数。下面展示一种数字信号处理的常见滤波方法:切比雪夫滤波器。
下面是带很大谐波的电压包络线:
应用如下的切比雪夫滤波程序:
-
%使用注意事项:通带或阻带的截止频率的选取范围是不能超过采样率的一半
-
%即,f1,f3的值都要小于 Fs/2
-
%x:需要带通滤波的序列
-
f1=1;%通带截止频率
-
f3=2;%阻带截止频率
-
%rp:边带区衰减DB数设置
-
%rs:截止区衰减DB数设置
-
%FS:序列x的采样频率
-
rp=0.1;rs=30;%通带边衰减DB值和阻带边衰减DB值
-
Fs=2000;%采样率
-
wp=2*pi*f1/Fs; ws=2*pi*f3/Fs; % 设计切比雪夫滤波器;
-
[n,wn]=cheb1ord(wp,ws,rp,rs,'s');%计算切比雪夫滤波器的阶数和通带边界频率
-
n
-
wn
-
[z,p,k]=cheb1ap(n,rp)
-
[B,A]=zp2tf(z,p,k);
-
[b,a]=lp2lp(B,A,wn);%模拟低通原型转模拟低通滤波器
-
[bz,az]=impinvar(b,a,Fs);%模拟转数字滤波器
-
[bz1,az1]=cheby1(n,rp,wp); %查看设计滤波器的曲线
-
[h,w]=freqz(bz1,az1,256,Fs);
-
h=20*log10(abs(h));
-
figure;plot(w,h);title('所设计滤波器的通带曲线');
-
grid on;
-
% y=filter(bz1,az1,x);%对序列x滤波后得到的序列y end
-
%低通滤波器使用例子的代码
-
fs=2000;
-
%t=(1:fs)/fs;ff1=100;ff2=400;
-
%x=sin(2*pi*ff1*t)+sin(2*pi*ff2*t);
-
x=v.signals.values;
-
% figure;
-
% subplot(211);plot(x);
-
% subplot(212);
-
%hua_fft(x,fs,1); %低通测试
-
%y=filter(bz1,az1,x);
-
%y=lowp(x,300,350,0.1,20,fs);figure;
-
y=filtfilt(bz1,az1,x);
-
plot(y)
滤波效果如下所示:
阅读(11733) | 评论(0) | 转发(1) |