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


%--- 全波傅里叶算法的MATLAB辅助设计文件 ----- 
%--- 利用全波傅里叶算法计算输入信号的幅值 --- 
clc; 
clear; 
N=36; 
i=1:N; 
t1=(0:0.02/N:0.06); 
% 输入的电压信号 
Va=100*sin(2*pi*50*t1)+20*sin(3*pi*100*t1)+5*sin(5*pi*100*t1); 
subplot(221); 
plot(t1,Va); 
xlabel('t/s');ylabel('V(t)'); 
% 计算基波电压幅值 
hs(i)=sin(2*pi*i/N);        % 傅氏滤波系数 
hc(i)=cos(2*pi*i/N); 
ys=filter(hs,1,Va);         % 正弦幅值 
yc=filter(hc,1,Va);         % 余弦幅值 
ym=2*sqrt(ys.^2+yc.^2)/N; 
subplot(222); 
plot(t1,ym);legend('基波幅值'); 
xlabel('t/s');ylabel('V(t)'); 
 
% 计算三次谐波电压幅值 
hs3(i)=sin(3*2*pi*i/N);     % 傅氏滤波系数 
hc3(i)=cos(3*2*pi*i/N); 
ys3=filter(hs3,1,Va);       % 正弦幅值 
yc3=filter(hc3,1,Va);       % 余弦幅值 
ym3=2*sqrt(ys3.^2+yc3.^2)/N; 
subplot(223); 
plot(t1,ym3);legend('三次谐波幅值'); 
xlabel('t/s');ylabel('V3(t)');  
 
% 计算五次谐波电压幅值 
hs5(i)=sin(5*2*pi*i/N);     % 傅氏滤波系数 
hc5(i)=cos(5*2*pi*i/N); 
ys5=filter(hs5,1,Va);       % 正弦幅值 
yc5=filter(hc5,1,Va);       % 余弦幅值 
ym5=2*sqrt(ys5.^2+yc5.^2)/N; 
subplot(224); 
plot(t1,ym5);legend('五次谐波幅值'); 
xlabel('t/s');ylabel('V5(t)');   
 
%-- 生成采样数值 --------------------------- 
%-- 谐波次数从(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