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