www.pudn.com > matlabsimulink.rar > c7e3.m, change:2010-05-25,size:2175b


%--- 全波傅里叶算法的MATLAB辅助设计文件 ----- 
%--- 全波傅里叶算法的幅频特性分析 ----------- 
clc; 
clear; 
N=12; 
% 计算傅氏滤波系数 
i=1:N; 
hs(i)=sin(2*pi*i/N); 
hc(i)=cos(2*pi*i/N); 
%-- 生成采样数值 --------------------------- 
%-- 谐波次数从(0.1*f0)到(7*f0) 
for p=1:((N/2)+1)*10 
    for k=1:(N+N/2)                 % 采样点数 
        for i1=1:4 
            a(i1)=(i1-1)*pi/6;      % 初相角 
            y(i1)=sin(2*pi/N*(k-1)*(p-1)/10+a(i1)); 
        end 
        s(:,k,:)=y; 
    end 
    w(p,:,:)=s; 
end 
%-- 计算幅值 -------------------------------- 
for p=1:((N/2)+1)*10 
    for i1=1:4 
        x1=w(p,:,i1); 
        x2=x1(:); 
        ys=filter(hs,1,x2);         % 正弦幅值 
        yc=filter(hc,1,x2);         % 余弦幅值 
        ym=2*sqrt(ys.^2+yc.^2)/N; 
        s1(:,i1)=ym(N+N/2); 
    end 
    w1(p,:)=s1; 
end 
%-- 绘出幅频特性 ------------------------------- 
y1=w1(:,1); 
y2=w1(:,2); 
y3=w1(:,3); 
y4=w1(:,4); 
 
[m,n]=size(y1); 
k=0:0.1:(m-1)/10; 
subplot(221); 
plot(k,y1);axis([0,6,0,1.2]);legend('a=0*pi');grid; 
xlabel('f/f0');ylabel('H'); 
subplot(222); 
plot(k,y2);axis([0,6,0,1.2]);legend('a=pi/6');grid; 
xlabel('f/f0');ylabel('H'); 
subplot(223); 
plot(k,y3);axis([0,6,0,1.2]);legend('a=pi/3');grid; 
xlabel('f/f0');ylabel('H'); 
subplot(224); 
plot(k,y4);axis([0,6,0,1.2]);legend('a=pi/2');grid; 
xlabel('f/f0');ylabel('H'); 
 
% 设置减法滤波器的传递函数系数 
a1=1;b1=[1 0 0 0 0 0 -1]; 
f=0:1:600; 
h1=abs(freqz(b1,a1,f,1200)); 
% 由传递函数系数确定传递函数的幅频特性 
H1=h1/max(h1); 
% 绘出幅频特性 
plot(f,H1); 
xlabel('f/Hz');ylabel('H1'); 
% 滤波效果仿真 
% 模拟输入参数 
N=24; 
t1=(0:0.02/N:0.04); 
m=size(t1); 
% 基波电压 
Va=100*sin(2*pi*50*t1); 
%叠加直流分量和4,8次谐波分量 
Va1=35+100*sin(2*pi*50*t1)+30*sin(4*pi*100*t1)+10*sin(8*pi*100*t1); 
% 采用减法滤波器滤掉Va1中的直流分量和4,8次谐波分量 
Y=zeros(1,6); 
for jj=7:m(2) 
    Y(jj)=(Va1(jj)-Va1(jj-6))/1.414; 
end 
% 输出波形 
plot(t1,Va,'-ro',t1,Va1,'-bs',t1,Y,'-g*'); 
xlabel('t/s');ylabel('v/V'); 
grid on 
 
%采用加法滤波器滤掉Va2的1次谐波分量 
Y=zeros(1,12); 
for jj=13:m(2) 
    Y(jj)=(Va2(jj)+Va2(jj-12)); 
end 
Y 
plot(t,Va,'-ro',t,Va2,'-bo',t,Y,'-go') 
grid on