西莫电机圈

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

手机号码,快捷登录

查看: 6408|回复: 8

利用MATLAB做快速傅里叶变换

  [复制链接]

该用户从未签到

发表于 2010-1-5 11:54 | 显示全部楼层 |阅读模式

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

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

x
看到很多人不会用MATLAB做FFT,特别利用MATALB的FFT函数编制一个程序如下:
%%本程序利用快速傅里叶变换FFT,求取时域信号的幅值频域分布;

clear;clc;                 %清空变量空间

load data;      %输入信号:先将各种格式的信号数据导入,然后存为MAT格式;
t=data(:,1);               %对应时间点;
x=data(:,2);               %对应信号值的大小;

lenx=length(x);            %求取取样数和基波频率;
N=lenx-1;
tstart=t(1);tend=t(lenx);
T=tend-tstart;f0=1/T;
k=0:N/2-1;
fs=k*f0;

xk=fft(x,N);               %快速傅里叶变换;
mag_xk=abs(xk)/(N/2);      %除以N/2,以得到每个频率点的幅值;
mag_xk=mag_xk(1:N/2);      %因为结果是对称的,所以只取其中一半;

subplot(2,1,1);            %绘制输入信号图;
plot(t,x);
grid on;

subplot(2,1,2);            %绘制各频率点的幅值图;
stem(fs,mag_xk);
grid on;

评分

参与人数 2西莫币 +11 收起 理由
yuexu282 + 3 非常棒
y1949b + 8 多谢支持

查看全部评分

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

该用户从未签到

 楼主| 发表于 2010-1-5 11:55 | 显示全部楼层
信号和FFT图
MATLAB.pdf (14.51 KB, 下载次数: 243)
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

发表于 2010-1-5 15:38 | 显示全部楼层
虽然不难,但还是赞下LZ的热心
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

签到天数: 333 天

连续签到: 39 天

[LV.8]以坛为家I

发表于 2010-1-5 19:30 | 显示全部楼层
你没有讲到相位谱的问题,而恰恰在这方面容易出问题,例如相位解缠Unwrap,频率Shift等,下面这篇帖子里有一个实例,请楼主去诊断和指导一下。

https://bbs.simol.cn/thread-9237-1-1.html

评分

参与人数 1西莫币 +3 收起 理由
y1949b + 3 多谢支持

查看全部评分

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

使用道具 举报

该用户从未签到

 楼主| 发表于 2010-1-5 21:12 | 显示全部楼层
增加的相位谱如下:

%%本程序利用快速傅里叶变换FFT,求取时域信号的幅值频域分布;

clear;clc;                 %清空变量空间

load data1;      %输入信号:先将各种格式的信号数据导入,然后存为MAT格式;
t=data1(20:40,1)/1000;     %对应时间点;
x=data1(20:40,2);          %对应信号值的大小;

lenx=length(x);            %求取取样数和基波频率;
N=lenx-1;
tstart=t(1);tend=t(lenx);
T=tend-tstart;f0=1/T;
k=0:N/2-1;
fs=k*f0;

xk=fft(x,N);               %快速傅里叶变换;
mag_xk=abs(xk)/(N/2);      %除以N/2,以得到每个频率点的幅值;
mag_xk=mag_xk(1:N/2);      %因为结果是对称的,所以只取其中一半;
ang_xk=angle(xk)/(2*pi)*360;
ang_xk=ang_xk(1:N/2);

subplot(3,1,1);            %绘制输入信号图;
plot(t,x);
title('输入信号图');xlabel('时间以秒为单位');ylabel('信号以伏特为单位');
grid on;

subplot(3,1,2);            %绘制各频率点的幅值图;
stem(fs,mag_xk);
title('信号频谱图');xlabel('频率以赫兹为单位');ylabel('幅值以伏特为单位');
grid on;

subplot(3,1,3);            %绘制各频率点的角度图;
stem(fs,ang_xk);
title('信号频谱图');xlabel('频率以赫兹为单位');ylabel('以角度为单位');
grid on;
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

 楼主| 发表于 2010-1-5 21:17 | 显示全部楼层
但是MAXWELL的相位谱和MATLAB有所不同。
matlab.bmp
maxwell_angle.bmp
maxwell_mag.bmp
maxwell_voltage.bmp

评分

参与人数 1西莫币 +3 收起 理由
y1949b + 3 多谢支持

查看全部评分

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

使用道具 举报

签到天数: 333 天

连续签到: 39 天

[LV.8]以坛为家I

发表于 2010-1-6 08:55 | 显示全部楼层
那你分析一下,这个文件中,2个波形内各次谐波的相位差。重点是4次谐波的相位差,或者5次谐波的相位差。谢谢!

9槽线圈.rar (269.02 KB, 下载次数: 10)
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

发表于 2010-1-6 10:24 | 显示全部楼层
学习了,蛮复杂的
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

签到天数: 6 天

连续签到: 1 天

[LV.2]偶尔看看I

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-28 06:20 , Processed in 0.126842 second(s), 28 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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