The Trinity: MATLAB Mobile, MATLAB Online, and MATLAB Drive

作為一名即將轉正的俄羅斯實習生,最近Supervisor又委我以重任:「這幾年這個大數據啊雲計算啊好像很火啊。苟利國家生死以,豈因禍福避趨之,你趕緊去研究一下!」雖然我不知道年長的Supervisor為什麼突然引用了這兩句詩,但是為了順利轉正,我還是在旅行途中又找了一間網吧,開始查找資料。

碰巧前兩天閑來無事的時候,在手機上裝上了MATLAB Mobile,因為聽說它可以調用手機的各種感測器,挺有意思的。但是懶病未愈,一直沒有打開過(羞愧臉)。現在有了Supervisor的敦促,查文檔自然更有勁了。首先映入眼帘(聽說中國的小學生都是這麼寫作文的?)的是這個Support Package的頁面:

iPhone and iPad Sensor Support from MATLAB

即使是像MATLAB Mobile這麼小眾的產品,官方文檔里的例子也還是非常豐富的。比如這個讀取GPS數據的例子好像就蠻有趣。然而在例子中我看到了下面這段話:

Use MATLAB Connector to allow connection between your desktop MATLAB session and MATLAB Mobile on your Apple iOS device. Your device must be able to connect to your desktop, either by being on the same network, using a VPN, or through a similar configuration.

我需要打開一個桌面版MATLAB來連接移動版,而且它們還要在同一個網路內,那我是要如何移動?

然而這並沒有難倒機智的即將轉正的俄羅斯實習生(傲嬌臉)——我可以把手機設成Hotspot,這樣就可以通過Wifi把Surface Pro和手機連接,然後再打開MATLAB——是的,Surface Pro上可以裝桌面版的MATLAB,你們用iPad的可以嗎?(拉仇恨臉)(其實並沒有人要在平板上裝MATLAB臉)就在我準備這麼乾的時候,俄羅斯實習生的印度小夥伴湊過來看了看這個例子——不要問我為什麼網吧里會出現印度小夥伴,這都是劇情需要——然後說:「你為啥不試試直接在手機上用那個mobiledev?看來即便我機智若斯(並沒有),印度小夥伴還是略勝了一籌。

於是我第一次打來了MATLAB Mobile,並把它連到了MathWorks Cloud上——只需要一個MathWorks賬戶,一秒變雲計算有沒有!看看設置頁,確認一下確實Connect to MathWorks Cloud(我的賬戶當然是要打碼的)了:

然後仿照上面提到的文檔里的例子,在MATLAB Mobile里創建一個mobiledev對象:

通過查詢

m.Loggingn

可以看到,剛創建的對象並沒有干任何事情。 我們需要進入感測器頁面,打開位置感測器:

然後點擊右上角那個START SENDING,MATLAB Mobile就開始記錄你的位置數據了!等玩夠了,STOP SENDING就可以節約用電了(Supervisor旁白:你是不是搞錯重點了?)。

然而怎麼查看記錄的數據呢?文檔里的相關例子瞬間告訴你答案:使用poslog,一行代碼獲得所有數據:

[lat, lon, ts, spd] = poslog(m);n

不過問題又來了,如何把這些數據導出作進一步處理呢?畢竟沒人會這麼跟自己過不去要用手機作數據處理和可視化的。這個也並不複雜!記得這個MATLAB Mobile session是連接到MathWorks Cloud嗎?只要打開MATLAB Online,就可以看到這些數據了。再通過MATLAB Drive,就可以把數據保存到桌面並與之愉快地玩耍了!因為之前有文章介紹過這兩個工具,這裡就按下不表了。

所以,MATLAB Mobile,MATLAB Online和MATLAB Drive是三位一體,從MATLAB Mobile採集的數據,可以上傳到MathWorks雲上, 用MATLAB Online訪問,也可以用MATLAB Drive備份和傳輸到不同的機器上。MATLAB好像也能雲計算了!

當然這三個工具現有的功能還非常有限。比如說數據無法直接從手機傳輸到MATLAB Drive,而必須經過MATLAB Online作為中轉站,過於麻煩。而且由於這並不是官方文檔使用的流程,這一系列步驟在以後的MATLAB版本中還不一定有效。對此,只能希望MathWorks的雲計算部門能夠多加加班(閃躲MATLAB開發者扔來的各種容器中),給用戶(繼續閃)更穩定、更方便的雲計算平台了。

======================================================================

(我是一條沒羞沒臊的分割線)

到這裡關於MATLAB Mobile的故事其實已經講完了。不過對於有興趣的讀者(喂!真的有人嗎?),我還想展示一下我為了把收集的GPS數據顯示在Google Maps作出的一些嘗試。

第一個問題當然是如何在自己的網頁或應用中使用Google Maps。稍稍Google一下(千萬別用百度!千萬別用百度!千萬別用百度!)就能發現Google提供的詳細API:

developers.google.com/m

當然在使用API之前你需要一個Google的API Key。不像MATLAB的各種toolbox(比如說我之前試圖使用的Mapping Toolbox,一個要賣一千多美元),Google的API如果只是個人使用而且不被大量地調用的話,是完全免費的。不過(高能預警!前方免責聲明!)如何獲得API Key和具體的使用條款,請仔細閱讀Google的官方說明。

Google Maps API本身提供了不少在地圖上加標記、加線條的函數。但是由於碰巧聽說了D3.js,我嘗試將這個可視化工具庫和Google Maps結合起來。網上同樣有不少例子,比如下面這些:

Google Maps + D3

D3.js + Google Maps: USGS Earthquake data

到這裡就屬於JavaScript和網路編程的絕對領域了,也就沒必要展開了。

不過還有一點倒是值得一提:如何把MATLAB格式的數據導入到JavaScript。比如說,我的MATLAB Workspace里有經緯度和速度數據lat,lon,和spd,怎麼樣才能在我的JavaScript代碼中使用它們呢?

我採用了一個也許很笨的辦法:將數據先轉成JSON文件,這樣就可以直接使用JavaScript提供的庫函數來解析JSON。當然手寫把MATLAB變數序列化成JSON文件的函數是非常麻煩的。我們當然可以直接Google找網上現成的函數,但是在這裡我想順便安利一個MATLAB R2015b的新功能:Add-Ons。它就在Toolstrip的Home Tab下(看最右邊!):

點點菜單下拉選項里的Get Add-Ons,就可以打開Add-On Explorer。直接在裡面搜JSON,就可以瀏覽所有與JSON有關的函數和工具箱了,官方的和熱心用戶提交的都包括在了裡面:

使用這個Add-On Explorer的方便之處就是,當你看上某個Add-On,就可以直接點擊Add安裝;某天喜新厭舊了,也可以在Manage Add-Ons里卸載。這樣就免去了從網上下載M文件,並且還要把M文件的存放目錄添加到MATLAB path中的麻煩。使用第三方的工具和函數從此變得方便快捷,一目了然。

網吧要關門了,老闆娘在催我了,只能就此收筆。Ciao!(Supervisor旁白:我也好奇為什麼一個俄羅斯人會喜歡用中文寫文章然後再用義大利文結尾)

參考資料:

[1] MATLAB Mobile Overview

[2] Acquire GPS Data from Your Apple? iOS Device and Plot Your Location and Speed on a Map

[3] Create mobiledev object to acquirendata from iOS sensors

[4] Use Logged Sensor Data

[5] Return logged position data from iOS sensor

[6] 答讀者問:網吧怎麼用MATLAB? - MATLAB - 知乎專欄

推薦閱讀:

MATLAB神經網路(一):BP神經網路
打開MATLAB時出現「Waring:could not read file classpath.txt」,怎麼辦?
如何使用MATLAB寫測試(5): MATLAB with Jenkins

TAG:MATLAB | DataVisualization |