失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > matlab频谱图幅值意义 时域波形傅里叶分析之后 频率-幅值波形图意义 – MATLAB中文论坛...

matlab频谱图幅值意义 时域波形傅里叶分析之后 频率-幅值波形图意义 – MATLAB中文论坛...

时间:2021-05-23 07:48:26

相关推荐

matlab频谱图幅值意义 时域波形傅里叶分析之后 频率-幅值波形图意义 – MATLAB中文论坛...

%对单一的5元的样本纸币进行傅里叶分析,画出频率-幅值图(频谱图)

%处理顺序:

%第一步:冠字码信号时间序列

%第二步:数据预处理(数据平滑滤波),此处没有用到数据压缩,因为快速傅里叶变换涉及到采样数据点数、采样频率等数据

%第三步:加Hanning窗(此处Hanning的宽度需要自己调整,以求达到最佳的宽度)本程序中设置窗的宽度大小为120

%第四步:FFT

%第五步:得出频率--幅值序列

%第六步:将双边频谱转化为单边频谱

%第七步:求最大幅值对应的特征频率

%关闭所有窗口并清理内存并清除命令窗口的命令

close all;

clear all;

clc;

%读取数据

x=xlsread('5反上下1.xls','A700:A1900');%读取原始数据存入x中

%显示未滤波的波形离散数据的波形

figure('NumberTitle','off','Name','5原始未滤波数据波形');

%显示原始数据波形

plot(x,'r-');%红色,实线

xlabel('Time1');%标记横坐标为:Time

ylabel('Amplitude');%标记纵坐标为:Amplitude

title('5冠字码原始时域波形');%绘图添加标题

grid on;%给当前图形添加网格

%数据预处理:采用平滑滤波的方式进行滤波

%数据平滑滤波

%表示平滑滤波窗函数,前m/2,后m/2个点没滤波,设为原来的值就行

%整个滤波过程如下:

m=3;%设置滤波窗的大小是3

for i=1:length(x)-m+1

y(i+(m-1)/2)=sum(x(i:i+m-1))/m;

end

%显示滤波后的波形离散数据的波形

figure('NumberTitle','off','Name','5滤波后数据波形');

%显示滤波后的数据波形

plot(y,'g-');%红色,实线

xlabel('Time');%标记横坐标为:Time

ylabel('Amplitude');%标记纵坐标为:Amplitude

plot(y,'g-');%显示平滑滤波后的波形

title('5冠字码滤波后时域波形');%绘图添加标题

grid on;%给当前图形添加网格

%手动生成汉宁窗

%加汉宁窗

N_H = 120;%汉宁窗的宽度设置为120

han = hanning(N_H);%汉宁窗生成函数

%显示手动生成的窗函数的波形

figure('NumberTitle','off','Name','窗宽为120的窗函数波形');

plot(han,'b-');

xlabel('窗宽');%标记横坐标

ylabel('窗幅值');%标记纵坐标

axis([1,N_H,0,1]);%设置坐标轴的最小和最大值

title('Hanning Window');%绘图设置标题

grid on;%给当前图形添加网格

%傅里叶分析

N = 1200;%采样点数

fs = 250*1000;%采样频率为250k

n = 0:N-1;%n用于产生离散时间序列

%短段波形与Hanning窗拟合

y1 = y(1,1:120).* han';

y2 = y(1,121:240).* han';

y3 = y(1,241:360).* han';

y4 = y(1,361:480).* han';

y5 = y(1,481:600).* han';

y6 = y(1,601:720).* han';

y7 = y(1,721:840).* han';

y8 = y(1,841:960).* han';

y9 = y(1,961:1080).* han';

y10 = y(1,1081:1200).* han';

%生成新的拟合向量

y=[y1 y2 y3 y4 y5 y6 y7 y8 y9 y10];

%对信号进行FFT变换

y_fft = fft(y,N);

%求取FFT变换后的振幅,实际振幅是乘以2除以N

mag = abs(conj(y_fft)*2/N);

%生成频率序列,为后续作图做准备,此处是频率的转换

f = n*fs/N;

%显示频率--幅值波形

figure('NumberTitle','off','Name','5FFT变换后的频率--幅值波形');

plot(f,mag,'k-');%黑色

xlabel('频率');%标记横坐标

ylabel('幅值');%标记纵坐标

title('5双边频率--幅值波形');%绘图设置标题

grid on;%给当前图形添加网格

%将双边频谱转换为单边频谱

%显示单边频率--幅值波形

figure('NumberTitle','off','Name','5FFT变换后的单边频率--幅值波形');

%grid on;%给当前图形添加网格:应该添加在plot的后面

plot(f(1:N/2),mag(1:N/2));

xlabel('频率');%标记横坐标

ylabel('幅值');%标记纵坐标

title('5单边边频率--幅值波形');%绘图设置标题

grid on;%给当前图形添加网格

%求最大幅值以及最大幅值对应的特征频率,这里的幅值拟定为实际幅值,即mag/2*N

%首先,求最大幅值

mag_max=max(mag);

%求最大幅值处对应的频率,即最大特征频率

fre_max=find(mag(1:N/2)==mag_max);

%频率转换

fre_max=round(fre_max*fs/N);

如果觉得《matlab频谱图幅值意义 时域波形傅里叶分析之后 频率-幅值波形图意义 – MATLAB中文论坛...》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。