matlab-fft求取给定数据的频率及对应的滤波器设计

fft变换可以求取信号的频率点,有利于台架实验分析数据中的噪声以及滤波,对台架实验中的位置环控制具有较好的作用。matlab中含有fft函数可以直接求取频率点。但是在程序的理解中需要注意的是:

1、采样频率:就是每秒钟采集多少个数据点;
2、分辨率:采样频率/(一共采集了多少个数据点);
3、对应频谱图的横坐标(每个点的频率):(0:N-1)*分辨率
4、纵坐标为fft返回值的2倍
5、最后画图采用一半坐标显示就可以
对应的matlab程序为:

clear all;
clc;
T = 5;
omega = 2*pi/T;
i = 1;
for t=0.1:0.1:10
    y(i) = 3*sin(omega*t);  %注意频率为0.2
    % y(i) = 3*sin(omega*t) + 5*cos(2*pi*t+3); 
    sample(i) = t;
    i = i+1;
end;
plot(sample,y);

N = length(sample);
matlab_fft = figure;
yfreq = fft(y)/N ;
% yfreq = fftshift(y)/N ;
f = (0:N-1)*10/N;
yfreq =yfreq*2;
plot(f(1:N/2),abs(yfreq(1:N/2)));

对应生成的matlab图像为:
在这里插入图片描述
对应的频率图像为:
在这里插入图片描述

滤波器设计
time = 1:1000;
fre1 = 500;
fre2 = 2000;
fs = 6000;         % sample frequency

singal1 = sin(2*pi*fre1*time/fs);
singal2 = 0.3*sin(2*pi*fre2*time/fs);
singal = singal1+ singal2;

figure(1)
subplot(311)
plot(singal1);
subplot(312)
plot(singal2);
subplot(313)
plot(singal);

f = (1:N)*6000/N;
% % show the frequency plot
fft_result1 = abs(fft(singal1));
fft_result2 =abs(fft(singal2));
fft_result = abs(fft(singal));
N =1000;
figure(2)
subplot(311)
plot(f(1:N/2), fft_result1(1:N/2)/N*2);
subplot(312)
plot(f(1:N/2), fft_result2(1:N/2)/N*2);
subplot(313)
plot(f(1:N/2), fft_result(1:N/2)/N*2);


% % filter design
filter_lowpass = fir1(128,1000/3000);  %1000/3000是截止频率
figure(3)
freqz(filter_lowpass)

% % filter the plot
signal_filter = filter(filter_lowpass, 1, singal);

figure(4)
plot(signal_filter);
after_filter = abs(fft(signal_filter));
figure(5)
plot(f(1:N/2), after_filter(1:N/2)/N*2);

原始信号的时域图
在这里插入图片描述
原始信号的频谱图
在这里插入图片描述
低通滤波器
在这里插入图片描述
滤波后的波形图
在这里插入图片描述
滤波后的频谱图
在这里插入图片描述

  • 3
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
pmf-fft捕获算法是一种基于快速傅里叶变换(FFT)的频率响应估计方法,通常用于信号处理和系统分析中。在MATLAB中,我们可以使用信号处理工具箱中的fft函数来实现这种算法。 首先,我们需要准备一个输入信号。可以是一个时域中的音频信号、直流电信号等。接下来,我们需要将输入信号进行FFT变换,通过FFT可以将信号从时域转换到频域。对于一个长度为N的输入信号,通过FFT变换得到N个频率点的幅度和相位信息。 对于pmf-fft捕获算法,我们主要关注幅度信息。在MATLAB中,我们可以使用abs函数取得FFT变换后频域的幅度信息。然后,我们可以进一步计算每个频率点的幅度相对于频率的响应曲线。 在MATLAB中,我们可以通过将频域的幅度信息与对应频率点进行绘图来展示频率响应。可以使用plot函数来绘制曲线,其中横轴表示频率,纵轴表示幅度。 除了绘制频率响应曲线外,我们还可以通过进一步分析频域的幅度信息来确定一些特征,比如最大幅度点、主要频率成分等。MATLAB提供了一些函数,比如findpeaks来寻找频谱中的峰值点。 综上所述,通过使用MATLAB中的fft函数和一些相关的绘图函数,我们可以很方便地实现pmf-fft捕获算法的频率响应分析。这样的分析可以帮助我们更好地理解信号的频域特性,从而进行相关的信号处理和系统分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值