%对单一的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中文论坛...》对你有帮助,请点赞、收藏,并留下你的观点哦!