matlab STFT从时频图找异常噪声的频率

85 篇文章 15 订阅
56 篇文章 20 订阅
%%%%%%傅里叶变换/逆变换/短时傅里叶变换%%%%%%


[y,Fs]=wavread('Noise.wav'); %读出信号,采样率和采样位数。
%sound(y,Fs);
y=y(:,1); %我这里假设你的声音是双声道,我只取单声道作分析,如果你想分析另外一个声道,请改成y=y(:,2)
figure(1)
sigLength=length(y); 
%
Nshow=sigLength/20; %显示的点数(频率段,因频谱对称只需一半内)
%
t=(0:length(y)-1)/Fs; %计算时间轴
subplot(3,1,1);plot(t,y);xlabel('Time(s)');%在第一个窗口画波形
grid on;


n=0:sigLength-1;
Y= fft(y,length(y)); %在sigLength这个有限区间内做快速傅立叶变换 
%mag=abs(Y);
f=Fs*n/sigLength;
subplot(3,1,2);plot(f(1:Nshow),abs(Y(1:Nshow)));
xlabel('Frequency(Hz)'); 
%在第一个窗口画率谱, 
grid on;


subplot(3,1,3);
xifft=ifft(Y);
%sound(real(xifft),Fs);
plot(t,xifft);xlabel('Time(s)')
grid on;


figure(2)
Nw=200          %窗函数长 window length
L=Nw/2;         %窗函数每次移动的样点数
Ts=round((sigLength-Nw)/L)+1;     %计算把数据y共分成多少段
nfft=512*5;        % FFT的长度
TF=zeros(Ts,nfft/20);  %将存放三维图谱,先清零 /20-add 只显示有用的频率
for i=1:Ts
    xw=y((i-1)*L+1:i*L+L);   %取一段数据
    temp=fft(xw,nfft);       % FFT变换
    %temp=fftshift(temp);     %频谱以0频为中心
    TF(i,:)=temp(1:nfft/20)';            %把谱图存放在TF中代表TF矩阵中的第i行 /20--add
end
fn=(1:nfft/20)*Fs/nfft; %/20--add 只显示一半的点
tn=(1:Ts)*Nw/2/Fs;
[T,F]=meshgrid(tn,fn);
mesh(T,F,abs(TF.'));  %三维绘图
axis tight;
title('三维时频图'); 
ylabel('Frequency(Hz)'); 
xlabel('Time(s)'); 

grid on;

用GoldWave截取出现异常噪声(变速箱啸叫)的部分音频,先用FFT及IFFT试试效果见下图:

 

 

再用STFT求音频的时频图,见下图。




下图为振动测试对应的时频图(上述截取的音频对应的时段约为27.7S-30S,对应的异常振动的频率为700HZ左右),进一步得到验证。另外,当发动机转速从1100-2000rpm,可以算出变速箱行星齿轮的啮合频率为400HZ-730HZ,从而可以推断:该高速啸叫是由于变速箱行星齿轮啮合产生。另外实际跟车做试验时,当直接档时,行星齿轮不工作,没有啸叫声,只要行星齿轮工作,并加载加速时,啸叫声立即出现。


### 回答1: 基于matlab的雷达时频图像分类可以通过以下步骤来实现: 1. 数据采集:首先,需要使用雷达设备进行数据采集。将采集到的雷达信号保存为数据文件格式。 2. 数据预处理:对采集到的雷达信号进行预处理。可以使用matlab中的信号处理工具箱进行滤波、去噪等操作,以提高数据质量。 3. 特征提取:从预处理后的雷达信号中提取特征。可以使用多种特征提取算法,如短时傅里叶变换(STFT)、小波变换等。这些特征能够反映出不同对象或场景的时频特性。 4. 特征选择:根据实际需求和分类任务,从提取到的特征中选择最具有代表性的特征子集。可以使用特征选择算法,如相关性分析、方差分析等。 5. 分类器设计:选择适当的分类器来对特征进行分类。常用的分类器包括支持向量机(SVM)、k近邻(k-NN)、决策树等。根据特征的性质和分类任务的要求,选择最合适的分类算法。 6. 训练与测试:使用标记好的样本数据进行分类器的训练。将数据集划分为训练集和测试集,训练分类器并进行性能评估。 7. 分类结果评估:对测试集进行分类,并对分类结果进行评估。可以使用混淆矩阵、准确率、召回率、F1值等指标来评价分类器的性能。 8. 模型优化:根据评估结果,对分类器进行参数调优,以提高分类准确率和性能。 基于matlab的雷达时频图像分类可以利用matlab强大的信号处理和机器学习工具箱来完成,能够实现对雷达信号的自动分类和识别,具有较高的实时性和准确性。 ### 回答2: 使用Matlab进行雷达时频图像分类的方法如下: 1. 数据预处理:首先,将雷达采集到的时频图像进行预处理。可以考虑去噪、平滑、调整亮度对比度等操作,以减少噪声影响和图像质量的差异。 2. 特征提取:从预处理后的时频图像中提取特征。常用的特征包括时频特征(如瞬时频率、调制特征等)、形状特征(如轮廓、面积等)、纹理特征(如灰度共生矩阵、小波纹理等)等。可以使用Matlab提供的各种图像处理和特征提取函数来实现。 3. 特征选择:选择对分类任务有用的特征。可以采用统计方法(如相关系数、特征方差等)或者机器学习方法(如基于分类器的特征选择算法)来选择最优的特征组合。 4. 训练分类器:将提取到的特征作为输入,使用Matlab中的分类算法训练分类器模型。常用的分类算法包括支持向量机、k近邻、朴素贝叶斯等。可以使用Matlab提供的机器学习和数据挖掘工具箱来实现。 5. 模型评估:使用测试集对训练好的分类器模型进行评估。可以计算分类准确率、错误率、混淆矩阵等指标来评估分类器的性能。 6. 模型优化:根据评估结果,对分类器模型进行调优。可以尝试不同的特征组合、分类算法参数等来提高分类准确率和性能。 最后,将得到的优化模型应用于新的雷达时频图像进行分类预测。这种基于Matlab的雷达时频图像分类方法可以应用于目标识别、物体检测等雷达应用领域。 ### 回答3: 基于Matlab的雷达时频图像分类是指使用Matlab软件对雷达生成的时频图像进行分类和识别的过程。雷达时频图像是指将雷达接收到的信号经过特定算法处理后得到的图像,可以用于分析和识别目标物体的特征信息。 首先,通过雷达接收到的信号数据,利用Matlab中的信号处理工具箱对信号进行预处理,包括信号滤波、解调、去除杂波干扰等操作,得到干净的时频图像。 然后,利用Matlab中的图像处理工具箱对时频图像进行特征提取,提取出图像的频谱特征、时域特征、空域特征等。可以使用常见的特征提取方法,如小波变换、傅里叶变换、时频分析等。 接下来,使用Matlab中的统计分析工具箱和机器学习工具箱对提取到的特征进行分类和识别。可以采用支持向量机、神经网络、决策树、贝叶斯分类器等常见的分类算法。通过将已知类别的样本数据输入训练模型,得到一个能够将时频图像分类的分类器。 最后,利用训练好的分类器对未知类别的时频图像进行分类和识别。将未知图像的特征输入分类器,通过分类器给出的分类结果确定该时频图像所属的类别。 基于Matlab的雷达时频图像分类具有灵活性和高效性,Matlab提供了丰富的工具箱和函数库,能够快速地实现信号处理、图像处理和机器学习等功能,为雷达图像的分类和识别提供了强大的支持。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值