西莫电机圈

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

手机号码,快捷登录

查看: 1177|回复: 3

[原创] Flux中整周期(Full period)FFT算法的研究

[复制链接]

该用户从未签到

发表于 2016-2-26 15:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 dnawujun 于 2016-2-26 18:44 编辑

N为我们选择的数据的点数(包含整个周期),N1为Flux自动选的FFT点数
并且N1<=N-1
Flux按如下过程做FFT

1. 取N1为小于并最靠近N-1的,为2的幂的那个数
        比如:
        N-1=64,则取N1=64
        N-1=200,则取N1=128

2. 如果N1=N-1,则直接做N-1个点数据的FFT

3. 如果N1!=N-1,则在原始数据上按N1+1个点做线性插值,然后
    在插值后的数据上做N1个点的FFT

因FFT能解析的最高谐波次数为N1/2-1,所以即便是仿真了100个点的数据
而这时Flux取N1=64,则最高谐波次数为31,所以即便在FFT对话框里的
"Number of harmonics compute"输入1000,Flux也只输出31个谐波数据(不含直流分量的情况下)。

用matlab写程序对比一下结果

无标题.png
Matlab源代码

  1. %输入数据为t,y, workspace中的
  2. %t为时间,列向量
  3. %y为数据值(电流、电压等),列向量
  4. N=length(t);
  5. %取小于并最靠近N-1的,为2的幂的那个数
  6. N1=2^(nextpow2(N-1)-1);%也可以用2^floor(log2(N-1))
  7. if N1~=(N-1)
  8.     t1=linspace(t(1),t(end),N1+1)';
  9.     Fs=1/(t1(2)-t1(1));%采样频率
  10.     y1=interp1(t,y,t1);%按N1+1个点线性插值
  11.     y_fft=fft(y1,N1);%按N1个点做fft
  12. else %直接做fft
  13.     Fs=1/(t(2)-t(1));%采样频率
  14.     y_fft=fft(y);
  15. End

  16. %实际幅值需要除以N1/2
  17. amps=abs(y_fft)/(N1/2);

  18. %实际直流分量只需要除以N1
  19. amps(1)=amps(1)/2;

  20. %因FFT结果是对称的,所以只需要前半部分
  21. amps=amps(1:N1/2);

  22. %相位
  23. angles=angle(y_fft);
  24. angles=angles(1:N1/2);

  25. %各次谐波的频率
  26. n=(1:N1/2)';
  27. freqs=(n-1)*Fs/N1;
复制代码

评分

参与人数 2西莫币 +28 收起 理由
e=mc^2 + 12 我很赞同
y1949b + 16 原创内容

查看全部评分

西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过

该用户从未签到

发表于 2016-2-28 18:35 | 显示全部楼层
是的 FFT的次数除了设定值外,还受限于原始数据点数
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

发表于 2016-3-22 08:56 | 显示全部楼层
赞,吴兄威武!!
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

发表于 2016-3-22 09:41 | 显示全部楼层
谢谢楼主的分享 不错
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|西莫电机圈 ( 浙ICP备10025899号-3 浙公网安备:33028202000436号

GMT+8, 2024-11-22 07:40 , Processed in 0.250246 second(s), 27 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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