如何讓MATLAB在完成計算後通知你

我不確定有多少人會遇到這樣的情況,就是一次模擬要跑上五、六個小時,甚至是更久,並且還需要根據結果重新調整參數,然後再模擬。

在開始模擬到得出結果之前,這麼長一段時間內,無論是出於時間統籌,還是個人的正常思維,都不應該是一直盯著模擬過程,而是應該去處理其他的工作。

不過經常會發生專註於手頭的工作,等回過頭記起還有模擬這麼一回事的時候,發現模擬已經結束許久。久而久之,這樣的處理方式,似乎都與時間統籌學相悖。

於是,如何讓MATLAB在完成計算時第一時間通知我,成了極有意義的一個問題。

那麼今天就來聊一聊,都有哪幾種方法來解決這個問題。

第一個最容易想到的辦法是,模擬結束時,在屏幕上彈出消息框。

通過一句簡單的代碼,就能夠實現上述的效果

msgbox({內容})

消息框中的內容,可以根據自己的喜好定義,描述一下此次模擬的工況,模擬的結果,等等。

類似於這種視覺上的提醒,除了消息框之外,還可以通過顯示圖片,或者是動圖。

以圖片為例,實現的代碼同樣很簡單,一句imshow就能滿足效果,至於顯示的圖片,都是依據個人喜好而定,效果大致如下

除了視覺上的提醒方式之外,很容易能夠聯想到的就是聽覺上的提醒。

聽覺提醒之所以必要,是因為很多時候,模擬是在一個電腦上進行,而其他的工作會在另一台電腦上進行。

當模擬結束時,可以通過下方的代碼,讓電腦發出清脆的鳥叫聲。

load chirpsound(y,Fs)

不過,如果你覺得上述的音效太過普通,體現不出自己的個性,當然也可以選擇播放其他的音效,但是最好是在周圍人可接受的範圍內。

實現的代碼如下

[y,Fs] = audioread(音頻文件);sound(y,Fs)

最後一種方式,才是今天我打算重點聊一聊的,就是以發消息的形式。

曾經我在做電池系統的整車層面模擬時,因為只有電池系統的模型是通過Simulink搭建的,而其他部件,全都是GT-Suite建模的。混合模擬以及模擬精度導致的直接結果是,電池系統從滿電狀態跑到20%的電量需要耗費數個小時,並且同一種參數配置,需要分別模擬NEDC、WLTC等多個不同的循環。

那個時候,即使是下了班,或者是節假日,都是在下班前設置好參數,開啟模擬再離開公司。

有時候會想,要是模擬跑完了,有人能發消息告訴我這次模擬效果就好了,如果我還能回復消息告訴他,下一組模擬參數配置再開啟模擬,就更棒了。

做模擬的日子已經過去有些年了,很遺憾的是,那時候並沒有實現當下的願望。

不過,生活就是這麼有趣,念念不忘,必有迴響

發消息的形式,目前實現的形式同樣也比較多樣。

比較容易實現的形式是以發郵件的形式。這種方法,在網路上比較常見,同樣我在去年的一篇關於股票監測及預警的帖子中提到過,其中有相關的源代碼。

對這種實現形式感興趣的朋友,可以在公眾號後台回復「MATLAB發郵件」查看源代碼。

另一種實現形式,是通過撥打電話的方式進行提醒。不過因為這種方式容易被用於不正當的用途,產生不積極不正面的效果,所以在這裡將不再闡述。

最後一種實現形式,是通過微信收發消息。

先來看一下整體實現的動圖效果。分別開啟Simulink模擬與網頁版微信,當左側的模擬結束後,將會通過微信發送消息,告知模擬已經結束以及計算的結果。

另外,可以通過微信發送下一次模擬的配置參數,並開啟模擬。模擬結束時,同樣會通過微信發送模擬結束的通知以及相應的結果。

接下來聊一聊上述的過程是如何實現的。

目前我還沒能實現MATLAB通過微信的API發消息,上述微信的收發消息功能,我是藉助Python來完成的。在網路上,關於Python與微信的文章特別多。對這方面同樣感興趣的朋友,可以在公眾號後台回復「Python微信」獲取我參考的一篇帖子,而這片帖子的最後有一篇特別贊的代碼,是關於如何自動獲取撤回的代碼。根據這段代碼進行改寫,實現自己想要的功能應該不難。

在實現微信的收發功能之後,我通過txt文件,在Python和MATLAB架起了一座橋樑。當完成模擬之後,把狀態以及結果寫入txt中。同時Python識別所在文件夾下是否存在該txt文件,如果存在的話,讀取其中的字元串,並發送給指定的用戶,並刪除該txt文件。

MATLAB接收微信消息的邏輯是,Python收到指定用戶的消息之後,將字元串寫入另一個文件名的txt文件中,同樣MATLAB識別所在文件夾下是否存在該txt文件並進行讀取,讀取後再刪除該txt文件。

以上就是整個MATLAB收發微信消息的邏輯,雖然過程中藉助了Python,不過整體效果還是很不錯的。微信收發功能的實現,對於我而言,意義不亞於當初我實現滑鼠精靈,完全打開了另一片天地。

通過這樣功能,能玩的實在是太多了。比如每天早上伴隨著鬧鈴,把今天的天氣,需要完成的事情通過微信發給我。而不再是分別打開一個又一個APP進行查看

曾經我還苦惱於為什麼一個手機不能同時登陸兩個微信號,有了這項功能之後,我再也不需要帶兩個手機出門了,發給打浦橋程序員微信號的消息就能夠自動轉發到我當前的微信號,並且能夠通過這個微信號給發送消息的人做回復。

以上就是我對,如何讓MATLAB在完成計算時第一時間通知我,這個問題的所有思考以及做出的所有嘗試。如果對這個問題同樣感興趣的朋友,歡迎嘗試以及提供新的思路。

祝各位,工作愉快!

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


推薦閱讀:

回顧與展望轉行數據科學路上的點點滴滴(2016-2018)
新手如何快速成為數據分析師?
Python數據分析(一)
用戶畫像學習
小派看數據 | 實戰演練:影響乳腺腫瘤性質的顯著因子發掘——數據可視化

TAG:MATLAB | 數據分析 |