張青虎,高貴福,龐勇
(北京機電工程研究所,北京 100074)
在工程中經常使用MATLAB 進行隨機振動數據時域和頻域分析,利用MATLAB 繪圖功能將振動時域數據曲線、振動功率譜密度曲線等通過圖形窗口直觀顯示,并在圖形窗口顯示數據的測量工況、通道代號、通道名稱、數據說明等相關數據描述參數。
隨機振動數據本質上是數字信號的一種,可利用MATLAB 數字信號處理工具箱和函數,根據具體需要編制程序進行處理。MATLAB 軟件的幫助文檔對數字信號處理工具箱和函數有詳細的說明,可供工程技術人員參考;也有大量相關教材和書籍[1]可供參閱。各行業的工程技術人員已經總結了利用MATLAB 進行隨機振動數據分析的相關經驗和程序[2]。
對于少量數據、通道數不多的情況,可以直接在MATLAB 程序代碼中寫入需要顯示的數據描述參數。對于大量的、多通道振動數據,人工輸入這類數據描述參數的工作量很大,效率很低,而且程序代碼很臃腫、可讀性差、容易出錯。
本文介紹了一種方法,利用表格軟件快速高效的輸入編輯功能,將相關數據描述參數保存為表格文件,在MATLAB 數據分析程序中利用專用函數,自動讀取表格文件,獲取相關數據描述參數并在圖形窗口顯示,提高了隨機振動數據分析工作的效率。
該方法可廣泛應用于裝備環境工程、振動工程、測量與數據處理等專業領域的隨機振動數據及類似數據分析,提高數據分析及數據管理[5]的工作質量,減少大量數據處理過程中的人因錯誤率。
隨機振動原始數據,是隨機振動加速度隨時間變化過程的時域數據,由振動傳感器測量,經數據采集系統記錄和保存,其保存文件格式一般有mat、txt、dat、csv、xls(含xlsx)等。
在MATLAB 中可以通過Import Data 工具手動導入數據文件,也可以通過dlmread、xlsread 等函數自動讀取數據文件。
load(‘*.mat’)用于讀取mat 格式的數據文件。 mat格式是MATLAB 自身的數據文件存儲格式,可直接讀取使用。
data = dlmread(‘*.txt’,’’,1,0) 用于讀取基于ASCII 碼的txt、dat 格式的數據文件。需要設置參數跳過數據頭部的表頭、文字說明等非數據部分。
data = xlsread(‘*.xlsx’,1) 用于讀取csv、 xls(含xlsx)等表格格式的數據文件。需要設置讀取頁數和范圍。
dlmread、xlsread 讀取數據文件后,生成數據矩陣用于后續分析和繪圖,同時保存為mat 格式文件方便再次使用。
對隨機振動數據的時域處理,主要是對數據進行預處理,包括數據有效性的確認、零漂處理、濾波、異常數據剔除等。
對隨機振動數據的頻域處理,選取一定時間段的時域數據,計算其功率譜密度(PSD)及總均方根值(RMS)??捎胮welch 函數計算功率譜密度,用通用公式計算總均方根值(RMS)。
計算其功率譜密度(PSD)一般用pwelch 函數,調用格式如下:
其中輸入參數: x-時域信號列向量,是前述數據data 經預處理后按時間范圍截取得到的數據;window-窗函數;noverlap-重疊率;nfft-FFT 變換點數;fs-采樣頻率;
輸出參數: Pxx -PSD 列向量,f-頻率列向量;
計算總均方根值(RMS)函數如下:
其中:pxxc 為Pxx 在給定頻率上下限范圍內的值。
將功率譜密度(PSD)及總均方根值(RMS)分析結果生成數據矩陣用于后續分析和繪圖,同時保存為mat格式文件方便再次使用。
根據環境數據信息化管理的要求,將原始數據和分析結果數據進行標準化存儲。
利用MATLAB 繪圖功能將時域數據曲線、功率譜密度曲線通過圖形窗口直觀顯示,并在圖形窗口顯示數據的測量工況、通道代號、通道名稱、數據說明等相關數據描述參數。
時域數據用線性坐標顯示,可用plot 函數繪圖;功率譜密度屬于頻域數據,需要用對數坐標顯示,可用loglog 函數繪圖。
通過MATLAB 的圖形控制函數在圖形窗口顯示數據描述參數。例如:
xlabel(‘頻率(Hz)')顯示繪圖橫軸名稱;
ylabel(‘PSD(g^2/Hz)’)顯示繪圖縱軸名稱;
title(‘Title’)繪制圖題;
legend(‘通道功率譜xxx','參考譜xxx')繪制數據曲線說明圖例;
xlim([5 500])設置橫軸坐標范圍;
ylim([1e-12 1e0])設置縱軸坐標范圍;
text(‘譜峰值1 xxxx’)在繪圖制定位置添加文字說明;
最終繪圖顯示效果如圖1 所示。
圖1 隨機振動PSD 圖和時域圖
為實現圖形窗口顯示數據描述參數的功能,可以編寫MATLAB 代碼利用圖形控制函數來實現,也可以在繪圖后手動編輯繪圖窗口來添加。對于少量數據、通道數不多的情況,這兩種方法具有簡單、靈活的優勢;而對于大量的、多通道振動數據的繪圖顯示,則需要尋求更加快速高效的方法。
對于少量數據、通道數不多的情況,可以直接在MATLAB 程序代碼中寫入需要顯示的數據描述參數,甚至可以可以在繪圖后手動編輯繪圖窗口來添加。對于大量的、多通道振動數據,手動添加肯定是不可取的,而直接將數據描述參數寫入程序代碼來實現輸入和顯示,則工作量很大,效率很低,而且程序代碼大量重復、臃腫低效、可讀性差、容易出錯。
如圖2 所示,需要同時繪制9 個(實際工程中可多達幾十個以上)測量通道的振動功率譜密度(PSD)曲線,以及一條振動參考譜曲線。不指定曲線名稱時,圖例中每條曲線被自動標識為data1、data2、data3……data9,可讀性差。
圖2 多通道匯總PSD 圖
工程中測量得到的振動數據,除了每條數據中通道數量多,數據條數也很多。通常會在多種工況、多次試驗中進行振動測量,每個工況、每次試驗中也可能進行多次測量,或者將測量數據分成多段分別處理??赡苄枰幚頂凳畻l甚至數百條振動數據,每條數據中的通道名稱和順序是一致的,但是為了方便區分不同工況、試驗、時段的數據,還需要在繪圖中標識出每條數據的相關描述參數。通常將圖2 中的圖題即Title 替換為數據的工況、試驗、時段等相關描述參數。
在繪圖中手動添加需要的通道名稱、工況、試驗、時段等信息,費時費力,效率很低;而直接將數據描述參數寫入程序代碼,將導致代碼臃腫、可讀性差;而且MATLAB 代碼編輯器并不擅長編輯大量字符串類型的數據描述參數,遠不如專業文字或表格編輯器軟件功能完善、方便高效。
因此,對于大量的、多通道振動數據的繪圖顯示,則需要尋求更加快速高效的方法。
經過大量振動數據分析的實踐嘗試和工程應用,形成了一種方法,利用表格軟件快速高效的輸入編輯功能,將相關數據描述參數保存為表格文件,在MATLAB 數據分析程序中利用專用函數,自動讀取表格文件,獲取相關數據描述參數并在圖形窗口顯示。
利用表格軟件快速高效的輸入編輯功能,將相關數據描述參數保存為表格文件。
Excel 是一種用于電子表格創建和編輯的專業軟件,功能豐富,應用廣泛,也可以方便地與MATLAB 軟件實現交互。因此采用Excel 將相關數據描述參數保存為表格文件。
圖3 為包含測量通道編號、分析通道編號、通達代號、通道名稱等數據描述參數的表格文件。圖4 為包含每條振動數據的工況、試驗、時段等數據描述參數的表格文件。Excel 中自動擴展、自動填充等豐富的功能,便于快速高效的生成和編輯數據描述參數表格文件。將生成的表格文件以文件名“chnname.xlsx” 保存,上述兩個表格分別為該文件中的Sheet1、Sheet2。
圖3 數據描述參數表格文件(通道)
圖4 數據描述參數表格文件(工況)
在MATLAB 數據分析程序中利用相關函數,自動讀取表格文件,獲取相關數據描述參數。
在振動數據分析程序中,使用xlsread 函數讀取excel表格內容,其調用格式如下:
其中輸入參數:filename-表格文件名稱,sheet-表格文件中的頁號(sheet);
輸出參數:num-表格文件中的數字,txt-表格文件中的文字內容,raw-表格文件中的所有內容。
分別讀取之前創建的表格文件 “chnname.xlsx” 中的Sheet1、Sheet2,從表格中約定的列讀取信息,并按照通道序號生成通道名稱數組CHNNAME,按照工況序號生成工況名稱數組CASENAME 等,供下一步繪圖顯示使用。
將相關數據描述參數在圖形窗口顯示。
在振動分析和繪圖程序中,按照通道序號讀取通道名稱數組CHNNAME 中對應的通道名稱變量chnname,按照工況序號讀取工況名稱數組中的CASENAME 中對應的工況名稱變量CaseName,調用title、legend、text 等圖形控制函數在圖形窗口的相應位置顯示。
顯示數據描述參數的多通道匯總時域圖顯示效果見圖5,多通道匯總PSD 圖顯示效果見圖6。
圖5 顯示數據描述參數的多通道匯總時域圖
圖6 顯示數據描述參數的多通道匯總PSD 圖
本文利用表格軟件快速高效的輸入編輯功能,將相關數據描述參數保存為表格文件,在MATLAB 數據分析程序中利用專用函數,自動讀取表格文件,獲取相關數據描述參數并在圖形窗口顯示,提高了隨機振動數據分析工作的效率。
該方法可廣泛應用于裝備環境工程、振動工程、測量與數據處理等專業領域的隨機振動數據及類似數據分析,提高數據分析及數據管理[5]的工作質量,減少大量數據處理過程中的人因錯誤率。