电力仿真论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: pscad atp VIP会员
新来朋友

luzhiyuan

szg0933

Iris

YANG

柔直小白

messiliu10

ywwy

18720669717

qq954646921

suoybing

EE_EDTA

zcx

wuzhixiang

chj

玉面孟尝

13647319986

晚风吻尽荷花叶

吃不胖的王胖子

荔荔

zjzy8888

dawoya

张林世家

pscad

cloudyday

cxk2021

查看: 6.4K|回复: 24

[分享] MATLAB中做FFT

[复制链接]
发表于 2019-7-22 17:32:00 | 显示全部楼层 |阅读模式

注册可看大图、可下载

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

x
补贴,原版不见了。。。

FFT很常见的应用,下面找到一段代码,来源
万永革编著.数字信号处理的MATLAB实现[M].北京:科学出版社,2012.05.

第三章
代码如下:
  1. %Samp3_13
  2. clf;
  3. clear all
  4. clc
  5. fs=100;N=128;   %采样频率和数据点数
  6. n=0:N-1;t=n/fs;   %时间序列
  7. x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t); %信号
  8. y=fft(x,N);    %对信号进行快速Fourier变换
  9. mag=abs(y)*2/N;     %求得Fourier变换后的振幅
  10. f=n*fs/N;    %频率序列
  11. figure(1)
  12. plot(t,x);
  13. figure(2)
  14. subplot(2,2,1),
  15. plot(f,mag);   %绘出随频率变化的振幅
  16. xlabel('频率/Hz');
  17. ylabel('振幅');title('N=128');grid on;
  18. subplot(2,2,2),plot(f(1:N/2),mag(1:N/2)); %绘出Nyquist频率之前随频率变化的振幅
  19. xlabel('频率/Hz');
  20. ylabel('振幅');title('N=128');grid on;
  21. %对信号采样数据为1024点的处理
  22. fs=100;N=128;;n=0:N-1;t=n/fs;
  23. x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t); %信号
  24. y=fft(x,N);   %对信号进行快速Fourier变换
  25. mag=abs(y)*2/N;   %求取Fourier变换的振幅
  26. f=n*fs/N;
  27. subplot(2,2,3),plot(f,mag); %绘出随频率变化的振幅
  28. xlabel('频率/Hz');
  29. ylabel('振幅');title('N=1024');grid on;
  30. subplot(2,2,4)
  31. plot(f(1:N/2),mag(1:N/2)); %绘出Nyquist频率之前随频率变化的振幅
  32. xlabel('频率/Hz');
  33. ylabel('振幅');title('N=1024');grid on;
  34. %axis([0 5000 0 0.02])
复制代码
结果如下图
y.png
原始波形
fft.png
FFT变换

一个兴趣广泛的灵魂
回复

使用道具 举报

 楼主| 发表于 2019-7-22 18:59:19 | 显示全部楼层
关键是这个楼层,有人问怎么用,下面以两个例子说明
例子1  PSCAD导出数据进行FFT
以最简单的分压器例子vdiv为例
1.png

由于上面的仿真设置为采样频率为f=100Hz,数据点N为128与1024
因此仿真时间步长为1/f=0.01s=10ms=10000us
2.png
红色方框内两个参数保持一致
仿真时间为11s,数据点为1100个
但PSCAD对于步长较长的仿真会求解错误(原理大概同输电线路——输电线路、电缆长度问题),

错误如下:
50Hz,60Hz波形不是正弦波,可以行尝试
0.png



因此选择下图的设置

f=1000Hz,步长为1/f=1000us
仿真时间为1.1s,数据点为1100个
空白处右键设置
3.png



保证绘图与输出通道同等采样
仿真频率设置为50Hz,空白处ctrl+g改变频率


提取其中的电压数据
找到电压波形,右键全选

4.png
桌面新建记事本,将数据粘贴后保存,打开MATLAB导入数据
5.png

具体内容参见论坛中的方法,给出一个链接
利用MATLAB软件画PSCAD仿真波形图
https://www.mmc-hvdc.com/t-353.html


运行程序
  1. fs=1000;N=128;   %采样频率和数据点数
  2. n=0:N-1;t=n/fs;   %时间序列
  3. x=MidPointVoltage1(1:128)'; %信号转置,MidPointVoltage1为电压向量名,可根据情况更改
  4. y=fft(x,N);    %对信号进行快速Fourier变换
  5. mag=abs(y)*2/N;     %求得Fourier变换后的振幅
  6. f=n*fs/N;    %频率序列
  7. figure(1)
  8. plot(t,x);
  9. figure(2)
  10. subplot(2,2,1),
  11. plot(f,mag);   %绘出随频率变化的振幅
  12. xlabel('频率/Hz');
  13. ylabel('振幅');title('N=128');grid on;
  14. subplot(2,2,2),plot(f(1:N/2),mag(1:N/2)); %绘出Nyquist频率之前随频率变化的振幅
  15. xlabel('频率/Hz');
  16. ylabel('振幅');title('N=128');grid on;      %对信号采样数据为128点的处理
  17. fs=1000;N=1024;;n=0:N-1;t=n/fs;
  18. x1=MidPointVoltage1(1:1024)'; %信号
  19. y=fft(x1,N);   %对信号进行快速Fourier变换
  20. mag=abs(y)*2/N;   %求取Fourier变换的振幅
  21. f=n*fs/N;
  22. subplot(2,2,3),plot(f,mag); %绘出随频率变化的振幅
  23. xlabel('频率/Hz');
  24. ylabel('振幅');title('N=1024');grid on;
  25. subplot(2,2,4)
  26. plot(f(1:N/2),mag(1:N/2)); %绘出Nyquist频率之前随频率变化的振幅
  27. xlabel('频率/Hz');
  28. ylabel('振幅');title('N=1024');grid on;
复制代码
结果如下图
6.png


图中表明,数据点越多结果越准确
想了解等过内容可以选购推荐书籍
完结撒花






一个兴趣广泛的灵魂
回复

使用道具 举报

 楼主| 发表于 2019-7-22 20:16:49 | 显示全部楼层
例子2 ATP-EMTP数据FFT
首先将仿真参数设置下
侧面.png
参数如下
仿真.png
元件默认即可,重在FFT
保存导入.png
将数据导出,英文路径为宜
atp.png
利用上面同样的程序做FFT结果
由于atp-emtp本身可以用FFT,结果如下
2.png

虽然FFT不是很难,但仍然有很多需要思考的地方,例如幅值相位变化的问题,采样值与结果等


一个兴趣广泛的灵魂
回复

使用道具 举报

会员网龄
4.8岁

TA在排名榜Top100

积分:暂未上榜

发帖:暂未上榜

在线:暂未上榜

该用户从未签到

0

主题

12

回帖

12

积分

新手上路

Rank: 1

积分
12

    发表于 2019-8-16 18:24:21 | 显示全部楼层
    mag=abs(y)*2/N
    求变换后的振幅时为什么要乘以2除以N?
    回复

    使用道具 举报

     楼主| 发表于 2019-8-16 18:52:22 | 显示全部楼层
    beixiaoman 发表于 2019-8-16 18:24
    mag=abs(y)*2/N
    求变换后的振幅时为什么要乘以2除以N?

    给出了参考资料了哦,查一下就知道
    一个兴趣广泛的灵魂
    回复

    使用道具 举报

    发表于 2019-12-2 22:25:38 | 显示全部楼层
    学习了           
    回复

    使用道具 举报

    发表于 2020-3-20 18:49:38 | 显示全部楼层
    点赞。学习ing
    回复

    使用道具 举报

    发表于 2020-3-26 13:01:58 来自手机 | 显示全部楼层
    请问有matlab小波变化和小波能量熵的介绍吗?
    回复

    使用道具 举报

    发表于 2020-3-28 00:23:46 来自手机 | 显示全部楼层
    用了下程序,还是到最后几个点 高频有幅值 不太理想
    回复

    使用道具 举报

    发表于 2020-3-28 00:24:03 来自手机 | 显示全部楼层
    r2019 发表于 2020-03-28 00:23
    用了下程序,还是到最后几个点 高频有幅值 不太理想

    可能是自己模型的问题吧
    回复

    使用道具 举报

    发贴规则: 
    1.严禁将帖子发至无关版面,请选择对应版块发贴,以维护论坛的系统性和整洁性。
    2.提问题需要将问题描述清楚,涉及到仿真模型问题需要添加报错图片或描述,上传仿真模型效果更佳。
    3.由于论坛的时效性不足,可以发帖后点击楼层下分享到:QQ好友和群快速得到关注。
    4.保持和谐。
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|电力仿真论坛

    GMT+8, 2024-3-29 21:19 , Processed in 0.119152 second(s), 66 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

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