Main Content

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

測定潮汐深度および予測潮汐深度の可視化と比較

この例では、オックウェイ湾で測定した潮汐深度と予測される潮汐深度を比較する方法を説明します。潮汐深度を予測することは重要です。水の深さがわからない場合、船は容易に浅い湾の底泥で動けなくなることがあります。

メモ

この例を実行するには、System Identification Toolbox を使用するライセンスの与えられた MathWorks アカウントにログインしていなければなりません。

オックウェイ湾のリアルタイム潮汐ゲージからのデータの読み取り

ThingSpeak™ のチャネル 50289 には、オックウェイ湾の潮汐深度に関するデータが含まれています。データは 5 分ごとに収集されます。チャネルの Field 1 には潮汐深度のデータが含まれています。

関数 thingSpeakRead を使用して、特定の日 (たとえば、2016 年 7 月 1 日) のデータをチャネル 50289 から読み取ります。

startDate = datetime(2016,07,01,0,0,0);
endDate = datetime(2016,07,02,0,0,0);
dateRange = startDate:endDate;
data = thingSpeakRead(50289,'DateRange',dateRange,'Fields',1);

AR モデルによるデータの近似

関数 iddata を使用して、潮汐深度データの iddata オブジェクトを作成します。潮汐データはゼロ平均ではないため、データがゼロ平均になるようにデータのトレンド除去を行います。潮汐深度は時間と共に変化するため、関数 ar を使用して、離散時間の自己回帰モデルでデータを近似します。

メモ

この例は、AR モデルを使用して潮汐レベルなどの正弦波関数をモデル化する方法を説明するように設計されています。これは、高度な潮汐予測技術の代わりとして設計されているわけではありません。測定された潮汐データを使用して潮汐レベルを予測する MATLAB® 関数、たとえば関数 UTide は、MATLAB Central で利用できます。

sampleTime = 5;
IDdata = iddata(data,[],sampleTime,'OutputName',{'Tidal Depth'},'TimeUnit','minutes')
IDdata =

Time domain data set with 288 samples.
Sample time: 5 minutes                 
                                       
Outputs           Unit (if specified)  
   Tidal Depth 
% Detrend the data to zero mean
IDdata = detrend(IDdata,0);
modelOrder = 8;
% Fit an AR model to represent the system
sys = ar(IDdata,modelOrder);

測定潮汐深度および予測潮汐深度の比較

関数 compare を使用して、予測モデル データと測定データの正確性を比較します。

compare(IDdata,sys,288,'r')

このプロットは、288 ステップ前に予測されたシステムの応答と測定データとの比較を示しています。

参考

関数