色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Python軸承故障診斷—短時傅里葉變換STFT簡析

冬至子 ? 來源:建模先鋒 ? 作者:小蝸愛建模 ? 2023-12-06 18:13 ? 次閱讀

1 短時傅里葉變換STFT原理介紹

1.1 傅里葉變換的本質

傅里葉變換的基本思想:

  • 信號分解成一系列不同頻率的連續正弦波的疊加;
  • 或者說,將信號從時間域轉換到頻率域。

圖片

由于傅里葉變換是對整個信號進行變換,將整個信號從時域轉換到頻域,得到一個整體的頻譜;丟掉了時間信息,無法根據傅立葉變換的結果判斷一個特定信號在什么時候發生;所以傅里葉變換缺乏時頻分析能力、多分辨率分析能力,難以分析非平穩信號。

1.2 STFT概述

短時傅里葉變換(Short-Time Fourier Transform,STFT)是一種將信號分解為時域和頻域信息的時頻分析方法。它通過將信號分成短時段,并在每個短時段上應用傅里葉變換來捕捉信號的瞬時頻率。即采用中心位于時間α的時間窗g(t-α)在時域信號上滑動,在時間窗g(t-α)限定的范圍內進行傅里葉變換,這樣就使短時傅里葉變換具有了時間和頻率的局部化能力,兼顧了時間和頻率的分析[1]。

  • 使用窄窗,時間分辨率提高而頻率分辨率降低;
  • 使用寬窗,頻率分辨率提高而時間分辨率降低。

圖片

比如用利用高斯窗STFT對非平穩信號進行分析:

圖片

1.3 STFT的原理和過程

1.3.1 時間分割

在短時傅里葉變換(STFT)中,首先將信號分割成短時段。這個過程通常通過使用窗口函數來實現,窗口函數是一個在有限時間內非零,而在其他時間上為零的函數。常見的窗口函數有矩形窗、漢明窗、漢寧窗等。通過將窗口函數應用于信號,可以將信號分成許多短時段。

1.3.2 傅里葉變換

對于每個短時段,都會進行傅里葉變換。傅里葉變換是一種將信號從時域(時間域)轉換為頻域(頻率域)的方法。在這個上下文中,它用于分析每個短時段內信號的頻率成分。傅里葉變換將信號表示為不同頻率的正弦和余弦函數的組合。

1.3.3 時頻圖:

將每個短時段的傅里葉變換結果排列成一個矩陣,構成了時頻圖。時頻圖的橫軸表示時間,縱軸表示頻率,而每個點的強度表示對應頻率在對應時刻的幅度。時頻圖提供了一種直觀的方式來觀察信號在時間和頻率上的變化。

圖片

1.4 公式表示

STFT的數學表達式如下:

圖片

其中,

圖片

2 基于Python的STFT實現與參數對比

在 Python 中,使用 scipy 庫來實現短時傅里葉變換(STFT)

2.1 代碼示例

import numpy as np
import matplotlib.pyplot as plt
from scipy.signal import stft
# 生成三個不同頻率成分的信號
fs = 1000  # 采樣率
t = np.linspace(0, 1, fs, endpoint=False)  # 時間


# 第一個頻率成分
signal1 = np.sin(2 * np.pi * 50 * t)
# 第二個頻率成分
signal2 = np.sin(2 * np.pi * 120 * t)
# 第三個頻率成分
signal3 = np.sin(2 * np.pi * 300 * t)


# 合并三個信號
signal = np.concatenate((signal1, signal2, signal3))


# 進行短時傅里葉變換  
f, t, spectrum = stft(signal, fs, nperseg=100, noverlap=50)
# 繪制時頻圖
plt.pcolormesh(t, f, np.abs(spectrum), shading='gouraud')
plt.title('STFT Magnitude')
plt.ylabel('Frequency [Hz]')
plt.xlabel('Time [sec]')
plt.show()

參數解釋

  • nperseg:表示每個段的長度,即窗口大小
  • noverlap:表示相鄰段的重疊部分
  • f:是頻率數組,表示頻譜的頻率分量
  • t:是時間數組,表示每個時間段的起始時間
  • spectrum:是頻譜矩陣,spectrum[f, t] 表示在頻率 f 處于時間 t 時的頻譜強度

可以使用 np.abs(spectrum) 獲取頻譜的幅度,表示在不同頻率和時間上的信號強度圖片

2.2 參數選擇和對比

2.2.1 nperseg(窗口長度):

  • nperseg 定義了每個時間段內的信號長度,也就是說,它規定了窗口的大小。
  • **較小的 **nperseg 可以提供更高的時間分辨率,因為窗口更短,可以捕捉到信號的更快變化。但頻率分辨率較差。
  • 較大的 nperseg 提供更高的頻率分辨率,但可能失去對信號快速變化的捕捉。
  • 選擇適當的窗口長度要根據信號特性,如頻率變化的速率和信號長度等。

2.2.2 noverlap(重疊長度):

  • noverlap 定義了相鄰時間段之間的重疊部分。
  • **較大的 **noverlap 可以提高時間分辨率,因為相鄰時間段之間有更多的共享信息。但可能導致頻譜圖中的泄漏(leakage)。
  • **較小的 **noverlap 可以提高頻率分辨率,減少泄漏,但時間分辨率可能下降。

2.2.3 選擇策略:

參數的選擇需要考慮到對信號分析的具體需求,平衡時間和頻率分辨率,嘗試不同的 nperseg 和 noverlap 值,觀察結果的變化。

  • 對于 nperseg,選擇較小的值可能需要根據信號的特定頻率內容進行調整。確保窗口足夠短,以捕捉到頻率變化。
  • 對于 noverlap,通常選擇 50% 的重疊是一個常見的起點

2.3 凱斯西儲大學軸承數據的加載

選擇正常信號和 0.021英寸內圈、滾珠、外圈故障信號數據來做對比

第一步,導入包,讀取數據

import numpy as np
from scipy.io import loadmat
import numpy as np
from scipy.signal import stft
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rc("font", family='Microsoft YaHei')


# 讀取MAT文件
data1 = loadmat('0_0.mat')  # 正常信號
data2 = loadmat('21_1.mat') # 0.021英寸 內圈
data3 = loadmat('21_2.mat') # 0.021英寸 滾珠
data4 = loadmat('21_3.mat') # 0.021英寸 外圈
# 注意,讀取出來的data是字典格式,可以通過函數type(data)查看。

第二步,數據集中統一讀取 驅動端加速度數據,取一個長度為1024的信號進行后續觀察和實驗

# DE - drive end accelerometer data 驅動端加速度數據
data_list1 = data1['X097_DE_time'].reshape(-1)
data_list2 = data2['X209_DE_time'].reshape(-1)  
data_list3 = data3['X222_DE_time'].reshape(-1)
data_list4 = data4['X234_DE_time'].reshape(-1)
# 劃窗取值(大多數窗口大小為1024)
data_list1 = data_list1[0:1024]
data_list2 = data_list2[0:1024]
data_list3 = data_list3[0:1024]
data_list4 = data_list4[0:1024]

第三步,進行數據可視化

plt.figure(figsize=(20,10))


plt.subplot(2,2,1)
plt.plot(data_list1)
plt.title('正常')
plt.subplot(2,2,2)
plt.plot(data_list2)
plt.title('內圈')
plt.subplot(2,2,3)
plt.plot(data_list3)
plt.title('滾珠')
plt.subplot(2,2,4)
plt.plot(data_list4)
plt.title('外圈')


plt.show()

圖片

2.4 STFT與參數選擇

2.4.1 基于重疊比例為0.5,選擇內圈數據比較 STFT 的不同尺度:16、32 、64、128

from scipy.signal import stft


# 設置STFT參數
window_size = 32  # 窗口大小
overlap = 0.5  # 重疊比例
# 計算重疊的樣本數
overlap_samples = int(window_size * overlap)
frequencies1, times1, magnitude1 = stft(data_list2, nperseg=window_size, noverlap=overlap_samples)


# 設置STFT參數
window_size = 64  # 窗口大小
overlap = 0.5  # 重疊比例
# 計算重疊的樣本數
overlap_samples = int(window_size * overlap)
frequencies2, times2, magnitude2 = stft(data_list2, nperseg=window_size, noverlap=overlap_samples)


# 設置STFT參數
window_size = 128  # 窗口大小
overlap = 0.5  # 重疊比例
# 計算重疊的樣本數
overlap_samples = int(window_size * overlap)
frequencies3, times3, magnitude3 = stft(data_list2, nperseg=window_size, noverlap=overlap_samples)


# 設置STFT參數
window_size = 256  # 窗口大小
overlap = 0.5  # 重疊比例
# 計算重疊的樣本數
overlap_samples = int(window_size * overlap)
frequencies4, times4, magnitude4 = stft(data_list2, nperseg=window_size, noverlap=overlap_samples

數據可視化

plt.figure(figsize=(20,10), dpi=100)
plt.subplot(2,2,1)
plt.pcolormesh(times1, frequencies1, np.abs(magnitude1), shading='gouraud')
plt.title('尺度 16-內圈')
plt.subplot(2,2,2)
plt.pcolormesh(times2, frequencies2, np.abs(magnitude2), shading='gouraud')
plt.title('尺度 32-內圈')
plt.subplot(2,2,3)
plt.pcolormesh(times3, frequencies3, np.abs(magnitude3), shading='gouraud')
plt.title('尺度 64-內圈')
plt.subplot(2,2,4)
plt.pcolormesh(times4, frequencies4, np.abs(magnitude4), shading='gouraud')
plt.title('尺度 128-內圈')
plt.show()

圖片

對比不同尺度的變化,大尺度有著較高的頻率分辨率,小的尺度有著較高的時間分辨率,要權衡故障的分類辨識度,需要進一步做對比。

2.4.1 根據正常數據和三種故障數據,對比不同尺度的辨識度

圖片

圖片

綜合考慮頻率分辨率和時間分辨率,選擇尺度為32。

3 基于時頻圖像的軸承故障診斷分類

下面以短時傅里葉變換(Short Time Fourier Transform,STFT)作為軸承故障數據的處理方法進行講解:

數據介紹,凱斯西儲大學(CWRU)軸承數據10分類數據集如圖所示圖片

train_set、val_set、test_set 均為按照7:2:1劃分訓練集、驗證集、測試集,最后保存數據

3.1 生成時頻圖像數據集

圖片

如圖所示為生成的時頻圖像數據集

圖片

3.2 定義數據加載器和VGG網絡模型

制作數據標簽,保存數據

圖片

定義VGG網絡模型

圖片

3.3 設置參數,訓練模型

圖片

100個epoch,準確率將近92%,繼續調參可以進一步提高分類準確率.

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 正弦波
    +關注

    關注

    11

    文章

    646

    瀏覽量

    55470
  • python
    +關注

    關注

    56

    文章

    4800

    瀏覽量

    84820
  • 傅里葉變換
    +關注

    關注

    6

    文章

    442

    瀏覽量

    42640
  • STFT
    +關注

    關注

    0

    文章

    11

    瀏覽量

    9277
收藏 人收藏

    評論

    相關推薦

    短時傅里葉變換STFT原理詳解

    傳統傅里葉變換的分析方法大家已經非常熟悉了,特別是快速傅里葉變換(FFT)的高效實現給數字信號處理技術的實時應用創造了條件,從而加速了數字信號處理技術的發展。
    的頭像 發表于 01-07 09:46 ?3004次閱讀
    <b class='flag-5'>短時</b><b class='flag-5'>傅里葉變換</b><b class='flag-5'>STFT</b>原理詳解

    基于labview的軸承故障診斷與健康監測

    畢S做基于labview的軸承故障診斷與健康監測,但是感覺無從下手,沒有實物進行數據采集,想來也只能模擬采集振動信號,但這個振動信號又該如何產生,看網上有凱斯西儲大學軸承數據,但又不知如何利用,,求教各位labview前輩大佬給
    發表于 03-18 23:33

    DSP的滾動軸承實時故障診斷系統設

    。據統計,在使用滾動軸承的旋轉機械中,由于滾動軸承損壞而引起的故障約占30%。由此可見,滾動軸承故障診斷在工程中還是有其重要意義的
    發表于 09-29 16:54

    船舶感應電機軸承故障診斷方法的幾點研究

    特征量其他振動信號所淹沒;基于參數辨識的方法因為需要電機的一些機械及電磁參數,因而不利于故障診斷系統的通用性;瞬時功率分析法和氣隙轉矩分析法均需要船舶感應電機軸承故障診斷系統的研究時采集定子電壓和電流
    發表于 10-21 10:59

    【轉】電力電子電路故障診斷方法

    故障的特征。而電力電子電路中包含故障信息的關鍵點信號通常具有周期性,因此可以用傅里葉變換將時域中的故障波形變換到頻域,以突出
    發表于 03-06 20:35

    基于DSP+MCU的列車滾動軸承故障診斷系統研究

    ,對于列車的安全有著重大的影響。因此,開展列車滾動軸承故障診斷的研究對避免重大事故、促進經濟發展具有相當大的意義。
    發表于 07-09 06:30

    電機軸承故障診斷與分析

    很多工程師都在網上向我咨詢電機軸承故障診斷與分析的問題。面對五花八門的問題,有時候我可以根據一些信息進行判斷,有時候什么信息也沒有,這樣的情況下我的所謂判斷只能是猜測,恐怕距離真相,也十分遙遠。大家
    發表于 09-01 09:01

    基于小波變換故障診斷信號非平穩性分析

    基于小波變換故障診斷信號非平穩性分析 從工程角度,解釋小波變換的實際含義,并將其與傳統的傅里葉變換分析方法作比較,通過比較兩種基函數的時頻窗,顯示
    發表于 02-22 17:08 ?24次下載

    滾動軸承故障診斷的實用技巧

      摘要:本文主要介紹滾動軸承區別于實驗室診斷的生產實用技巧。關鍵詞:滾動軸承、故障診斷、振動分析、實用技巧滾動軸承在設備中的應用非常廣泛,
    發表于 10-29 14:44 ?1614次閱讀

    STFT短時傅里葉變換

    關于短時傅里葉變換的原理及其在通信的應用。
    發表于 05-17 16:41 ?5次下載

    基于HMM的音頻故障診斷平臺實現軸承建模與診斷實驗

    軸承是機械設備中應用最為廣泛的一種通用部件,也是最容易損壞的零件之一,它工作正常與否直接影響整臺機器的性能,因而軸承故障診斷成為重要的研究課題和目前的研究熱點。在軸承
    的頭像 發表于 10-14 10:46 ?4015次閱讀
    基于HMM的音頻<b class='flag-5'>故障診斷</b>平臺實現<b class='flag-5'>軸承</b>建模與<b class='flag-5'>診斷</b>實驗

    時頻分析之短時傅里葉變換STFT資源下載

    時頻分析之短時傅里葉變換STFT資源下載
    發表于 04-26 11:35 ?7次下載

    短時傅里葉變換特點 短時傅里葉變換的意義

    短時傅里葉變換特點 短時傅里葉變換的意義? 短時傅里葉變換(Short-time Fourier
    的頭像 發表于 09-07 16:23 ?2147次閱讀

    短時傅里葉變換和小波變換差別

    短時傅里葉變換和小波變換差別 短時傅里葉變換(short-time Fourier transform,
    的頭像 發表于 09-07 17:04 ?3555次閱讀

    故障診斷python的實驗仿真方法

    基于信號處理的診斷:利用信號處理技術,如傅里葉變換、小波變換等,對采集到的信號進行分析,提取故障特征
    的頭像 發表于 02-21 18:02 ?632次閱讀
    <b class='flag-5'>故障診斷</b>與<b class='flag-5'>python</b>的實驗仿真方法
    主站蜘蛛池模板: 欧美日韩一区不卡在线观看| 国产一区二区三区四区五在线观看 | videossexo乌克兰| 亚洲综合色五月久久婷婷| 丝袜美女被艹| 肉动漫无码无删减在线观看| 情浓野战台湾三级| 青青青国产依人精品视频| 青草在线观看视频| 且试天下芒果免费观看| 啪啪漫画无遮挡全彩h网站| 欧美高清vivoesond在线播放| 暖暖 视频 免费 高清 在线观看| 免费无码国产欧美久久18| 免费可以看黄的视频s色| 美女脱了内裤张开腿让男人桶到爽| 久久久免费观看| 久久综合九色| 男女一边摸一边做羞羞的事情免费 | 4455永久在线毛片观看| 专干老肥熟女视频网站300部| 一边摸一边桶一边脱免费| 亚洲一区免费香蕉在线| 成人在线视频播放| 女人高潮被爽到呻吟在线观看| GOGOGO高清在线播放免费| 秋霞在线观看视频一区二区三区| 超碰超碰视频在线观看| 双腿被绑成M型调教PLAY照片| 男女全黄h全肉细节文| 老师破女学生特级毛片| 啪啪激情婷婷久久婷婷色五月| 日韩精品免费在线观看| 小776论坛| 诱受H嗯啊巨肉舍友1V1| 99热精品在线av播放| 抽插的日日液液H| 国产一卡2卡3卡4卡孕妇网站| 久久久精品日本一区二区三区| 暖暖日本在线手机免费完整版| 亲胸揉胸膜下刺激视频在线观看|