我是碩二應屆畢業生,教授請我畢業前以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
不是很了解你的問題,是要下面這樣的圖形嗎?

您做的是時域圖,這個我會做了^^
現在是想問說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 <= 範例檔案

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


你是要得到這樣的結果嗎?
範例中只有秒數與點數,8秒,4096Hz共32768點的資料對此範例來說無法執行.只能執行8秒,4096點,也就是512Hz
程式碼中兩個紅色的部位是修改的部份.


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

STFT 3D 85.vi
STFT 3D 86.vi