以MATLAB机器学习与ThingSpeak平台开发物联网解析系统.PDF

以MATLAB机器学习与ThingSpeak平台开发物联网解析系统.PDF

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
以MATLAB机器学习与ThingSpeak平台开发物联网解析系统

以MATLAB 、機器學習與ThingSpeak 平台 開發物聯網解析系統 By Robert S. Mawrey, MathWorks 智慧裝置與資料解析、機器學習技術的結合,可以被廣範地運用在各個領域 ,從 自行開發的交通監測,到先進的預測維護系統,以及未來各式各樣的消費性產品, 比如Amazon Echo 及Google Nest 等。 雖然物聯網(Internet of Things, IoT)潛能無窮,但物聯網系統的設計及開發需要複 雜網路架構以及多領域的專業 ,可能讓人感到氣餒。 本篇文章將介紹如何利用資料解析(data analytics )技術,且在無需開發客製化 網路軟體或伺服器的情況下來設計開發IoT 系統並進行原型化及轉檔佈署。這項 工作流程以MATLAB® 、以及可以依需求在雲端執行MATLAB 程式碼的IoT 解析平 台 - ThingSpeak™為基礎。為了說明本工作流程,我們將建立一個潮汐預測系統 做為例子 ,該系統可以讓船員預測風對潮水水位所造成的影響 。 水的深度隨著潮汐有所不同,但同樣也受到風的強度、時間、與方向的影響。風 成的水位預測通常需要先進的流體力學模型,並且須對當地海灣與海床形狀具備 相當深入的了解。美國國家海洋暨大氣總署(NOAA)與其他組織利用這些資源來預 測主要港口的水深,但次要的港口與海灣則無法正當利用這些資源。 我們將要開發的這個系統,不需要精密計算的流體力學模型與複雜的設備,只需 要基於類神經網絡技術以及低成本的硬體裝置,就可提供一套可行且經濟實惠的 方式給予次要港灣進行潮汐預測。 本 案 例 所 使 用 的 程 式 碼 可 以 從 /matlabcentral/fileexchange/60344-thingspeak-tidal- and-wind-surge-forecasting-example 下載。 潮汐風浪預測範例 本範例以從美國東北部麻薩諸塞州鱈魚角的一個海灣所收集到的資料為基礎 (圖1) 。 圖1. 潮汐預測系統 。 在MATLAB 中執行程式碼 ,可以讀取從ThingSpeak 以及其他線上資料來源的風 及潮汐的資料,接著執行可以預測潮湧並依需求產生潮湧預測圖(圖2)的潮汐預 測與類神經網絡演算法。 圖2. 以MATLAB 機器學習與ThingSpeak 為基礎的風成潮汐預測圖。圖中可看到潮汐的實際量 測值、天文潮汐預測(不考慮風的因素) 、以類神經網絡預測的風成潮汐預測(天文加上風) 、以及 殘差(實際量測值或風成預測與天文預測之間的差距) 。 我們將透過五個步驟來建立預測系統。 1. 收集歷史資料 2. 分析資料 3. 開發預測演算法 4. 將解析結果佈署到雲端 5. 依需求進行資料的解析與視覺化。 步驟1 :收集資料 一開始,我們以ThingSpeak 以及低成本的測潮計來收集潮汐水位的歷史資料 。 測潮計的韌體是以C 程式碼編寫,我們使用了ThingSpeak 的開放源嵌入式裝置 之通訊函式庫 (open-source 4ThingSpeak communication libraries )發佈到 GitHub 。 步驟2 :分析歷史資料 我們將歷史資料從ThingSpeak 下載到桌上型電腦上的MATLAB 來執行分析工 作 。在桌上型電腦,我們可以檢驗及清理資料,來移除雜訊、異常值、缺漏 值、錯誤值及其他反常情形 。 % Download the tide data using a custom function [tideTime,tideRangemm] = readAllMyTideData(); % Convert the range to water depth from the mud disttomud = 3449; %Measured distance from the gauge to the mud. depthFeet = (disttomud - tideRangemm) / 25.4 / 12; [tideTime,duptimeindex] = unique(tideTime); depthFeet = depthFeet(duptimeindex); depthFeetNoisy = depthFeet; % Remove outliers (could also use movmedian) depthFeet = hampel(depthFeet,121,2); depthFeet = hampel(depthFeet,11,1); 我們將資料繪製成圖表

您可能关注的文档

文档评论(0)

xiaozu + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档