如何作振動信號的STFT呢^^?

我是碩二應屆畢業生,教授請我畢業前以labVIEW做出振動信號的STFT顯示(以往我都是用MATLAB寫程式),說明白點就是要我做出來才能畢業.....以下是我目前做的。

 

振動信號的採樣時間為0~8秒,採樣點數32768點,採樣頻率為4096Hz。

1.目前我只會讀取1D的data,所以將振動信號的振幅拿出來讀入,labVIEW做STFT需要將時間讀入嗎? 如何讀2D的data?

2.窗函數要在哪邊設定窗長度及交疊長度呢?

3.如何讓圖形顯示時間(x軸)對應頻率(y軸),或是呈現3D圖形?

4.如何讓時間顯示0~8秒及頻率顯示0~2048Hz呢?

x.txt <= 這是振動信號中的振幅值

signal.txt <= 這是振動信號的data (上面的x為signal的第三行數值)

STFT??.vi <= 這是我目前所做的VI檔

dreampei3333340421.6607638889

不是很了解你的問題,是要下面這樣的圖形嗎?

 

![](upload://derGT3CDeEqkNaerT0oYtFCxGOA.jpeg)

您做的是時域圖,這個我會做了^^

現在是想問說signal的STFT(短時傅立葉轉換)要怎麼用labVIEW呈現,signal經STFT後會是一個三維圖,三維的座標為時間-頻率-振幅。目前我是想呈現時間-頻率-振幅的3維圖及時間-頻率的2維圖這兩種^^

dreampei3333340422.6090393519

抱歉還是無法了解你的需求,如你的程式經STFT轉換後1D(32768)變2D(505x257),你是要顯示257條線x軸用0~8秒或0~2048Hz嗎?

要改變X軸必須使用XY,不可使用Waveform.

這邊我有找到一個範例,程序執行後再按右下角的STFT,然後在右上角那張圖就是時間-頻率圖,看這個範例您應該就會懂我在說什麼了^^

此範例的Diagram是用模擬信號輸入,我有試著把實際信號弄進去,但是弄不出來,他的Diagram好複雜....

sig_proc.llb <= 範例檔案

![](upload://mw94jjTdbuY9qTl1ghULKtunXV7.jpeg)

我先針對第3,4項問題,提出建議.

STFT.vi

![](upload://moYMAnib9tEfICJLRO5HeXwzZAw.jpeg)

![](upload://xWtozHl0yd8GV17SbEokGFApcLS.jpeg)

你是要得到這樣的結果嗎?

範例中只有秒數與點數,8秒,4096Hz共32768點的資料對此範例來說無法執行.只能執行8秒,4096點,也就是512Hz

程式碼中兩個紅色的部位是修改的部份.

 

 

![](upload://ip7E5FJc5Bk6QXwdLN8lfudPHcw.jpeg)

![](upload://o7D58VXSs1aJfD5YIduWugK3x1o.jpeg)

 

DonWang40423.4314351852

改了一個3D版, 看看吧...

![](upload://bqmzUwvudcnW9P2HM4BWDwzH0pd.png)

STFT 3D 85.vi

STFT 3D 86.vi