你用MATLAB解決過哪些抓狂的問題
來自專欄 MATLAB如何13 人贊了文章
事實上,今天是想分享最近碰到的一件比較懊惱的問題。
作為汽車行業的系統工程師,平時的工作內容除了系統需求的分析與系統架構的設計之外,還有一個比較重要的任務就是issue的處理以及測試數據的分析。
在很長一段時間以來,面對形形色色的issue,手頭上有上百個INCA的測試結果。
前不久恰巧接到一個issue,而這個問題在半年前的測試文件中出現過。於是項目組內部希望能夠將這次的現象與先前的處理結果做一次對比。
那麼,問題就來了,我怎麼從好幾百個測試文件中給你找到那個唯一的目標文件。難道我要通過MDA逐一打開測試文件進行查看么?
而整個過程中,最令人頭疼的是,不同的工程師,在測試之後,對測試文件的命名習慣是不盡相同的。甚至有時候由於測試任務比較緊迫,會出現序號命名的形式。
我作為測試數據的接收者,我沒有辦法在每次收到文件之後進行備註解釋,從時間效率上而言,這是一件不大現實的操作。
同時,每一個測試文件中所涵蓋的特性不單單只有一個。你是不可能註明所有的測試特性,這個文件是關於NEDC測試,這個測試是否OK,這個測試出現過壓故障,這個測試扭矩請求超過260Nm,這個測試車速出現抖動,這個測試後橋結合。。。我的天,這是要給文件名寫一篇論文么?
針對這個現象,我曾嘗試與周圍的同事探討過,目前是否有一款dat測試文件的管理工具,能夠快速過濾出符合條件的測試文件。然而,答案是否定的。作為妥協方案,他們認為可以嘗試做一個Excel的資料庫,對測試文件進行備註管理。
但是,我不覺得這是一個很明智的解決方案。
於是,HaoMeasure這款工具誕生了。
但是,由於這篇文章寫的比較倉促,HaoMeasure目前還是處於draft的階段。正如你們所看到的,工具界面的設計目前看來還是很糟糕的,同時僅僅只是實現了基礎功能,還有幾項功能需要時間去實現。
而HaoMeasure這款工具,我計劃集成在建模工具中的。最終的打算,是希望這個GUI能夠成為一款適用於汽車行業工程服務的小工具。只是初心,需要時間的考驗。
接下來我將通過一個動圖展示一下這個工具。
這個動圖所展示的操作是,從三個dat測試文件中過濾出轉速超過8000轉的測試文件。整個過程所涵蓋的功能細節包括:
- 多文件選取
- 信號名的模糊過濾
- 信號名選取
- 信號值範圍選取
- 條件過濾
- 信號值plot顯示
上面的動圖僅僅只是其中一個例子,接下來將會從各個細節更加詳細的描述這個工具。
01. 信號名的過濾
在載入所有的dat文件之後,信號名的list中將會顯示所有dat文件中出現的信號名。
HaoMeasure支持多個關鍵詞模糊。就拿搜索故障信號為例,下面這個動圖展示了如何快速過濾出VCU的故障信號。
相比起以前慣性的通過按鈕去調動過濾的動作,這個工具中所有edit欄中事件的調用都是採用回車激活的。
02. 信號值範圍的選取
這個工具事實上才是HaoMeasure主要功能的發起點。應用的情景有許多,比如
1) 過濾出BMS產生故障的測試文件
2) 過濾出扭矩請求高於200Nm的測試文件
3) 過濾出BMS電壓低於350V的測試文件
類似的需求還有許多,可以通過對信號值範圍的設定,並且能夠進行不同條件的組合搜索,過濾出最終的目標文件
03. dat文件的讀取
讀取dat文件這項功能是整個工具最重要的一環。
事實上,這項功能的代碼並不是我寫的。在寫這個工具之前,我曾在網上去查找學習如何讀取INCA的dat文件,後來在MATLAB的官網上找到一份材料,特別有用。有興趣的朋友,可以在公眾號後台回復「測試讀取」獲取下載鏈接,去學習其中的源代碼。
在介紹完HaoMeasure之後,回歸到問題的本身上來,除了自己寫一個工具之外,還有許多很簡單的辦法可以使用。比如,可以通過一個For循環例遍所有dat文件,通過MATLAB官網上mdfimport的函數依次讀取dat文件中的信號,進行範圍篩選。
相比起寫一個GUI,這種方法在時間效率上而言應該是最高效的做法。當然,正如我在上一篇文章中提到的,我個人更傾向於寫一個GUI,「我為什麼寫GUI」。
最後祝大家,周末愉快
以上
如果你有興趣,歡迎關注我的微信公眾號「打浦橋程序員」,謝謝
推薦閱讀:
※ROS技術點滴 —— Matlab中的ROS
※助力國賽 | 第5彈 遺傳演算法
※MATLAB/Simulink 新特性介紹
※MATLAB mpctoolbox學習筆記
※助力國賽 | 第3彈 規劃問題(MATLAB版)