【问题标题】:How to implement the order analysis in MATLAB如何在MATLAB中实现阶次分析
【发布时间】:2014-04-06 13:28:56
【问题描述】:

我有一个代表马达声音的音频文件。我一直在读到“正常” fft 不能对机器进行有价值的分析,我应该使用 订单分析 来描述机器的“行为”。我在增加它的速度的同时记录了它的声音,我把这些记录放在一起并计算了它的频谱图。这是代码:

%% 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');

结果如下:

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

【问题讨论】:

  • 要进行阶次分析,您通常需要知道机器的转速。您是否在电机上安装了转速计或每转一圈的传感器,可以同时记录振动信号?
  • 不,我没有,我只能听机器
  • 测量时你控制速度,还是只取你得到的?速度有多稳定
  • 好吧,我可以控制它,假设我知道最小和最大速度,我可以测量从最小到最大 rpm 产生的声音!
  • 如果你想从 Matlab 用户那里得到更多帮助,如果你能具体说出你想要计算的内容,那将会很有帮助。然后我们可以帮助您实现这一目标。

标签: matlab signal-processing


【解决方案1】:

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

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

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

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

【讨论】:

  • 首先感谢您的回答,但是您推断电机的转速是什么意思,您将如何做到这一点?
  • 这个想法是噪声频率与电机的转速成正比。对于一条你不知道的对角线:可能是电机转速的两倍,可能是电机转速的五倍。但它是一个整数。但是,对于两条或多条对角线,您会得到许多方程式,假设比例因子为整数,您可以求解这些方程式。
  • @Engine 我对你的问题很感兴趣,这就是我悬赏的原因。现在,正如一些人所指出的,问题更多是关于信号处理而不是编码,考虑将其发布到 dsp 站点,或带有“acoustics”标签的物理站点。
  • @Jigg 非常感谢,我已经在dsp上发布了问题,它没有带来任何东西,再次感谢!
  • @Trilarion 我仍然不明白如何根据我在频谱图中看到的线条获得 rpm 或机器状态,请您举个例子吗?
猜你喜欢
  • 2016-03-15
  • 1970-01-01
  • 1970-01-01
  • 2022-11-15
  • 2021-11-14
  • 1970-01-01
  • 1970-01-01
  • 2012-06-28
  • 1970-01-01
相关资源
最近更新 更多