標籤:

Matlab如何製作屬於自己的縮寫詞典

不知覺中,公眾號的關注者即將到達2000,不過閱讀量依舊慘淡,以至於我跟媳婦說到我關注量時,她一度以為我買粉了。

今天的帖子,主要想分享兩件事,其中之一就是抽獎的事,而另一件事,就是一如既往分享一個我最近剛完成的一個小工具。

每當跨入一個全新的領域、課題亦或是新的公司,總是難以避免要了解一下之前的項目,閱讀過往的文檔。而在這個過程中,不得不面對的一個問題就是,面對已經日漸完善的命名系統,各個縮寫都代表什麼意思。比如BMS (Battery Management System) 表示電池系統,VCU (Vehicle

Control Unit) 表示整車控制器,等等。而上述所列舉的例子,還較為簡單,從事汽車行業的人,大都是可以理解的。不過誰能保證自己能夠認全所有的縮寫。如果有人問我,IGBT的全稱是什麼。我最多也只能故作淡定的告訴他,「這個問題,你去百度一下就知道了」。

這周的片刻閑暇,基於縮寫搜索的需求,我寫了一個小工具,為其命名為「Abbreviation Tool」,也就是個人的縮寫詞典。先來看一下這個工具長什麼樣以及操作動圖。

在載入完縮寫資料庫之後,在輸入欄中輸入你想搜索的縮寫,輸入欄右側就會顯示與之相對應的縮寫全稱。以下方動圖為例,比如輸入HV,右側則顯示High Voltage,表示高壓。

那麼就會出現一個問題,如果所搜索的縮寫,並未曾在資料庫中記錄過,這該如何處理。對此,這個工具的處理辦法是,在有道詞典中對這個縮寫進行二次搜索。以下方動圖為例,在輸入欄中輸入BMS,右側並未顯示任何意思。此時彈出有道詞典的界面,並且顯示BMS的幾種含義。

心細的朋友可能會發現,在上面這個動圖例子中,輸入欄下方的另一個輸入欄同時也更新為BMS。這個功能是用來更新縮寫資料庫的,最下方的左側輸入欄為縮寫,右側則寫入該縮寫相對應的意思。然後點擊add new word按鈕。那麼在下一次搜索中,就會直接顯示這個縮寫的含義,而不會再去調用有道詞典。以下面這個動圖為例。

以上就是整個工具的幾點功能,整個工具的編寫原理十分簡單,接下來就簡要描述一下主要的編程邏輯。

首先是工具的界面設計,這一塊就不再敘述,畢竟在上一篇帖子中,我已經介紹了兩種製作GUI界面的方法,詳情參考該貼「Matlab如何製作GUI」。

縮寫資料庫的載入這個功能,資料庫是以excel表格的形式進行管理的。載入這個按鈕,只是讀取了excel表格。

搜索按鈕的邏輯是,讀取縮寫輸入框中的字元串,再與資料庫中的縮寫單元進行匹配,如果有配對的縮寫,將會在右側顯示相對應的縮寫意思。如果沒有配對,那麼就開啟有道詞典,並在有道詞典的輸入欄中寫入所查詢的縮寫。同時,在最下方左側的輸入欄中更新這個未被資料庫所收錄的縮寫。

添加新詞按鈕的邏輯與載入資料庫的邏輯相對應,讀取新縮寫輸入欄的字元串以及縮寫含義輸入欄中的字元串,然後再通過xlswrite函數將新縮寫數據寫入excel資料庫中。在這裡可以添加一個過濾功能,如果兩個輸入欄中,任一輸入欄字元串未空,那麼add new word按鈕不激活,這樣可以進一步對excel進行保護,防止混亂寫入數據。

在整個工具使用過程中,不得不提的一點是,有道詞典的二次搜索,其實沒有必要。不過,即便如此,實現這個功能的過程還是挺有意思的。有興趣的朋友不妨嘗試一下,如何實現這個功能。這個方法在之前的幾篇中均有介紹過,不知道你們是否已經猜到了。

工具分享就到此為止,接下來聊一聊抽獎的事情。非常感謝大家的關注以及支持,同時對私信問我問題但沒來得及回復的朋友說一聲抱歉。公眾號這個系統有一個問題,就是超過48小時,就沒辦法回復私信。所以,如果有問題想請教的朋友,可以考慮一下給我發郵件,郵件地址是」DPQ_Engineer@126.com「。

此次抽獎的規則是,在這篇帖子下方留言的朋友,我將會發一個序號。然後在下一篇帖子中,我將會以動圖寫代碼的形式,通過Matlab抽取一個隨機數。而這次中獎的朋友,我將送出一張100元的星巴克卡券,聊表心意。

祝大家,國慶假期愉快,中秋快樂。

以上

如果有興趣,歡迎關注我的微信公眾號「打浦橋程序員」,謝謝


推薦閱讀:

機器學習筆記25 —— 編程作業8異常檢測演算法和推薦系統
MATLAB數據可視化[2]:heatmap
機器學習筆記14 —— BP演算法相關編程與編程作業4神經網路後向傳播演算法
【線性代數】對矩陣做初等變換
2017年,你用Matlab寫了多少行代碼

TAG:MATLAB |