matlab - 如何在MATLAB中实现阶次分析

标签 matlab signal-processing

我有一个代表马达声音的音频文件。我一直在读到“正常”fft 不能提供有关机器的有值(value)分析,我应该使用阶次分析来描述机器的“行为”。我在增加速度的同时记录了它的声音,然后将记录放在一起并计算了它的频谱图。下面是代码:

%% read the Audio file and plot its 
clear, clc , clf;
M = 512;
k =1 
data= 0 ;
   for i =100:5:180
    fileName =['A10_uSp0_Mic100k_2nd_V_',int2str(i),'.wav']
    [x(:,k),Fs] = audioread(fileName);
    k = k+1 ;
end
for i = 1:length(x(1,:))
    data = [data(:);x(:,i)];
end
 k = length(x(1,:));
    while k ~= 2
   data = [data(:);x(:,k)];
   k = k -1;
    end
spectrogram(data,hamming(M),M/2,0:20:4000,Fs,'yaxis');

结果如下:

Spectogram

如您所见,我在每个时间点将机器的速度提高了 5。我的问题是如何计算这个系统的订单分析!? 非常感谢您的帮助!

最佳答案

这更像是一个科学问题,而不是关于编程的问题。可以使用傅立叶变换进行阶次分析。您需要做的就是寻找输出中的对角线,即噪声频率与转速成正比的地方。

在您的示例图像中,有这样一个顺序,从时间(速度)0 的 2000 Hz 到时间(速度)150 的 4000 Hz。之后它似乎向下反射,可能是采样不足的产物。

那么是哪个顺序呢?为此,您需要知道您似乎不知道的电机转速。还有另一个较弱的顺序,从 3000 Hz 开始,时间(速度)0。使用两个或更多可见顺序,您可能能够推断出电机的转速(通过要求频率是原始速度的整数倍) .

无论如何,除了更高的频率分辨率外,代码可能不需要更改。

关于matlab - 如何在MATLAB中实现阶次分析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22894679/

相关文章:

抽象方法的 MATLAB 帮助内容

matlab - 如何在Matlab中导入pts文件

performance - 将大量常量和工作区变量传递给 fsolve 目标函数的最佳方法是什么?

matlab - 使用 getpts 获取选定的点

audio - 调频(FM)

signal-processing - 符合 OpenCL 的 DSP

c++ - 在 DSP TMS320C5509 上编写分段线性函数的最佳方法

matlab - Matlab 中句柄为 0 的对象

matlab - 在 Matlab 中对 Signal 进行导数运算

c++ - 为噪声信号寻找实时可靠和精确的峰值检测算法