matlab里的fft应用以及常用信号处理问题

matlab里的fft应用以及常用信号处理问题

1。什么是fft

FFT(Fast Fourier Transformation)就是快速傅里叶变换的意思。输入的是离散数据,输出的也是离散频率。
在matlab中具体常用的使用方法为X=fft(x)或X=fft(x,Ns)。

其中X输出是一组复数,abs值代表复数的幅值,angle值代表复数的相位,这一点以后会用到。

2。频率-幅值曲线图

用一个简单的函数去做频率-幅值曲线图,采用1hz和10hz的信号,加上一点噪声,构成输入信号。

t=1:0.01:10;
x=2*sin(2*pi*t)+1*sin(10*2*pi*t)+0.8*(rand(1,length(t))-0.5)+1;

figure(1)
plot(t,x)

Ns=length(t);%信号分析长度
fs=1/(t(2)-t(1));%信号采样频率

[freq,X_real,X_angle]=myfft(x,Ns,fs);%计算频率-幅值参数

figure(2)
plot(freq,X_real);%绘制频率-幅值曲线


function [freq,X_real,X_angle]=myfft(x,Ns,fs)
x=detrend(x);%消除曲线趋势(0次趋势和1次趋势)
X=fft(x,Ns);%fft
%计算频率索引号
n2=1:Ns/2+1;%加不加一无所谓,Ns为偶数
%计算真实幅值
X_real=abs(X(n2))*2/Ns;%除以N还是NS?(有效长度,小于等于N)
%计算分量相位
X_angle=angle(X(n2));
%设置频域刻度
freq = (0:Ns/2)*fs/Ns; 
end

输入时间-幅值图
这里写图片描述
输出频率-幅值图
这里写图片描述
其中有几个参数必须要说明&#x

  • 22
    点赞
  • 163
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值