查看: 14843|回复: 19|关注: 0

[已答复] 请问怎么傅里叶算法求基波分量?有图

[复制链接]

新手

6 麦片

财富积分


050


7

主题

33

帖子

0

最佳答案
  • 关注者: 1
发表于 2013-5-18 14:20:53 | 显示全部楼层 |阅读模式
本帖最后由 mayiit 于 2013-5-18 14:34 编辑

RT,
输入信号有各次谐波,和直流衰减分量。
请问如何用matlab编程 实现用傅里叶全波算法求基波分量?

傅里叶算法的原理如下:先求a和b
11.png
在通过,a和b求出x的幅值。
22.png



谢谢大侠

新手

6 麦片

财富积分


050


1

主题

13

帖子

0

最佳答案
  • 关注者: 1
发表于 2013-5-18 16:31:56 | 显示全部楼层
clc;
clear;
close;
N=80;
A=2;
f=50;
T=0.02/N;
sum1=0;
sum2=0;
  
      for k=1:N
          i(k)=A*(exp(-k*T/0.02))+A*sin(100*pi*k*T)+0.10*A*sin(200*pi*k*T+pi/120)+0.1*A*sin(300*pi*k*T+pi/100);
      end
           
     I=i;
     for n=1:N
         a=I(n)*sin(2*n*pi/N);
         sum1=sum1+a;
         b=I(n)*cos(2*n*pi/N);
         sum2=sum2+b;
     end
     a1=2/N*sum1;
     b1=2/N*sum2;
     I1=sqrt(a1^2+b1^2)
     q1=atan(b1/a1)

新手

14 麦片

财富积分


050


0

主题

152

帖子

1

最佳答案
发表于 2013-5-18 23:03:35 | 显示全部楼层
楼上高手啊

新手

6 麦片

财富积分


050


7

主题

33

帖子

0

最佳答案
  • 关注者: 1
 楼主| 发表于 2013-5-20 11:49:00 | 显示全部楼层
本帖最后由 mayiit 于 2013-5-20 11:52 编辑

再问你一下,
我看的论文上把图形绘制出来了。
如下
无标题.png
这个是怎么搞的?
我在你的程序后面加了两句,图形出不来啊
clc;
clear;
close;
N=20;
A=20;
f=50;
T=0.02/N;
sum1=0;
sum2=0;

      for k=1:N
           i(k)=A*(exp(-k*T/0.02))+A*sin(100*pi*k*T)+0.10*A*sin(200*pi*k*T+pi/120)+0.1*A*sin(300*pi*k*T+pi/100);
      end

     I=i;
     for n=1:N
         a=I(n)*sin(2*n*pi/N);
         sum1=sum1+a;
         b=I(n)*cos(2*n*pi/N);
         sum2=sum2+b;
     end
     a1=2/N*sum1;
     b1=2/N*sum2;
     I1=sqrt(a1^2+b1^2);
     q1=atan(b1/a1);
     y=a1*cos(100*pi*k*T)+b1*sin(100*pi*k*T);
     plot(y);


基波分量图形公式应该是这个
无想标题.png
谢谢解答




新手

6 麦片

财富积分


050


1

主题

13

帖子

0

最佳答案
  • 关注者: 1
发表于 2013-5-20 15:50:01 | 显示全部楼层
我给你求的只是一个周波的,也就是0.02s的,从你发的图上看,应该取了至少6个周波的采样点,来循环计算幅值

新手

6 麦片

财富积分


050


7

主题

33

帖子

0

最佳答案
  • 关注者: 1
 楼主| 发表于 2013-5-20 21:12:41 | 显示全部楼层
xingfudeziwei 发表于 2013-5-20 15:50
我给你求的只是一个周波的,也就是0.02s的,从你发的图上看,应该取了至少6个周波的采样点,来循环计算幅值 ...

循环计算幅值,是怎么搞的?
可以编一下程给我看看吗,谢谢你,麻烦你了。

新手

6 麦片

财富积分


050


1

主题

13

帖子

0

最佳答案
  • 关注者: 1
发表于 2013-5-21 08:43:00 | 显示全部楼层
mayiit 发表于 2013-5-20 21:12
循环计算幅值,是怎么搞的?
可以编一下程给我看看吗,谢谢你,麻烦你了。 ...

你这是本科毕设吗?? 着急用吗???

新手

6 麦片

财富积分


050


7

主题

33

帖子

0

最佳答案
  • 关注者: 1
 楼主| 发表于 2013-5-21 10:11:38 | 显示全部楼层
xingfudeziwei 发表于 2013-5-21 08:43
你这是本科毕设吗?? 着急用吗???

是的,毕设。分析各种算法。
输入不同的干扰,求波形。
然后那个傅里叶的全波算法的图搞不出来,离定稿还有10天。

新手

6 麦片

财富积分


050


1

主题

13

帖子

0

最佳答案
  • 关注者: 1
发表于 2013-5-21 10:48:01 | 显示全部楼层
mayiit 发表于 2013-5-21 10:11
是的,毕设。分析各种算法。
输入不同的干扰,求波形。
然后那个傅里叶的全波算法的图搞不出来,离定稿还 ...

我给你编了一下,但是跟你给出的图不是很一样。。。你自己看看,再改改吧。。。
clc;
clear;
close;
A=20;% 基波幅值
I=zeros(1,600); %存储800个采样点

N=48;
T=0.02/N;%采样点

for k=1:600
    I(k)=2*A*(exp(-k*T/0.02))+A*sin(100*pi*k*T)+0.10*A*sin(200*pi*k*T+pi/120)+0.05*A*sin(300*pi*k*T+pi/100)+0.01*A*sin(400*pi*k*T+pi/32)+0.008*A*sin(500*pi*k*T+pi/32)+0.005*A*sin(600*pi*k*T+pi/32)+0.002*A*sin(1300*pi*k*T+pi/32);%故障状态下电流波形
end

for sv_count=(N+1):600
    sum1=0;
    sum2=0;
   
    for m=1:N
        a1=I(sv_count-(N+1)+m)*sin(2*(sv_count-(N+1)+m)*pi/N);
        sum1=sum1+a1;
        b1=I(sv_count-(N+1)+m)*cos(2*(sv_count-(N+1)+m)*pi/N);
        sum2=sum2+b1;
    end
         a1_insert_real=2/N*sum1;     %为基波振幅的实部                                                                  
         b1_insert_imag=2/N*sum2;     %为基波振幅的虚部
         
A2(sv_count-N)=sqrt(a1_insert_real^2+b1_insert_imag^2);  %振幅的最大值                                                 %二次谐波分量的振幅
end
A_sv2=A2;
k=1:480;
t=0.02/N*k;
subplot(211);
plot(t,I(1:480))
xlabel('时间t/s')
ylabel('幅值')
title('待分析信号')
subplot(212);
plot(t,A_sv2(1:480))
xlabel('时间')
ylabel('幅值')
title('全波傅氏算法求得的基波分量')

新手

6 麦片

财富积分


050


1

主题

13

帖子

0

最佳答案
  • 关注者: 1
发表于 2013-5-21 10:56:04 | 显示全部楼层
xingfudeziwei 发表于 2013-5-21 10:48
我给你编了一下,但是跟你给出的图不是很一样。。。你自己看看,再改改吧。。。
clc;
clear;

没事的。。我还得谢谢你给我的参考程序。。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /2 下一条

快速回复 返回顶部 返回列表