<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.3 20070202//EN" "journalpublishing.dtd">
<article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" article-type="research-article" dtd-version="2.3" xml:lang="EN">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">Front. Mar. Sci.</journal-id>
<journal-title>Frontiers in Marine Science</journal-title>
<abbrev-journal-title abbrev-type="pubmed">Front. Mar. Sci.</abbrev-journal-title>
<issn pub-type="epub">2296-7745</issn>
<publisher>
<publisher-name>Frontiers Media S.A.</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="doi">10.3389/fmars.2023.1199238</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Marine Science</subject>
<subj-group>
<subject>Original Research</subject>
</subj-group>
</subj-group>
</article-categories>
<title-group>
<article-title>M-STCP: an online ship trajectory cleaning and prediction algorithm using matrix neural networks</article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name>
<surname>Guo</surname>
<given-names>Shuai</given-names>
</name>
<xref ref-type="aff" rid="aff1">
<sup>1</sup>
</xref>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Sun</surname>
<given-names>Meng</given-names>
</name>
<xref ref-type="aff" rid="aff2">
<sup>2</sup>
</xref>
<uri xlink:href="https://loop.frontiersin.org/people/2268431"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Xue</surname>
<given-names>Huanqun</given-names>
</name>
<xref ref-type="aff" rid="aff1">
<sup>1</sup>
</xref>
<uri xlink:href="https://loop.frontiersin.org/people/2277102"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Mao</surname>
<given-names>Xiaodong</given-names>
</name>
<xref ref-type="aff" rid="aff2">
<sup>2</sup>
</xref>
<uri xlink:href="https://loop.frontiersin.org/people/2318161"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Wang</surname>
<given-names>Shuang</given-names>
</name>
<xref ref-type="aff" rid="aff2">
<sup>2</sup>
</xref>
</contrib>
<contrib contrib-type="author" corresp="yes">
<name>
<surname>Liu</surname>
<given-names>Chao</given-names>
</name>
<xref ref-type="aff" rid="aff3">
<sup>3</sup>
</xref>
<xref ref-type="author-notes" rid="fn001">
<sup>*</sup>
</xref>
<uri xlink:href="https://loop.frontiersin.org/people/2069841"/>
</contrib>
</contrib-group>
<aff id="aff1">
<sup>1</sup>
<institution>College of Science, Qingdao University of Technology</institution>, <addr-line>Qingdao</addr-line>, <country>China</country>
</aff>
<aff id="aff2">
<sup>2</sup>
<institution>College of Information and Control Engineering, Qingdao University of Technology</institution>, <addr-line>Qingdao</addr-line>, <country>China</country>
</aff>
<aff id="aff3">
<sup>3</sup>
<institution>School of Computer Science and Technology, Ocean University of China</institution>, <addr-line>Qingdao</addr-line>, <country>China</country>
</aff>
<author-notes>
<fn fn-type="edited-by">
<p>Edited by: Wei-Bo Chen, National Science and Technology Center for Disaster Reduction (NCDR), Taiwan</p>
</fn>
<fn fn-type="edited-by">
<p>Reviewed by: Ivan Petrunin, Cranfield University, United Kingdom; Nikolaos Kourogenis, University of Piraeus, Greece</p>
</fn>
<fn fn-type="corresp" id="fn001">
<p>*Correspondence: Chao Liu, <email xlink:href="mailto:liuchao@ouc.edu.cn">liuchao@ouc.edu.cn</email>
</p>
</fn>
</author-notes>
<pub-date pub-type="epub">
<day>29</day>
<month>08</month>
<year>2023</year>
</pub-date>
<pub-date pub-type="collection">
<year>2023</year>
</pub-date>
<volume>10</volume>
<elocation-id>1199238</elocation-id>
<history>
<date date-type="received">
<day>03</day>
<month>04</month>
<year>2023</year>
</date>
<date date-type="accepted">
<day>31</day>
<month>07</month>
<year>2023</year>
</date>
</history>
<permissions>
<copyright-statement>Copyright &#xa9; 2023 Guo, Sun, Xue, Mao, Wang and Liu</copyright-statement>
<copyright-year>2023</copyright-year>
<copyright-holder>Guo, Sun, Xue, Mao, Wang and Liu</copyright-holder>
<license xlink:href="http://creativecommons.org/licenses/by/4.0/">
<p>This is an open-access article distributed under the terms of the Creative Commons Attribution License (CC BY). The use, distribution or reproduction in other forums is permitted, provided the original author(s) and the copyright owner(s) are credited and that the original publication in this journal is cited, in accordance with accepted academic practice. No use, distribution or reproduction is permitted which does not comply with these terms.</p>
</license>
</permissions>
<abstract>
<p>Accurate prediction of ship trajectories is crucial to guarantee the safety of maritime navigation. In this paper, a matrix neural network-based online ship track cleaning and prediction algorithm called M-STCP is suggested to forecast ship tracks. Firstly, the GPS-provided historical ship trajectory data is cleaned, and the data cleaning process is finished using the anomaly point algorithm. Secondly, the trajectory is input into the matrix neural network for training and prediction, and the algorithm is improved by using Kalman filtering, which reduces the influence of noise on the prediction results and improves the prediction accuracy. In the end, the effectiveness of the method is verified using real GPS trajectory data, and compared with the GRU model and long-short-term memory networks. The M-STCP method can improve the prediction accuracy of ship trajectory to 89.44%, which is 5.17% higher than LSTM and 1.82% higher than GRU, effectively improving the prediction accuracy and time efficiency.</p>
</abstract>
<kwd-group>
<kwd>trajectory prediction</kwd>
<kwd>marine traffic safety</kwd>
<kwd>Global Positioning System</kwd>
<kwd>matrix neural network</kwd>
<kwd>anomaly point removal</kwd>
</kwd-group>
<counts>
<fig-count count="9"/>
<table-count count="5"/>
<equation-count count="22"/>
<ref-count count="41"/>
<page-count count="15"/>
<word-count count="8689"/>
</counts>
<custom-meta-wrap>
<custom-meta>
<meta-name>section-in-acceptance</meta-name>
<meta-value>Ocean Solutions</meta-value>
</custom-meta>
</custom-meta-wrap>
</article-meta>
</front>
<body>
<sec id="s1" sec-type="intro">
<label>1</label>
<title>Introduction</title>
<p>Due to the contemporary information technology&#x2019;s quick development, more and more physical devices are connected across a variety of available networks, realizing the concept of the Internet of Things (<xref ref-type="bibr" rid="B15">Koohang et&#xa0;al., 2022</xref>). Besides smart home (<xref ref-type="bibr" rid="B20">Lu, 2018</xref>), intelligent transportation (<xref ref-type="bibr" rid="B41">Zhou et&#xa0;al., 2017</xref>), smart medical care (<xref ref-type="bibr" rid="B21">Nguyen et&#xa0;al., 2017</xref>), the Internet of Things has also extended development in the marine field, and various marine sensors are connected to serve smart ocean projects. Current data shows that the total value of marine trade accounts for nine percent of China&#x2019;s GDP, about 8.9415 trillion yuan (<xref ref-type="bibr" rid="B17">Li et&#xa0;al., 2021</xref>), we are gradually aware of the importance of marine trade, vigorously developing the marine economy (<xref ref-type="bibr" rid="B16">Lam et&#xa0;al., 2018</xref>) improve the country&#x2019;s economic development level. To vigorously develop the marine economy, our requirements for the transportation capacity and travel speed of marine ships are getting higher and higher, and marine ships are gradually developing towards large-scale, intelligent, and high-speed, and the number of ships on the sea is also growing rapidly. Because the sea ecosystem is so complicated and unstable, the increase in the number of marine sensor equipment required, unstable signals, and expensive maintenance costs, the probability of potential safety hazards such as ship breakdowns and deviations from the course (<xref ref-type="bibr" rid="B39">Zhang et&#xa0;al., 2021</xref>) has increased, making the marine economic development unable to become more intelligent and convenient.</p>
<p>To reduce the rate of ship accidents, we recognize the importance of dynamic monitoring of ships (<xref ref-type="bibr" rid="B29">Roy, 2021</xref>). A key step in the dynamic monitoring of the vessel&#x2019;s motion status is to predict the vessel&#x2019;s future course. Nowadays, the navigation and positioning system (<xref ref-type="bibr" rid="B12">Hu et&#xa0;al., 2015</xref>) installed on ships can use the ship&#x2019;s position, speed, heading, and other trajectory information at a certain moment to predict the future trajectory of the ship. Various positioning systems such as the Global Positioning System (GPS) of the United States (<xref ref-type="bibr" rid="B5">El-Rabbany, 2002</xref>; <xref ref-type="bibr" rid="B33">Tetreault, 2005</xref>), China&#x2019;s Beidou satellite navigation system (<xref ref-type="bibr" rid="B36">Yang et&#xa0;al., 2019</xref>), European Union&#x2019;s Galileo system, Russia&#x2019;s GLONASS, etc. have been widely used in the field of maritime transportation. GPS is currently the most widely used civil navigation tool, which has the advantages of global coverage, all-weather, error-free accumulation, etc. The principle of GPS ship navigation information system is to use orbital satellites to locate the ship, obtain relevant information such as the longitude and latitude of the ship, GPS ship navigation system is the use of satellites, ground receivers to send and receive satellite signals, the use of the ship&#x2019;s GPS receiver to convert the received satellite signals into the ship&#x2019;s real-time position information (<xref ref-type="bibr" rid="B22">Nguyen, 2020</xref>). Predicting the trajectory of the ship is an important part of navigation technology, and the historical trajectory data collected by the GPS can be utilized to analyze and predict the subsequent position, heading, and other information of the ship, to achieve the purpose of controlling the ship&#x2019;s route, and provide strong support for port management of ships and reducing the risk of collision.</p>
<p>Although the GPS navigation system can provide a large amount of ship trajectory information, it is often subjective for humans to rely only on the trajectory data provided by GPS to judge the direction of the ship in the dynamic monitoring of the ship. Therefore, GPS navigation data should be combined with various predictive models to predict ship trajectories (<xref ref-type="bibr" rid="B18">Liu et&#xa0;al., 2022</xref>). So far, the methods of trajectory prediction at home and abroad have been gradually transformed from statistical methods such as Kalman filter (<xref ref-type="bibr" rid="B24">Perera et&#xa0;al., 2010</xref>), Markov model (<xref ref-type="bibr" rid="B37">Zhang et&#xa0;al., 2019</xref>), Gaussian mixture model (<xref ref-type="bibr" rid="B4">Dalsnes et&#xa0;al., 2018</xref>) to deep learning methods and neural network methods such as BP neural network (<xref ref-type="bibr" rid="B35">Xu et&#xa0;al., 2011</xref>), RNN (recurrent neural network) (<xref ref-type="bibr" rid="B31">Suo et&#xa0;al., 2020</xref>), LSTM (long short-term memory neural network)(<xref ref-type="bibr" rid="B32">Tang et&#xa0;al., 2022</xref>) and hybrid model methods (<xref ref-type="bibr" rid="B30">Sun et&#xa0;al., 2022</xref>). Although the results of ship trajectory prediction using the above methods are promising, due to the spatial deviation of ship real-time trajectory, that is, the different starting positions of ships in different ports (longitude and latitude deviation), the prediction results are biased. Therefore, we can consider using the image recognition machine learning method that can maintain the spatial nature of the vessel&#x2019;s path. Over the last few years, it has been proposed to apply a Matrix Neural Network (MNN) (<xref ref-type="bibr" rid="B8">Gao et&#xa0;al., 2017</xref>) to image recognition tasks. As a feed forward neural network, MNN processes the information of lower-level units through bilinear mapping. The difference is that MNN (<xref ref-type="bibr" rid="B25">Popa, 2015</xref>) takes the input matrix straight away. Some articles show that the matrix neural networks are superior to convolutional neural networks in cyclone prediction results (<xref ref-type="bibr" rid="B38">Zhang et&#xa0;al., 2018</xref>), so we can propose an online cleaning and prediction algorithm for ship tracks based on matrix neural network. In ship trajectory prediction, the ship trajectory information is a time series data defined by longitude and latitude, while the matrix neural network can easily input the ship trajectory data set, without the need to vectorize the data set before input, so it can reduce the loss of spatial information correlation caused in the process of data set vectorization. In this paper, we use real ship trajectory data to compare the prediction results of GRU (Gated Recurrent Unit) model (<xref ref-type="bibr" rid="B10">Han et&#xa0;al., 2019</xref>) and LSTM (<xref ref-type="bibr" rid="B32">Tang et&#xa0;al., 2022</xref>) to verify the good performance of matrix neural network in trajectory prediction results.</p>
<p>The contributions in this article are outlined below:</p>
<list list-type="bullet">
<list-item>
<p>An online ship trajectory prediction algorithm based on multi-parameter fusion M-STCP is proposed. The M-STCP method based on matrix neural network for ship trajectory prediction has better robustness and accuracy than traditional methods, and can effectively deal with the diversity and uncertainty in ship trajectory.</p>
</list-item>
<list-item>
<p>For outliers and missing from the original data, analyze the motion status and trajectory characteristics to clean the data. We propose a fusion algorithm for data cleaning, which can process ship trajectory data with multiple parameters step by step. The cleansed data is processed using a new encoding strategy and then predicted by using a matrix neural network. The MNN method can solve the complex relationship between several ship path data variables and better store spatial information in time series data.</p>
</list-item>
<list-item>
<p>Using a large number of experiments using real datasets, we verify the effectiveness of matrix neural networks in trajectory prediction, which raises the prediction accuracy by 1.82% percent versus GRU and 5.17% percent versus LSTM, respectively.</p>
</list-item>
</list>
<p>The remaining portions of the essay are structured as follows: Section 2 covers the literature on predicting ship trajectories. Section 3 provides a summary of the M-STCP (Ship trajectory cleaning prediction method based on matrix neural network) ship trajectory prediction method framework and introduces the data cleaning process, prediction process, and optimization process of Kalman filtering. Section 4 describes our experimental method and forecast analysis. Section 5 summarizes the paper and briefly describes the boundaries and other work of this study.</p>
</sec>
<sec id="s2">
<label>2</label>
<title>Related Work</title>
<p>The principle of probability and statistics is to assume that the variables in the data set follow a certain probability distribution, and then model the variables&#x2019; uncertainty using statistical techniques. Kalman Filtering Algorithm (KF) is a filtering algorithm that can make trajectory predictions by observing the probabilistic and statistical characteristics of noise and then recursive calculations. Jiang (<xref ref-type="bibr" rid="B14">Jiang et&#xa0;al., 2019</xref>) et&#xa0;al. used polynomial Kalman filtering for trajectory prediction. Sindre (<xref ref-type="bibr" rid="B6">Fossen and Fossen, 2018</xref>) et&#xa0;al. used the extended Kalman filter to process the sensor data to observe the vessel&#x2019;s state in real time and predict the vessel&#x2019;s future motion. While Kalman&#x2019;s filtering method takes several iterations, it uses very little storage space. Its disadvantage is that it can only realize short-term predictions, and the setting of the initial state has a great impact on the precision of the forecast outcomes. Among the probabilistic and statistical methods, Gaussian process regression models (<xref ref-type="bibr" rid="B27">Roberts et&#xa0;al., 2013</xref>) are the most common. Rong (<xref ref-type="bibr" rid="B28">Rong et&#xa0;al., 2019</xref>) decomposed the ship&#x2019;s trajectory into horizontal and vertical directions. In transverse, Modeling the unpredictability of lateral movement employs Gaussian processes, and in longitudinal through acceleration changes. By assessing the mean and covariance matrices, one can estimate the expected trajectory. The advantage of Gaussian process regression is that it is highly applicable and easily understandable. However, the drawbacks of excessive calculation are also evident, and the accuracy of the prediction results decreases noticeably as the prediction time grows. The Markov prediction model (<xref ref-type="bibr" rid="B3">Chen et&#xa0;al., 2021</xref>) is a method for trajectory prediction using the changing trend of the state transition probability matrix sequence. Qiao (<xref ref-type="bibr" rid="B26">Qiao et&#xa0;al., 2014</xref>) et&#xa0;al. proposed a hidden Markov model that can automatically adapt to the change of ship speed and select the corresponding parameters and adopted the trajectory partitioning algorithm to improve the efficiency of the hidden Markov model. Guo (<xref ref-type="bibr" rid="B9">Guo et&#xa0;al., 2018</xref>) et&#xa0;al. improved the hidden Markov model and proposed to construct a state transition matrix by using a high-order multivariate Markov model to predict trajectories. The advantages of the Markov model are high accuracy and small error. The disadvantage is that the prediction findings&#x2019; correctness will be strongly influenced by the threshold that is selected.</p>
<p>A neural network (<xref ref-type="bibr" rid="B1">Aggarwal et&#xa0;al., 2018</xref>) is a technique that mimics interconnected neurons in the human brain and is trained to solve simple linear problems and complex nonlinear problems. Neural networks have started being utilized to solve issues in the field of maritime navigation (<xref ref-type="bibr" rid="B23">Noel et&#xa0;al., 2019</xref>; <xref ref-type="bibr" rid="B34">Volkova et&#xa0;al., 2021</xref>; <xref ref-type="bibr" rid="B13">Imran et&#xa0;al., 2022</xref>) as artificial intelligence has advanced. Zhou (<xref ref-type="bibr" rid="B40">Zhou et&#xa0;al., 2019</xref>) et&#xa0;al. trained the BP neural network to predict the movement state of the ship, and the algorithm had a short running time and high accuracy. Suo (<xref ref-type="bibr" rid="B31">Suo et&#xa0;al., 2020</xref>) et&#xa0;al. used the RNN combined with the prediction framework of the GRU model, and experiments proved that the prediction framework has good prediction accuracy and higher computational efficiency. The disadvantage is that it cannot effectively predict long-distance trajectories and the computational cost is still high. Liu (<xref ref-type="bibr" rid="B19">Liu et&#xa0;al., 2021</xref>) et&#xa0;al. developed an enhanced convolutional neural network method, which can more effectively detect ship types in bad weather to effectively ensure maritime traffic safety. Gao (<xref ref-type="bibr" rid="B7">Gao et&#xa0;al., 2021</xref>) et&#xa0;al. used a new path forecasting method based on the multiple fusion function and the LSTM model to predict ship tracks. Although this approach is highly accurate, the complexity of the calculations is high and the results are influenced by the quality and size of the dataset. Bao (<xref ref-type="bibr" rid="B2">Bao et&#xa0;al., 2022</xref>) et&#xa0;al. used the MHA-BiGRU method based on the multi-head self-attention mechanism and the bidirectional gated cyclic unit model, which was experimentally proved to be effective in reducing the error of trajectory prediction, but the quality requirements of the data were high, and the interpretability was poor, which was difficult to understand.</p>
<p>The advantage of traditional statistical methods is that the storage space occupied in the calculation process is small, and the accuracy of ship trajectory prediction throughout a brief period. However, the obvious disadvantage is that the accuracy of the prediction findings is significantly impacted by the assumption of the beginning state and ideal circumstances of the prediction model. Deep learning methods can learn the simple linear or complex nonlinear relationships between various factors that affect the ship&#x2019;s trajectory and the ship&#x2019;s trajectory to make more accurate predictions. We want to find a prediction method that can maintain the spatial correlation of ship trajectory data, so we use an online cleaning and prediction algorithm for ship tracks based on matrix neural networks (<xref ref-type="bibr" rid="B25">Popa, 2015</xref>), consider the influencing factors such as latitude and longitude and speed in the ship trajectory, and reduce the impact of data noise to increase the predictive model&#x2019;s accuracy, which will be covered in the next chapters.</p>
</sec>
<sec id="s3">
<label>3</label>
<title>Methodology</title>
<p>The M-STCP architecture diagram consists of three parts: track data cleaning, model training, results analysis, and other intermediate processes, as shown in <xref ref-type="fig" rid="f1">
<bold>Figure&#xa0;1</bold>
</xref>. Track data cleaning is the basis for the smooth progress of the experiment, and the extraction of effective trajectory sequences can ensure the smooth progress of the experiment. Preprocessing data is crucial for removing anomalies, and using preprocessed data can enhance predictions&#x2019; accuracy. Model training is a crucial step in the entire framework, and after clustering ship trajectories, select a trajectory with a more typical motion mode for training. After training the data, the M-STCP method is used for prediction, and the Kalman filter is used to optimize the prediction. Result analysis is utilized to evaluate the prediction results of matrix neural networks and compare them with other prediction methods to verify the performance of matrix neural networks. New ship track data can be directly predicted by the M-STCP method following data clean-up.</p>
<fig id="f1" position="float">
<label>Figure&#xa0;1</label>
<caption>
<p>The M-STCP method architecture diagram consists of three parts: track data cleaning, model training, results analysis, and other intermediate processes.</p>
</caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fmars-10-1199238-g001.tif"/>
</fig>
<sec id="s3_1">
<label>3.1</label>
<title>Data preprocessing</title>
<p>Due to the complex maritime environment in real scenarios, the sensor equipment carried by fishing vessels often has problems such as signal loss and equipment failure, which will lead to problems such as incorrect reporting coordinates, reported data loss, and even crazy reporting of some equipment. Therefore, we need to preprocess the collected data and clean up the unwanted data. The original GPS trajectory data contains rich types of information, including ship ID, longitude (LON), latitude (LAT), heading, speed, time, ship type, tonnage, etc. For the ship trajectory prediction task, we want to carry out, only part of the information data is used, so we need to extract the trajectory of the ship. The extraction process of our required ship trajectory is as follows:</p>
<list list-type="simple">
<list-item>
<p>Step 1: Remove small fishing boat data. The results are more skewed because smaller boats are more susceptible to the environmental factors such as ocean weather;</p>
</list-item>
<list-item>
<p>Step 2: Remove the data of ship status as anchored and docked;</p>
</list-item>
<list-item>
<p>Step 3: Remove the same information in the data set due to repeated receipt of the same ship ID;</p>
</list-item>
<list-item>
<p>Step 4: Remove irrelevant data in the trajectory data to obtain the final trajectory.</p>
</list-item>
</list>
<p>Suppose the characteristics of the ship&#x2019;s navigation trajectory at a certain time <italic>t</italic> can be expressed as:</p>
<disp-formula>
<label>(1)</label>
<mml:math display="block" id="M1">
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mtext>t</mml:mtext>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>v</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo>}</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<p>The target ship&#x2019;s longitude, latitude, speed over the ground, and course over the ground are represented by the variables <italic>x<sub>t</sub>
</italic>, <italic>y<sub>t</sub>
</italic>,<italic>v<sub>t</sub>
</italic>,<italic>a<sub>t</sub>
</italic> respectively, at time <italic>t</italic>.</p>
<sec id="s3_1_1">
<label>3.1.1</label>
<title>Remove GPS drift track points</title>
<p>When the GPS collects the longitude and latitude position information data of the ship back to the background server, there will often be abnormal points due to positioning abnormalities, that is, the ship&#x2019;s trajectory has a large offset phenomenon in a short period, as shown in <xref ref-type="fig" rid="f2">
<bold>Figure&#xa0;2</bold>
</xref>, this phenomenon is GPS drift, and the point generated by GPS drift is called drift point.</p>
<fig id="f2" position="float">
<label>Figure&#xa0;2</label>
<caption>
<p>Schematic diagram of trajectory drift point.It shows the originally smooth points in a track, such as points <italic>A</italic>, <italic>B</italic>, <italic>C</italic>, <italic>P</italic>
<sub>1</sub>, <italic>P</italic>
<sub>2</sub>, and drift points due to GPS reception problems, such as points <inline-formula>
<mml:math display="inline" id="im1">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>1</mml:mn>
<mml:mo>'</mml:mo>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula>
<mml:math display="inline" id="im2">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>2</mml:mn>
<mml:mo>'</mml:mo>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>. What we want to remove is these drift points.</p>
</caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fmars-10-1199238-g002.tif"/>
</fig>
<p>We detect drift points by whether the average velocity of the trajectory point and its neighboring trajectory point exceeds the threshold, and <xref ref-type="statement" rid="st1">
<bold>algorithm 1</bold>
</xref>  displays the algorithmic procedure.</p>
<statement id="st1">
<label>Algorithm 1. Remove drift points where GPS positioning is inaccurate.</label>
<p>
<bold>Input:</bold> Longitude, latitude, time of point Alat, Alon, t3;Longitude, latitude, time of point B, Blat, Blon, t2; Longitude, latitude, time of point P Plat, Plon, t1;</p>
<p>
<bold>Output:</bold> The track point&#x2019;s latitude and longitude after correction;</p>
<p>1: int count=0;</p>
<p>2: Based on the latitude and longitude(lon<sub>1</sub>
<italic>,lat</italic>
<sub>1</sub>),(lon<sub>2</sub>
<italic>,l<sub>at</sub>
</italic>
<sub>2</sub>) between the two points and the radius <italic>r</italic> of the earth, the Haversine formula is used to calculate the distance <italic>d</italic> between the two points;</p>
<p>3: <inline-formula>
<mml:math display="inline" id="im3">
<mml:mrow>
<mml:mover accent="true">
<mml:mi>V</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mi>d</mml:mi>
<mml:mrow>
<mml:mi>&#x394;</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mo stretchy="false">/</mml:mo>
<mml:mn>1000</mml:mn>
<mml:mo stretchy="false">/</mml:mo>
<mml:mn>1.852</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>
</p>
<p>4: Find the velocity <italic>V</italic> 1, <italic>V</italic> 2, and <italic>V</italic> 3 of <italic>A</italic>, <italic>P</italic>, and <italic>B</italic>;</p>
<p>5: <bold>if</bold> (<italic>v</italic>1 <italic>&gt;</italic> 50&amp;&amp;<italic>v</italic>2 <italic>&gt;</italic> 50&amp;&amp;<italic>v</italic>3&lt; 50) then</p>
<p>6: Drift point correction is performed using cubic spline interpolation;</p>
<p>7: <bold>else if</bold>
</p>
<p>8: <bold>then</bold> (<italic>v</italic>1 <italic>&gt;</italic> 50 &amp;&amp;<italic>v</italic>2&lt; 50)</p>
<p>9: <bold>if</bold> (<italic>count&lt;</italic> 5) then</p>
<p>10: Drift point correction is performed using cubic spline interpolation;</p>
<p>11: <bold>else</bold>Delete the segment track;</p>
<p>12: <bold>end if</bold>
</p>
<p>13: <bold>end if</bold>
</p>
</statement>
<p>Here is the precise procedure:</p>
<p>Step 1: Calculate the distance between adjacent volume track points. Through the Haversine formula in Eq(2), the distance can be directly calculated by the latitude and longitude coordinates of the two track points.</p>
<disp-formula>
<label>(2)</label>
<mml:math display="block" id="M2">
<mml:mrow>
<mml:mi>d</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>2</mml:mn>
<mml:mi>r</mml:mi>
<mml:msup>
<mml:mrow>
<mml:mi>sin</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msqrt>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>sin</mml:mi>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mtext>la</mml:mtext>
<mml:msub>
<mml:mtext>t</mml:mtext>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mtext>la</mml:mtext>
<mml:msub>
<mml:mtext>t</mml:mtext>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:mfrac>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>+</mml:mo>
<mml:mi>cos</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mtext>la</mml:mtext>
<mml:msub>
<mml:mtext>t</mml:mtext>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mi>cos</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mtext>la</mml:mtext>
<mml:msub>
<mml:mtext>t</mml:mtext>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>sin</mml:mi>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mtext>la</mml:mtext>
<mml:msub>
<mml:mtext>t</mml:mtext>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mtext>la</mml:mtext>
<mml:msub>
<mml:mtext>t</mml:mtext>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:mfrac>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:msqrt>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<p>Where <italic>d</italic> represents the distance between two points (unit: meters), <italic>r</italic> is the radius of the earth (take 6371km), (lon<sub>1</sub>,lat<sub>1</sub>) and (lon<sub>2</sub>,lat<sub>2</sub>)represent the latitude and longitude coordinates of the front and rear points, respectively.</p>
<p>Step 2: Average speed calculation. The average velocity between the two trajectory points is calculated by Eq(3).</p>
<disp-formula>
<label>(3)</label>
<mml:math display="block" id="M3">
<mml:mrow>
<mml:mover accent="true">
<mml:mi>V</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mi>d</mml:mi>
<mml:mrow>
<mml:mi>&#x394;</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mo stretchy="false">/</mml:mo>
<mml:mn>1000</mml:mn>
<mml:mo stretchy="false">/</mml:mo>
<mml:mn>1.852</mml:mn>
</mml:mrow>
</mml:math>
</disp-formula>
<p>Where <inline-formula>
<mml:math display="inline" id="im4">
<mml:mrow>
<mml:mover accent="true">
<mml:mi>V</mml:mi>
<mml:mo stretchy="true">&#xaf;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
</inline-formula> is the average speed (unit: knots) between the two points, and &#x3b4;<italic>t</italic> is the time interval between the two points.</p>
<p>Step 3: Drift point judgment. The speed of ships near the port is about 30-40 knots, generally not exceeding 50 knots, so we set the normal speed threshold to 50 knots. Let the average speed between points <italic>A</italic> and <italic>P</italic>
<sub>1</sub> be <inline-formula>
<mml:math display="inline" id="im5">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:munder accentunder="true">
<mml:mrow>
<mml:msub>
<mml:mi>V</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="true">_</mml:mo>
</mml:munder>
</mml:mrow>
<mml:mo stretchy="true">&#xaf;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
</inline-formula>, the average speed between points <italic>P</italic>
<sub>1</sub> and <italic>B</italic> be <inline-formula>
<mml:math display="inline" id="im6">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:msub>
<mml:mi>V</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="true">&#xaf;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
</inline-formula>, and the average speed between points, <italic>A</italic> and <italic>B</italic> be <inline-formula>
<mml:math display="inline" id="im7">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:msub>
<mml:mi>V</mml:mi>
<mml:mn>3</mml:mn>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="true">&#xaf;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
</inline-formula>. If <inline-formula>
<mml:math display="inline" id="im8">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:msub>
<mml:mi>V</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="true">&#xaf;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
</inline-formula>&gt; 50, <inline-formula>
<mml:math display="inline" id="im9">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:msub>
<mml:mi>V</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="true">&#xaf;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
</inline-formula>&gt; 50 and <inline-formula>
<mml:math display="inline" id="im10">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:msub>
<mml:mi>V</mml:mi>
<mml:mn>3</mml:mn>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="true">&#xaf;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
</inline-formula>&lt; 50, only <italic>p</italic> is a drift point, and the point is corrected by the cubic spline interpolation method; if <inline-formula>
<mml:math display="inline" id="im11">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:msub>
<mml:mi>V</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="true">&#xaf;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
</inline-formula>&gt; 50, <inline-formula>
<mml:math display="inline" id="im12">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:msub>
<mml:mi>V</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="true">&#xaf;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
</inline-formula>&lt; 50, <italic>P</italic>
<sub>1</sub> and point <italic>B</italic> are both drift points, then traverse the subsequent trajectory points to see if there are any drift points in the subsequent nodes, Stop traversing until the last point that is not a drift point. Count the number of continuous drift points. If it is less than 5, use cubic spline interpolation to correct the drift points. If it is greater than 5, delete this track directly.</p>
</sec>
<sec id="s3_1_2">
<label>3.1.2</label>
<title>Remove track points with abnormal velocity</title>
<p>Interpolation technology is a method that can effectively correct trajectory outliers and fill in missing data values and is widely used in various fields. The current interpolation techniques include piecewise linear interpolation, linear interpolation depending on speed and heading, piecewise cubic Hermite interpolation, cubic spline interpolation, etc. Because the time interval of the GPS receiving ship-related data is not uniform, the method of processing data into a sequence of equal time intervals by interpolation method not only has a huge workload but also may change the original data structure. Therefore, we use the basic principles of kinematics to correct the abnormal speed point, which is more accurate than the linear interpolation method. The algorithm is shown in <xref ref-type="statement" rid="st2">
<bold>algorithm 2</bold>
</xref>.</p>
<p>Specific steps are as follows:</p>
<p>Step 1: Let the speed at the detection point be <italic>V</italic>. Calculate the average speed of a point before the detection point by Eq(3), denoted as <inline-formula>
<mml:math display="inline" id="im13">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:msub>
<mml:mi>V</mml:mi>
<mml:mi>m</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="true">&#xaf;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
</inline-formula>, and calculate the average speed of the next point, denoted as <inline-formula>
<mml:math display="inline" id="im14">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:msub>
<mml:mi>V</mml:mi>
<mml:mi>n</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="true">&#xaf;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
</inline-formula>.</p>
<p>Step 2: If the value of <italic>V</italic> is between <inline-formula>
<mml:math display="inline" id="im15">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:msub>
<mml:mi>V</mml:mi>
<mml:mi>m</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="true">&#xaf;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula>
<mml:math display="inline" id="im16">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:msub>
<mml:mi>V</mml:mi>
<mml:mi>n</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="true">&#xaf;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
</inline-formula>, it indicates that the detection point is normal; otherwise, it is determined that the detection point is an abnormal point, and the corresponding threshold is set by the value of <italic>V</italic>, and the abnormal point is corrected by Eq(4).</p>
<statement id="st2">
<label>Algorithm 2. Remove abnormal speed points.</label>
<p>
<bold>Input:</bold> Longitude, latitude, time of point Alat, Alon, t3;Longitude, latitude, time of point B, Blat, Blon, t2; Longitude, latitude, time of point P Plat, Plon, t1;</p>
<p>
<bold>Output:</bold> Corrected speed;</p>
<p>1: int count=0;</p>
<p>2: Based on the latitude and longitude(lon<sub>1</sub>
<italic>,lat</italic>
<sub>1</sub>),(lon<sub>2</sub>
<italic>,l<sub>at</sub>
</italic>
<sub>2</sub>) between the two points and the radius <italic>r</italic> of the earth, the Haversine formula is used to calculate the distance <italic>d</italic> between the two points;</p>
<p>3: Use formula <inline-formula>
<mml:math display="inline" id="im17">
<mml:mrow>
<mml:mover accent="true">
<mml:mi>V</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mi>d</mml:mi>
<mml:mrow>
<mml:mi>&#x394;</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mo stretchy="false">/</mml:mo>
<mml:mn>1000</mml:mn>
<mml:mo stretchy="false">/</mml:mo>
<mml:mn>1.852</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula> to calculate the average velocity between two points;</p>
<p>4: Find the velocity <italic>V</italic> 1, <italic>V</italic> 2, and <italic>V</italic> 3 of <italic>A</italic>, <italic>P</italic>, and <italic>B</italic>;</p>
<p>5: <bold>if</bold> ((<italic>v</italic>1 &#x2212; <italic>v &gt; F</italic>)||(<italic>v</italic> &#x2212; <italic>v</italic>2 <italic>&gt; F</italic>)) <bold>then</bold>
</p>
<p>6: <bold>if</bold> (!(<italic>vm&lt; v</italic>&amp;&amp;<italic>v&lt; vn</italic>)) <bold>then</bold>
</p>
<p>7: <bold>if</bold> (<italic>String.valueOf</italic>(0.1)<italic>.equals</italic>(<italic>v</italic>)) <bold>then</bold>
</p>
<p>8: double q = 0.1;</p>
<p>9: <bold>if</bold> (0.1&lt; <italic>v</italic>&amp;&amp;<italic>v&lt;</italic> 0.2) <bold>then</bold>
</p>
<p>10: double q = 0.5;</p>
<p>11: <bold>if</bold> (<italic>v &gt;</italic> 2) <bold>then</bold>
</p>
<p>12: double q = 1;</p>
<p>13: double vmid = (vm+vn)/2;</p>
<p>14: <bold>end if</bold>
</p>
<p>15: <bold>end if</bold>
</p>
<p>16: <bold>end if</bold>
</p>
<p>17: <bold>end if</bold>
</p>
<p>18: <bold>end if</bold>
</p>


</statement>
<disp-formula>
<label>(4)</label>
<mml:math display="block" id="M4">
<mml:mrow>
<mml:msub>
<mml:mi>V</mml:mi>
<mml:mrow>
<mml:mtext>mid</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:msub>
<mml:mi>V</mml:mi>
<mml:mtext>m</mml:mtext>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="true">&#xaf;</mml:mo>
</mml:mover>
<mml:mo>+</mml:mo>
<mml:mover accent="true">
<mml:mrow>
<mml:msub>
<mml:mi>V</mml:mi>
<mml:mtext>n</mml:mtext>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="true">&#xaf;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:mfrac>
</mml:mrow>
</mml:math>
</disp-formula>
<p>Step 3: Traverse all trajectory sequences to complete the detection and correction of abnormal speed.</p>
</sec>
</sec>
<sec id="s3_2">
<label>3.2</label>
<title>M-STCP core method</title>
<p>M-STCP (Matrix-Based Ship trajectory Cleaning and Prediction) is a data cleaning and trajectory prediction method based on matrix neural networks. It leverages the advantages of matrix neural networks to efficiently clean ship trajectory data and accurately predict future ship trajectories. By applying matrix neural networks to the fields of data cleaning and trajectory prediction, M-STCP demonstrates capabilities in enhancing data processing efficiency and accuracy. The flow chart is shown in <xref ref-type="fig" rid="f3">
<bold>Figure&#xa0;3</bold>
</xref>. The core method of this method is described as follows.</p>
<fig id="f3" position="float">
<label>Figure&#xa0;3</label>
<caption>
<p>A trained model for ship trajectory prediction using a matrix neural network is shown. First, the original data is reconstructed into an input matrix <bold>m</bold><italic><sup>f</sup></italic> using Taken&#x2019;s theorem, thus the test set and training set of the trajectory data set are separated. Secondly, the input matrix <bold>m</bold><italic><sup>f</sup></italic> is passed to the output layer through the matrix neural network. We predict an output of <inline-formula>
<mml:math display="inline" id="im18">
<mml:mrow>
<mml:msup>
<mml:mover accent="true">
<mml:mi>n</mml:mi>
<mml:mo>^</mml:mo>
</mml:mover>
<mml:mi>f</mml:mi>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula> and an observation of <bold>n</bold><italic><sup>f</sup></italic> for the next step. The gradient of each layer is calculated using the loss function to facilitate the update of the circle matrix.</p>
</caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fmars-10-1199238-g003.tif"/>
</fig>
<p>Each ship trajectory has its initial position <inline-formula>
<mml:math display="inline" id="im19">
<mml:mrow>
<mml:mrow>
<mml:mo mathsize="3.8">(</mml:mo>
<mml:mrow>
<mml:mrow>
<mml:mo mathsize="3.8">(</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mi>a</mml:mi>
<mml:mn>0</mml:mn>
<mml:mi>f</mml:mi>
</mml:msubsup>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mi>b</mml:mi>
<mml:mn>0</mml:mn>
<mml:mi>f</mml:mi>
</mml:msubsup>
</mml:mrow>
<mml:mo mathsize="3.8">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mo mathsize="3.8">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>, even if the trajectory shape of the ship trajectory is different, it will be interpreted as a different trajectory due to the difference in the initial position. This also shows that there is a spatial bias in the trajectory dataset because the ship coordinates are described by latitude and longitude coordinates. To eliminate the spatial deviation, in the ship trajectory prediction, we can perform a phase shift reconstruction of the coordinates of all samples, and after the reconstruction, all the trajectory points are moved to the (0,0) point relative to the starting position of the trajectory, thereby eliminating the spatial deviation. For each time step <italic>t</italic> and each sample <italic>f</italic> from the original position <inline-formula>
<mml:math display="inline" id="im20">
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msup>
<mml:mi>a</mml:mi>
<mml:mi>f</mml:mi>
</mml:msup>
<mml:mo>,</mml:mo>
<mml:msup>
<mml:mi>b</mml:mi>
<mml:mi>f</mml:mi>
</mml:msup>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>f</mml:mi>
<mml:mo>&gt;</mml:mo>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> reconstructed to the same starting point (0,0), the process is as in Eq (5):</p>
<disp-formula>
<label>(5)</label>
<mml:math display="block" id="M5">
<mml:mrow>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mi>a</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>f</mml:mi>
</mml:msubsup>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mi>b</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>f</mml:mi>
</mml:msubsup>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mi>a</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>f</mml:mi>
</mml:msubsup>
<mml:mo>&#x2212;</mml:mo>
<mml:msubsup>
<mml:mi>a</mml:mi>
<mml:mn>0</mml:mn>
<mml:mi>f</mml:mi>
</mml:msubsup>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mi>b</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>f</mml:mi>
</mml:msubsup>
<mml:mo>&#x2212;</mml:mo>
<mml:msubsup>
<mml:mi>b</mml:mi>
<mml:mn>0</mml:mn>
<mml:mi>f</mml:mi>
</mml:msubsup>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<p>where <inline-formula>
<mml:math display="inline" id="im21">
<mml:mrow>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mi>a</mml:mi>
<mml:mn>0</mml:mn>
<mml:mi>f</mml:mi>
</mml:msubsup>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mi>b</mml:mi>
<mml:mn>0</mml:mn>
<mml:mi>f</mml:mi>
</mml:msubsup>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> represents the latitude and longitude coordinates of the <italic>f</italic>th sample in the first time step.</p>
<p>In this way, we can unify the starting point of all trajectories to the same location, eliminating the spatial bias caused by different starting point locations, to make trajectory prediction more efficient.</p>
<p>In ship trajectory prediction, we use matrix neural networks for autoregressive or sliding window prediction frameworks. Data embedding reconstruction for time series is also referred to as Taken&#x2019;s theorem. According to Taken&#x2019;s theorem, the size is chosen to be <italic>&#x3b1;</italic> and a regular interval of <italic>&#x3b2;</italic> to reconstruct the time series, thus the original time series&#x2019; properties are preserved in the reconstructed time series. The given ship trajectories are binary sequences, and each trajectory data is embedded as a matrix of size <inline-formula>
<mml:math display="inline" id="im22">
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>T</mml:mi>
<mml:mi>f</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#xd7;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
<mml:mo>&#xd7;</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>, and each data point contains two feature information of latitude and longitude (<italic>a<sub>t</sub>,b<sub>t</sub>
</italic>). The time series data takes the location coordinate information as an input point in chronological order, and then forms an input matrix <inline-formula>
<mml:math display="inline" id="im23">
<mml:mrow>
<mml:msubsup>
<mml:mi>m</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>f</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>. Each row of the input matrix contains two eigenvalues, latitude and longitude. Starting from the <italic>&#x3b1;</italic> + 1st position coordinate to the last position coordinate as a data point, the output matrix is formed. Each row of the output matrix also contains two eigenvalues. The input matrix and output matrix form are shown in Eq(6): (<italic>t</italic> &#x2265; 0)</p>
<disp-formula>
<label>(6)</label>
<mml:math display="block" id="M6">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold">m</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>f</mml:mi>
</mml:msubsup>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msubsup>
<mml:mi>a</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>f</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:msubsup>
<mml:mi>a</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>f</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msubsup>
<mml:mi>a</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mi>f</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:msubsup>
<mml:mi>b</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mi>f</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mo>&#x22ee;</mml:mo>
</mml:mtd>
<mml:mtd>
<mml:mo>&#x22ee;</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msubsup>
<mml:mi>a</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>+</mml:mo>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
<mml:mi>f</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:msubsup>
<mml:mi>b</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>+</mml:mo>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
<mml:mi>f</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
<mml:mo>]</mml:mo>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold">n</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>f</mml:mi>
</mml:msubsup>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msubsup>
<mml:mi>a</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>+</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mi>f</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:msubsup>
<mml:mi>b</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>+</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mi>f</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mo>&#x22ee;</mml:mo>
</mml:mtd>
<mml:mtd>
<mml:mo>&#x22ee;</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
<mml:mo>]</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<p>In this way, we can convert the trajectory data into matrix form and use it to train a matrix neural network model to achieve predictions of ship trajectories.</p>
<p>When dealing with problems involving spatial correlation such as ship trajectory coordinates, if the traditional neural network input vector sum is used, information will be lost. As a result, matrix neural networks are better suited to handle these issues. The mapping between MNN layers and layers is defined in Eq(7).</p>
<disp-formula>
<label>(7)</label>
<mml:math display="block" id="M7">
<mml:mrow>
<mml:msup>
<mml:mtext mathvariant="bold">X</mml:mtext>
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>=</mml:mo>
<mml:mi>&#x3c3;</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msup>
<mml:mtext mathvariant="bold">W</mml:mtext>
<mml:mi>l</mml:mi>
</mml:msup>
<mml:msup>
<mml:mtext mathvariant="bold">X</mml:mtext>
<mml:mi>l</mml:mi>
</mml:msup>
<mml:msup>
<mml:mtext mathvariant="bold">V</mml:mtext>
<mml:mrow>
<mml:mtext>l</mml:mtext>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo>+</mml:mo>
<mml:msup>
<mml:mtext>B</mml:mtext>
<mml:mi>l</mml:mi>
</mml:msup>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<p>The expanded form is as follows:</p>
<disp-formula>
<label>(8)</label>
<mml:math display="block" id="M8">
<mml:mrow>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msubsup>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mi>f</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msubsup>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mi>f</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msubsup>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi>f</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
<mml:mo>]</mml:mo>
</mml:mrow>
<mml:mo>=</mml:mo>
<mml:mi>&#x3c3;</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msubsup>
<mml:mi>w</mml:mi>
<mml:mrow>
<mml:mn>11</mml:mn>
</mml:mrow>
<mml:mi>l</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:msubsup>
<mml:mi>w</mml:mi>
<mml:mrow>
<mml:mn>12</mml:mn>
</mml:mrow>
<mml:mi>l</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mo>&#x2026;</mml:mo>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:msubsup>
<mml:mi>w</mml:mi>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mi>l</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msubsup>
<mml:mi>w</mml:mi>
<mml:mrow>
<mml:mn>21</mml:mn>
</mml:mrow>
<mml:mi>l</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:msubsup>
<mml:mi>w</mml:mi>
<mml:mrow>
<mml:mn>12</mml:mn>
</mml:mrow>
<mml:mi>l</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mo>&#x2026;</mml:mo>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:msubsup>
<mml:mi>w</mml:mi>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mi>l</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msubsup>
<mml:mi>w</mml:mi>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>l</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:msubsup>
<mml:mi>w</mml:mi>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mi>l</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mo>&#x2026;</mml:mo>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:msubsup>
<mml:mi>w</mml:mi>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mi>l</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
<mml:mo>]</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msubsup>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mi>f</mml:mi>
</mml:mrow>
<mml:mi>l</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msubsup>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mi>f</mml:mi>
</mml:mrow>
<mml:mi>l</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msubsup>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mi>f</mml:mi>
</mml:mrow>
<mml:mi>l</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
<mml:mo>]</mml:mo>
</mml:mrow>
<mml:mo>+</mml:mo>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msubsup>
<mml:mi>b</mml:mi>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mi>f</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msubsup>
<mml:mi>b</mml:mi>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mi>f</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msubsup>
<mml:mi>b</mml:mi>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi>f</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
<mml:mo>]</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<p>Among them, <italic>X<sup>l</sup>
</italic> is the matrix variable of the L layer, <italic>X<sup>l</sup>
</italic>
<sup>+1</sup> is the output in the <italic>L</italic> layer, <italic>W</italic>, <italic>X</italic>, <italic>V</italic>, <italic>B</italic> are matrices with compatible dimensions, <italic>B<sup>l</sup>
</italic> is the offset of the current layer, and <italic>&#x3c3;</italic>()is the activation function. The matrix form of the data can be maintained by Eq(8). Through the changes of <italic>W</italic>(<italic>l</italic>), <italic>X</italic>(<italic>l</italic>), and <italic>V</italic> (<italic>l</italic>), the matrix form of the hidden layer can be reconstructed. The specific matrix change process is shown in Eq(9):</p>
<disp-formula>
<label>(9)</label>
<mml:math display="block" id="M9">
<mml:mrow>
<mml:msup>
<mml:mi>W</mml:mi>
<mml:mi>l</mml:mi>
</mml:msup>
<mml:mo>&#x2208;</mml:mo>
<mml:msup>
<mml:mi>R</mml:mi>
<mml:mi>p</mml:mi>
</mml:msup>
<mml:msup>
<mml:mtext>&#xa0;</mml:mtext>
<mml:mrow>
<mml:mo>&#xd7;</mml:mo>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo>&#xd7;</mml:mo>
<mml:msup>
<mml:mi>X</mml:mi>
<mml:mi>l</mml:mi>
</mml:msup>
<mml:mo>&#x2208;</mml:mo>
<mml:msup>
<mml:mi>R</mml:mi>
<mml:mi>a</mml:mi>
</mml:msup>
<mml:msup>
<mml:mtext>&#xa0;</mml:mtext>
<mml:mrow>
<mml:mo>&#xd7;</mml:mo>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo>&#xd7;</mml:mo>
<mml:msup>
<mml:mi>V</mml:mi>
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo>&#x2208;</mml:mo>
<mml:msup>
<mml:mi>R</mml:mi>
<mml:mi>b</mml:mi>
</mml:msup>
<mml:msup>
<mml:mtext>&#xa0;</mml:mtext>
<mml:mrow>
<mml:mo>&#xd7;</mml:mo>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mi>X</mml:mi>
<mml:mi>l</mml:mi>
</mml:msup>
<mml:msup>
<mml:mtext>&#xa0;</mml:mtext>
<mml:mrow>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>&#x2208;</mml:mo>
<mml:msup>
<mml:mi>R</mml:mi>
<mml:mi>p</mml:mi>
</mml:msup>
<mml:msup>
<mml:mtext>&#xa0;</mml:mtext>
<mml:mrow>
<mml:mo>&#xd7;</mml:mo>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:math>
</disp-formula>
<p>The matrix variation formula of a matrix neural network is shown the matrix transformation process from input matrix <italic>X<sup>l</sup>
</italic> to output matrix <italic>X<sup>l</sup>
</italic>
<sup>+1</sup>, which is different from traditional vector-based input. Also shown is the matrix transformation for the <italic>i</italic>th window from time <italic>t</italic> to <italic>t</italic> + <italic>&#x3b1;</italic>, which gives the latitude and longitude of the ship&#x2019;s trajectory. Among them, the matrix dimension is changed from <italic>a</italic> &#xd7; <italic>b</italic> to <italic>p</italic> &#xd7; <italic>q</italic> by the dimension dot product of the input matrix.</p>
<p>The definition of the ship trajectory indicates that the input data m<italic>
<sup>f</sup>
</italic> of the matrix neural network is a three-dimensional tensor of size, that is, the number of sliding windows for each input data is <italic>T<sub>f</sub>
</italic> - <italic>&#x3b1;</italic>), each The size of the input unit is <italic>&#x3b1;</italic> &#xd7; 2. The number of each output data sliding window of the output data is also, and the size of each output unit is 2. That is, we need to find the mapping relationship that changes the size of the matrix from <italic>&#x3b1;</italic> &#xd7; 2 to 2, that is, <italic>f</italic>: &#x211d;<italic>
<sup>a</sup>
</italic>
<sup>&#xd7;2</sup> &#x2192; &#x211d;<sup>2</sup>. To lessen the discrepancy between the supplied output n<italic>
<sup>f</sup>
</italic> and the network output <inline-formula>
<mml:math display="inline" id="im24">
<mml:mrow>
<mml:msup>
<mml:mover accent="true">
<mml:mi>n</mml:mi>
<mml:mo>^</mml:mo>
</mml:mover>
<mml:mi>f</mml:mi>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula>, we adopt Eq(10) for learning.</p>
<disp-formula>
<label>(10)</label>
<mml:math display="block" id="M10">
<mml:mrow>
<mml:munder>
<mml:mrow>
<mml:mi>min</mml:mi>
</mml:mrow>
<mml:mi>W</mml:mi>
</mml:munder>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>f</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>N</mml:mi>
</mml:munderover>
<mml:mi>L</mml:mi>
</mml:mstyle>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msup>
<mml:mover accent="true">
<mml:mi>n</mml:mi>
<mml:mo>^</mml:mo>
</mml:mover>
<mml:mi>f</mml:mi>
</mml:msup>
<mml:mo>,</mml:mo>
<mml:msup>
<mml:mi>n</mml:mi>
<mml:mi>f</mml:mi>
</mml:msup>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>=</mml:mo>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>f</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>N</mml:mi>
</mml:munderover>
<mml:mrow>
<mml:mfrac>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mrow>
<mml:msub>
<mml:mi>T</mml:mi>
<mml:mi>f</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mstyle>
<mml:msubsup>
<mml:mrow>
<mml:mrow>
<mml:mo>&#x2016;</mml:mo>
<mml:mrow>
<mml:msup>
<mml:mtext mathvariant="bold">n</mml:mtext>
<mml:mi>f</mml:mi>
</mml:msup>
<mml:mo>&#x2212;</mml:mo>
<mml:msup>
<mml:mover accent="true">
<mml:mtext mathvariant="bold">n</mml:mtext>
<mml:mo>^</mml:mo>
</mml:mover>
<mml:mi>f</mml:mi>
</mml:msup>
</mml:mrow>
<mml:mo>&#x2016;</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mn>2</mml:mn>
<mml:mn>2</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</disp-formula>
</sec>
<sec id="s3_3">
<label>3.3</label>
<title>Kalman filter optimization</title>
<p>The ship&#x2019;s track in space is some time series data. Because our track data is measured by various sensors, there will be some unavoidable errors. To ensure the accuracy of trajectory prediction, we need to smooth the data. Rudolph E. Kalman put forward the Kalman filter in 1960 and gave a new method to solve the prediction problem. Kalman filter takes into account the possible uncertainty in the prediction process and estimates the optimal result through incomplete accurate prediction models and incomplete accurate measurement results. The prediction equation includes the system&#x2019;s status right now and the uncertainty of the system. The specific process of KF is to evaluate the prediction equation and correction equation through recursion. The prediction equation estimates the current state and uncertainty of the system. The correction equation uses the measured current state quantity of the system to update the estimation. It should be noted that in KF, we assume that both system uncertainty and measurement uncertainty follow a normal distribution.</p>
<p>The prediction equation of Kalman filter is:</p>
<disp-formula>
<label>(11)</label>
<mml:math display="block" id="M11">
<mml:mrow>
<mml:msubsup>
<mml:mover accent="true">
<mml:mi>x</mml:mi>
<mml:mo>^</mml:mo>
</mml:mover>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
</mml:msubsup>
<mml:mo>=</mml:mo>
<mml:mtext>A</mml:mtext>
<mml:mo>&#xb7;</mml:mo>
<mml:msub>
<mml:mover accent="true">
<mml:mi>x</mml:mi>
<mml:mo>^</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:mtext>B</mml:mtext>
<mml:mo>&#xb7;</mml:mo>
<mml:msub>
<mml:mtext mathvariant="bold-italic">u</mml:mtext>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula>
<label>(12)</label>
<mml:math display="block" id="M12">
<mml:mrow>
<mml:msubsup>
<mml:mtext>P</mml:mtext>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
</mml:msubsup>
<mml:mo>=</mml:mo>
<mml:mtext>A</mml:mtext>
<mml:mo>&#xb7;</mml:mo>
<mml:msub>
<mml:mtext>R</mml:mtext>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#xb7;</mml:mo>
<mml:msup>
<mml:mtext>A</mml:mtext>
<mml:mi>T</mml:mi>
</mml:msup>
<mml:mo>+</mml:mo>
<mml:mtext mathvariant="bold-italic">Q</mml:mtext>
</mml:mrow>
</mml:math>
</disp-formula>
<p>In Eq(11) <inline-formula>
<mml:math display="inline" id="im25">
<mml:mrow>
<mml:msubsup>
<mml:mstyle mathvariant="" mathsize="normal">
<mml:mover accent="true">
<mml:mi>X</mml:mi>
<mml:mo>^</mml:mo>
</mml:mover>
</mml:mstyle>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> represents a prior estimate at time <italic>k</italic>, <italic>A</italic> is the state matrix, <inline-formula>
<mml:math display="inline" id="im26">
<mml:mrow>
<mml:msub>
<mml:mstyle mathvariant="" mathsize="normal">
<mml:mover accent="true">
<mml:mi>X</mml:mi>
<mml:mo>^</mml:mo>
</mml:mover>
</mml:mstyle>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> represents the estimated value at <italic>k</italic> &#x2212; 1 time, <italic>B</italic> represents the control matrix, u<italic>
<sub>k</sub>
</italic>
<sub>&#x2212;1</sub> represents the control variable at the moment. In Eq(12) <inline-formula>
<mml:math display="inline" id="im27">
<mml:mrow>
<mml:msubsup>
<mml:mtext>P</mml:mtext>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> represents the prior error covariance, <italic>A</italic> represents the state matrix, <inline-formula>
<mml:math display="inline" id="im28">
<mml:mrow>
<mml:msub>
<mml:mtext>P</mml:mtext>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> represents the error covariance at <italic>k</italic> &#x2212; 1, and <italic>Q</italic> represents the covariance of process noise. The correction equation of the</p>
<p>Kalman filter is:</p>
<disp-formula>
<label>(13)</label>
<mml:math display="block" id="M13">
<mml:mrow>
<mml:mtable columnalign="left">
<mml:mtr columnalign="left">
<mml:mtd columnalign="left">
<mml:mrow>
<mml:msub>
<mml:mstyle mathvariant="bold" mathsize="normal">
<mml:mi>K</mml:mi>
</mml:mstyle>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mo>&#xa0;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msubsup>
<mml:mstyle mathvariant="bold" mathsize="normal">
<mml:mi>P</mml:mi>
</mml:mstyle>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
</mml:msubsup>
<mml:mo>&#xb7;</mml:mo>
<mml:msup>
<mml:mstyle mathvariant="bold" mathsize="normal">
<mml:mi>H</mml:mi>
</mml:mstyle>
<mml:mi>T</mml:mi>
</mml:msup>
</mml:mrow>
<mml:mrow>
<mml:mstyle mathvariant="bold" mathsize="normal">
<mml:mi>H</mml:mi>
</mml:mstyle>
<mml:mo>&#xb7;</mml:mo>
<mml:msubsup>
<mml:mstyle mathvariant="bold" mathsize="normal">
<mml:mi>P</mml:mi>
</mml:mstyle>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
</mml:msubsup>
<mml:mo>&#xb7;</mml:mo>
<mml:msup>
<mml:mstyle mathvariant="bold" mathsize="normal">
<mml:mi>H</mml:mi>
</mml:mstyle>
<mml:mi>T</mml:mi>
</mml:msup>
<mml:mo>+</mml:mo>
<mml:mstyle mathvariant="bold" mathsize="normal">
<mml:mi>R</mml:mi>
</mml:mstyle>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#xa0;</mml:mo>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula>
<label>(14)</label>
<mml:math display="block" id="M14">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>x</mml:mi>
<mml:mo>^</mml:mo>
</mml:mover>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:msubsup>
<mml:mover accent="true">
<mml:mi>x</mml:mi>
<mml:mo>^</mml:mo>
</mml:mover>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
</mml:msubsup>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mtext>K</mml:mtext>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:mo>&#xb7;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>z</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mtext mathvariant="bold">H</mml:mtext>
<mml:mo>&#xb7;</mml:mo>
<mml:msubsup>
<mml:mover accent="true">
<mml:mi>x</mml:mi>
<mml:mo>^</mml:mo>
</mml:mover>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
</mml:msubsup>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula>
<label>(15)</label>
<mml:math display="block" id="M15">
<mml:mrow>
<mml:msub>
<mml:mtext>P</mml:mtext>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mtext mathvariant="bold">I</mml:mtext>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mtext mathvariant="bold">K</mml:mtext>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:mo>&#xb7;</mml:mo>
<mml:mtext mathvariant="bold">H</mml:mtext>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#xb7;</mml:mo>
<mml:msubsup>
<mml:mtext mathvariant="bold">P</mml:mtext>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
</mml:msubsup>
</mml:mrow>
</mml:math>
</disp-formula>
<p>In Eq(13), K<italic>
<sub>k</sub>
</italic>represents the Kalman ga in, <italic>H</italic> represents the observation matrix, and <italic>R</italic> represents the error covariance of the measurement process. In Equation (14),<inline-formula>
<mml:math display="inline" id="im29">
<mml:mrow>
<mml:msub>
<mml:mstyle mathvariant="" mathsize="normal">
<mml:mover accent="true">
<mml:mi>X</mml:mi>
<mml:mo>^</mml:mo>
</mml:mover>
</mml:mstyle>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> represents a posterior estimate, that is, the optimal estimate we need, Z<italic>
<sub>k</sub>
</italic>represents the measured value at time <italic>k</italic>. In Eq(15), P<italic>
<sub>k</sub>
</italic>represents the update error covariance at time <italic>k</italic>. The covariance matrices of process noise and measurement noise are represented by the matrices <italic>Q</italic> and <italic>R</italic> in the Kalman filter, respectively. The larger the value of <italic>Q</italic>, the more trust we have in the measured results, the greater the value of <italic>R</italic> will be, and the more trust we have in the estimated results.</p>
<p>When the M-STCP method is combined with the Kalman filter for ship trajectory prediction, the Kalman filter needs to be set including the state transition equation, measurement equation, initial state, and covariance matrix. First, a dynamic trajectory forecast model is determined by the vessel&#x2019;s historical trajectory. Then, the observation values such as position and speed information are input into the matrix neural network, and the state estimation is carried out to obtain the predicted value of the ship&#x2019;s state at that moment. The predicted value is then corrected using a Kalman filter to obtain a ship condition estimate that is closer to the real value. The specific implementation is shown in <xref ref-type="statement" rid="st3">
<bold>algorithm 3</bold>
</xref> .</p>
<p>We can define the state of a ship as a four-dimensional vector <italic>X</italic>(k) ={x<sub>k</sub>, y<sub>k</sub>, v<sub>xk</sub>, v<sub>xyk</sub>}, where <italic>x<sub>k</sub>
</italic>and <italic>y<sub>k</sub>
</italic>represent the ship&#x2019;s position on a planar coordinate system, and <italic>v<sub>xk</sub>
</italic>and <italic>v<sub>yk</sub>
</italic>represent the ship&#x2019;s velocity in the x-axis and y-axis directions. This state variable evolves between adjacent temporal steps, so we can use a transition matrix <italic>A</italic> to describe the evolution of state variables in each temporal step. In particular, under the assumption that the time step is <italic>dt</italic>, the transition matrix can be defined as:</p>
<disp-formula>
<label>(16)</label>
<mml:math display="block" id="M16">
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mn>1</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mi>d</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn>1</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mi>d</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn>1</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn>1</mml:mn>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
<mml:mo>]</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<p>The <italic>Q</italic> process noise covariance matrix represents the uncertainty or noise of the state variable during the forecast. Ships can be affected by factors such as wind and currents while sailing, so we can build a random walking pattern. Then, depending on the location of the ship, we can define the <italic>Q</italic> corresponding to where <italic>t</italic> is the sampling interval.</p>
<disp-formula>
<label>(17)</label>
<mml:math display="block" id="M17">
<mml:mrow>
<mml:mi>Q</mml:mi>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mn>3</mml:mn>
</mml:mfrac>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x394;</mml:mi>
<mml:msup>
<mml:mi>t</mml:mi>
<mml:mn>3</mml:mn>
</mml:msup>
<mml:msup>
<mml:mi>v</mml:mi>
<mml:mn>2</mml:mn>
</mml:msup>
</mml:mrow>
<mml:mrow>
<mml:msup>
<mml:mi>L</mml:mi>
<mml:mn>2</mml:mn>
</mml:msup>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mn>2</mml:mn>
</mml:mfrac>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x394;</mml:mi>
<mml:msup>
<mml:mi>t</mml:mi>
<mml:mn>2</mml:mn>
</mml:msup>
<mml:mi>v</mml:mi>
</mml:mrow>
<mml:mi>L</mml:mi>
</mml:mfrac>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mn>3</mml:mn>
</mml:mfrac>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x394;</mml:mi>
<mml:msup>
<mml:mi>t</mml:mi>
<mml:mn>3</mml:mn>
</mml:msup>
<mml:msup>
<mml:mi>v</mml:mi>
<mml:mn>2</mml:mn>
</mml:msup>
</mml:mrow>
<mml:mrow>
<mml:msup>
<mml:mi>L</mml:mi>
<mml:mn>2</mml:mn>
</mml:msup>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mn>2</mml:mn>
</mml:mfrac>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x394;</mml:mi>
<mml:msup>
<mml:mi>t</mml:mi>
<mml:mn>2</mml:mn>
</mml:msup>
<mml:mi>v</mml:mi>
</mml:mrow>
<mml:mi>L</mml:mi>
</mml:mfrac>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mn>2</mml:mn>
</mml:mfrac>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x394;</mml:mi>
<mml:msup>
<mml:mi>t</mml:mi>
<mml:mn>2</mml:mn>
</mml:msup>
<mml:mi>v</mml:mi>
</mml:mrow>
<mml:mi>L</mml:mi>
</mml:mfrac>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mi>&#x394;</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mn>2</mml:mn>
</mml:mfrac>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x394;</mml:mi>
<mml:msup>
<mml:mi>t</mml:mi>
<mml:mn>2</mml:mn>
</mml:msup>
<mml:mi>v</mml:mi>
</mml:mrow>
<mml:mi>L</mml:mi>
</mml:mfrac>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mi>&#x394;</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
<mml:mo>]</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<p>Observe the value of the noise covariance matrix <italic>R</italic> We measure the position and speed data of the ship, record the measurement data and observe the error to obtain the value of the <italic>R</italic> matrix, and you can set it to:</p>
<disp-formula>
<label>(18)</label>
<mml:math display="block" id="M18">
<mml:mrow>
<mml:mi>R</mml:mi>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msubsup>
<mml:mi>&#x3c3;</mml:mi>
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:msubsup>
<mml:mi>&#x3c3;</mml:mi>
<mml:mrow>
<mml:mi>y</mml:mi>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:msubsup>
<mml:mi>&#x3c3;</mml:mi>
<mml:mrow>
<mml:msub>
<mml:mi>v</mml:mi>
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:msubsup>
<mml:mi>&#x3c3;</mml:mi>
<mml:mrow>
<mml:msub>
<mml:mi>v</mml:mi>
<mml:mrow>
<mml:mi>y</mml:mi>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
<mml:mo>]</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<statement id="st3">
<label>Algorithm 3. Kalman filter optimization.</label>
<p>
<bold>Input</bold>: Get raw vessel location data <bold>
<italic>T</italic>
</bold> = {(<italic>x</italic>
<sub>1</sub>
<italic>,y</italic>
<sub>1</sub>),(<italic>x</italic>
<sub>2</sub>
<italic>,y</italic>
<sub>2</sub>)<italic>,&#x2026;</italic>,(<italic>x<sub>n</sub>,y<sub>n</sub>
</italic>)}</p>
<p>
<bold>Output</bold>: Filtered position data <bold>
<italic>T</italic>
</bold> <sub>1</sub> = {<bold>
<italic>T</italic>
</bold>
<italic>rj</italic>
<sub>1</sub>,<bold>
<italic>T</italic>
</bold> &#xb7; <italic>j</italic>
<sub>2</sub>,&#xb7;&#xb7;&#xb7;,<bold>
<italic>T</italic>
</bold>
<italic>rj<sub>n</sub>
</italic>}</p>
<p>1: <italic>D</italic> = trajectPretreatment (<bold>
<italic>T</italic>
</bold>);</p>
<p>2: Initialize the state vector <bold>
<italic>X</italic>
</bold> and covariance matrix <bold>
<italic>P</italic>
</bold> of the Kalman filter, and set the observation noise covariance matrix <bold>
<italic>R</italic>
</bold> and the system noise covariance matrix <bold>
<italic>Q</italic>
</bold>;</p>
<p>3: <bold>for</bold> each location point (<italic>x<sub>k</sub>,y<sub>k</sub>
</italic>) <bold>do</bold>
</p>
<p>4: According to the current states <italic>X<sub>k</sub>
</italic>&#x2212;<sub>1</sub> and <italic>P<sub>k</sub>
</italic>&#x2212;<sub>1</sub>, <italic>X<sub>k</sub>
</italic>|&#x2212;<sub>1</sub> and <italic>P<sub>k</sub>
</italic>|&#x2212;<sub>1</sub> are obtained by using the state transition equation for prediction;</p>
<p>5: According to the predictions <italic>X<sub>k</sub>
</italic>|&#x2212;<sub>1</sub>, <italic>P<sub>k</sub>
</italic>|&#x2212;<sub>1</sub> and <italic>Z<sub>k</sub>
</italic>, update <italic>X<sub>k</sub>
</italic>and <italic>P<sub>k</sub>
</italic>with the update formula;</p>
<p>6: Record the updated <italic>X<sub>k</sub>
</italic>as filtered position data;</p>
<p>7: state = getCurrentState (<italic>D</italic>);</p>
<p>8: <bold>for</bold> <italic>i</italic> = 1 to <italic>k</italic> <bold>do</bold>
</p>
<p>9: <italic>p</italic>
<sup>&#x2032;</sup> = kalmanPredict (<italic>D</italic>);</p>
<p>10: <bold>end for</bold>
</p>
<p>11: <bold>end for</bold>
</p>


</statement>
</sec>
</sec>
<sec id="s4">
<label>4</label>
<title>Experiments and analysis</title>
<p>In this section, we leverage a substantial amount of actual ship trajectory data to validate the model&#x2019;s efficacy. The prediction results of M-STCP, GRU models (<xref ref-type="bibr" rid="B10">Han et&#xa0;al., 2019</xref>), and long short-term memory networks (<xref ref-type="bibr" rid="B32">Tang et&#xa0;al., 2022</xref>) are compared. It is demonstrated that our methodology accurately predicts time series data by a comparative study of the experimental findings.</p>
<sec id="s4_1">
<label>4.1</label>
<title>Data description</title>
<p>To ensure the validity of trajectory prediction, we utilize real trajectory data. The ship tracking data used in this article is from the Wenzhou Fishing Vessel Safety and Rescue Center, which contains about 5 million tracks in Jiangsu and Zhejiang in 2016. The GPS data collection cycle is 15-30 minutes, the data set size is approximately 70GB, and it contains about 40 million pieces of trajectory data. Oracle Database is used for data storage. In <xref ref-type="table" rid="T1">
<bold>Table&#xa0;1</bold>
</xref>, a sample of the GPS data are displayed. To obtain the density/frequency feature of the trajectory data, we plot ship trajectories every four months in the same heatmap respectively. The space heat map is shown in <xref ref-type="fig" rid="f4">
<bold>Figure&#xa0;4</bold>
</xref>.</p>
<table-wrap id="T1" position="float">
<label>Table&#xa0;1</label>
<caption>
<p>GPS track data storage format and data sample.</p>
</caption>
<table frame="hsides">
<thead>
<tr>
<th valign="top" align="center">Field name</th>
<th valign="top" align="center">Storage type</th>
<th valign="top" align="center">Sample data</th>
</tr>
</thead>
<tbody>
<tr>
<td valign="top" align="center">ID</td>
<td valign="top" align="center">INT</td>
<td valign="top" align="center">29140</td>
</tr>
<tr>
<td valign="top" align="center">TIME</td>
<td valign="top" align="center">INT</td>
<td valign="top" align="left">2016-01-01 00:00:10</td>
</tr>
<tr>
<td valign="top" align="center">LATITUDE (&#xb0;)</td>
<td valign="top" align="center">DOUBLE</td>
<td valign="top" align="center">36.72</td>
</tr>
<tr>
<td valign="top" align="center">LONGITUDE (&#xb0;)</td>
<td valign="top" align="center">DOUBLE</td>
<td valign="top" align="center">122.68</td>
</tr>
<tr>
<td valign="top" align="center">SPEED (knots)</td>
<td valign="top" align="center">DOUBLE</td>
<td valign="top" align="center">25</td>
</tr>
<tr>
<td valign="top" align="center">DIRECTION (&#xb0;)</td>
<td valign="top" align="center">DOUBLE</td>
<td valign="top" align="center">324</td>
</tr>
</tbody>
</table>
</table-wrap>
<fig id="f4" position="float">
<label>Figure&#xa0;4</label>
<caption>
<p>Visualization of GPS raw data from Zhoushan fishery, China. After the sea zone is gridded into cells, horizontal and vertical coordinates are established, and the number of vessel occurrences in each cell is accumulated. Each cell is 10 km long. The yellow area denotes the area with a higher density of the trajectory, and the darker the hue, the greater the density of the trajectory. The blue line represents the ship&#x2019;s trajectory.</p>
</caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fmars-10-1199238-g004.tif"/>
</fig>
<p>The data distribution after extraction and processing of the original ship trajectory and anomaly point cleaning is shown in <xref ref-type="fig" rid="f5">
<bold>Figure&#xa0;5</bold>
</xref>. The trajectory points set in this paper have a longitude range of [119.6,131.0], a latitude range of [22.0,33.8], a direction range of [0.0,360.0], and a velocity range of [0.0,25.0].</p>
<fig id="f5" position="float">
<label>Figure&#xa0;5</label>
<caption>
<p>The distribution of longitude, latitude, velocity, and direction after removing anomalies data in the trajectory. The continuous blue line represents the median, the yellow dashed line represents the 25% quantile, and the 75% quantile is also labelled.</p>
</caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fmars-10-1199238-g005.tif"/>
</fig>
<p>Due to the complex ship motion pattern in the real data, the ship&#x2019;s trajectory is not single linear, we cluster it using the DBSCAN technique based on density. According to the collected large number of ship trajectory data, the corresponding characteristics such as ship number and ship steering angle are selected, and the ship trajectories with similar patterns are regarded as the same cluster through DBSCAN. The key to the clustering algorithm is to adjust the two parameters of the Eps radius and the minimum number of MinPts samples. Following experimental tests, our Epsilon is set to 0.4 and MinPts to 8, optimizing the clustering effect. The results of the ship trajectory clustering are displayed in <xref ref-type="fig" rid="f6">
<bold>Figure&#xa0;6</bold>
</xref>, including the number of the four clusters and the approximate direction of the trajectory. Although there are some anomalous trajectories in the clustering results, we can see significant differences between each cluster.</p>
<fig id="f6" position="float">
<label>Figure&#xa0;6</label>
<caption>
<p>The result of trajectory clustering. <bold>(A-C)</bold> are cluster 1, <bold>(D-F)</bold> are cluster two, <bold>(G-I)</bold> are cluster three, and <bold>(J-L)</bold> are cluster four.</p>
</caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fmars-10-1199238-g006.tif"/>
</fig>
</sec>
<sec id="s4_2">
<label>4.2</label>
<title>Performance evalution</title>
<p>For neural networks, the value range of the input features is too large to cause the gradient descent algorithm to converge slowly or difficult to converge, so we normalize the input features, scale the data to the range of [0,1], and limit the value range to a certain range, to eliminate the adverse effects caused by the data, accelerate the model convergence speed, and enhance the model&#x2019;s generalizability and stability. The normalization formula is shown in Eq(16):</p>
<disp-formula>
<label>(19)</label>
<mml:math display="block" id="M19">
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mi>min</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mi>max</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mi>min</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:math>
</disp-formula>
<p>where <italic>x</italic> is the original data, <italic>x</italic>
<sub>min</sub> and <italic>x</italic>
<sub>max</sub> are the minimum and maximum values of the data in the sample, respectively, and <italic>x<sub>norm</sub>
</italic>is the normalized data.</p>
<p>At present, the mainstream methods in the field of ship trajectory prediction include recurrent neural networks, deep learning, LSTM, GRU, etc. We compare these methods, as shown in <xref ref-type="table" rid="T2">
<bold>Table&#xa0;2</bold>
</xref>. We can see that MNN is a new method of predicting trajectory, which has greater efficiency and data processing capacity than the traditional neural network method. Comparison of mainstream methods for ship trajectory prediction.</p>
<table-wrap id="T2" position="float">
<label>Table&#xa0;2</label>
<caption>
<p>Parameter values of M-STCP, LSTM, GRU models.</p>
</caption>
<table frame="hsides">
<thead>
<tr>
<th valign="top" align="left">Parameter name</th>
<th valign="top" align="center">M-STCP</th>
<th valign="top" align="center">LSTM</th>
<th valign="top" align="center">GRU</th>
</tr>
</thead>
<tbody>
<tr>
<td valign="top" align="left">Learning rate</td>
<td valign="top" align="center">0.001</td>
<td valign="top" align="center">0.01</td>
<td valign="top" align="center">0.01</td>
</tr>
<tr>
<td valign="top" align="left">Batch size</td>
<td valign="top" align="center">32</td>
<td valign="top" align="center">64</td>
<td valign="top" align="center">64</td>
</tr>
<tr>
<td valign="top" align="left">Number of training rounds</td>
<td valign="top" align="center">1000</td>
<td valign="top" align="center">1000</td>
<td valign="top" align="center">1000</td>
</tr>
<tr>
<td valign="top" align="left">Number of hidden layers</td>
<td valign="top" align="center">2</td>
<td valign="top" align="center">2</td>
<td valign="top" align="center">2</td>
</tr>
<tr>
<td valign="top" align="left">Number of neurons per layer</td>
<td valign="top" align="center">128</td>
<td valign="top" align="center">128</td>
<td valign="top" align="center">128</td>
</tr>
<tr>
<td valign="top" align="left">Activation function</td>
<td valign="top" align="left">ReLU</td>
<td valign="top" align="center">ReLU</td>
<td valign="top" align="center">ReLU</td>
</tr>
<tr>
<td valign="top" align="left">Regularization method</td>
<td valign="top" align="center">L2</td>
<td valign="top" align="left">Dropout=0.3</td>
<td valign="top" align="left">Dropout=0.2</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>Parameter selection is an important factor influencing prediction outcomes. A number of neurons and a greater number of layers can extract more information about the vessel&#x2019;s track characteristics, but excessive complexity can also lead to overflow. The experiments use the RMSProp optimizer, a method to optimize adaptive learning rate and stochastic gradient descent. It can efficiently address oscillation and instability issues in traditional gradient descent algorithms. After experimental verification and parameter comparison, the M-STCP architecture comprises the following elements: input layer, matrix multiplication layer, non-linear transformation layer, loop layer and output layer. The input layer is used to input ship trajectory data into the neural network; The matrix multiplication layer converts the input trajectory data into matrix form for input to the next layer; The nonlinear change layer applies nonlinear functions to each element of the matrix to enhance the expressiveness of the model; The recurrent layer will apply the recurrent neural network to process the matrix to better capture the time series information in the trajectory data. The output layer produces the last line of the matrix subsequent to the prediction. Xavier initialization and ReLU activation are used to initialize the parameters. The loss function selects the average square error to reduce the error between the expected outcome and the actual value. In the case that the default learning rate is 0.001, in order to find the optimal batch size and the number of neurons, we conduct experimental comparisons and determine that the batch size is 32 and the number of neurons is 128. Supplementary parameter selections for the remaining two methods are presented in <xref ref-type="table" rid="T3">
<bold>Table&#xa0;3</bold>
</xref>. The details of experimental hardware configuration used in this paper are shown in <xref ref-type="table" rid="T4">
<bold>Table&#xa0;4</bold>
</xref>.</p>
<table-wrap id="T3" position="float">
<label>Table&#xa0;3</label>
<caption>
<p>The hardware configuration required for the experiment.</p>
</caption>
<table frame="hsides">
<thead>
<tr>
<th valign="top" align="left">Method</th>
<th valign="top" align="center">Advantages</th>
<th valign="top" align="center">Disadvantages</th>
</tr>
</thead>
<tbody>
<tr>
<td valign="top" align="left">MNN</td>
<td valign="top" align="center">Ability to handle multi-channel data, efficient, robust to missing values.</td>
<td valign="top" align="center">It is still in the development stage and more experimental verification is needed.</td>
</tr>
<tr>
<td valign="top" align="left">GRU</td>
<td valign="top" align="left">On the basis of LSTM, some parameters are reduced, and the calculation speed is faster.</td>
<td valign="top" align="center">More experimental validation is needed.</td>
</tr>
<tr>
<td valign="top" align="left">LSTM</td>
<td valign="top" align="center">Ability to handle long series of data.</td>
<td valign="top" align="center">High computational complexity.</td>
</tr>
<tr>
<td valign="top" align="left">RNN</td>
<td valign="top" align="center">For sequence data, the prediction effect is better.</td>
<td valign="top" align="center">High computational complexity.</td>
</tr>
<tr>
<td valign="top" align="left">Deep learning</td>
<td valign="top" align="center">Ability to automatically learn features and patterns.</td>
<td valign="top" align="center">A lot of data is required for training.</td>
</tr>
</tbody>
</table>
</table-wrap>
<table-wrap id="T4" position="float">
<label>Table&#xa0;4</label>
<caption>
<p>Comparison of prediction performance by using M-STCP, GRU, LSTM in terms of MAPE, MAE, RMSE.</p>
</caption>
<table frame="hsides">
<thead>
<tr>
<th valign="top" align="left">Device name</th>
<th valign="top" align="center">DELL XPS 8950</th>
</tr>
</thead>
<tbody>
<tr>
<td valign="top" align="left">Processor</td>
<td valign="top" align="left">12th Gen Inter (R) Core (TM) i7-12700 2.10 GHz</td>
</tr>
<tr>
<td valign="top" align="left">RAM</td>
<td valign="top" align="center">64.0GB (63.7GB Available)</td>
</tr>
<tr>
<td valign="top" align="left">System type</td>
<td valign="top" align="center">Windows11/Ubnutu 22.04</td>
</tr>
<tr>
<td valign="top" align="left">Display</td>
<td valign="top" align="center">NVIDIA GeForce RTX 3060 12GB</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>For additional evidence that the suggested model is workable and successful, we use 70% of the experimental dataset as the training set and 30% as the test set. The results of the M-STCP method and Kalman filter processing were compared and analyzed with the prediction results of the LSTM model and the GRU (<xref ref-type="bibr" rid="B11">Han et&#xa0;al., 2021</xref>) model, and the experimental results were verified by the test set. In the experiment, we selected two sets of data sets for comparison to compare the prediction effects of the three methods on simple and complex ship trajectories. The first set of datasets contains relatively complex, curved ship trajectory data; The second set of data includes simpler ship trajectory data. In <xref ref-type="fig" rid="f7">
<bold>Figure&#xa0;7</bold>
</xref>, the experimental outcomes are displayed. <xref ref-type="fig" rid="f7">
<bold>Figure&#xa0;7</bold>
</xref>&#x2019;s a and c show that at the beginning of the ship trajectory, only the prediction results of the M-STCP method processed by KF are more accurate, the M-STCP method has the same movement trend as the ship trajectory, but due to the influence of noise, there is a deviation in latitude and longitude, and the performance of the LSTM model is the worst. Although the prediction results of the three models are roughly the same as those of the real ship trajectory, M-STCP is better than LSTM and GRU in the trajectory prediction performance of the ship with large changes in the course of the ship. In <xref ref-type="fig" rid="f7">
<bold>Figure&#xa0;7</bold>
</xref>, it is visible from b that for simple trajectories, although the prediction results of LSTM and GRU have the same motion trend as the real trajectory, the position information has a large deviation, while the M-STCP method and the real trajectory not only have the same motion trend but also similar position information. This is because although LSTM and GRU have the strong fitting ability, they are also prone to overfitting. The matrix neural network adopts the matrix decomposition method to reduce the number of parameters, effectively reduces the risk of overfitting, and retains the spatiotemporal correlation in the trajectory data when predicting the trajectory of the ship, which also makes its prediction effect better than that of the traditional neural network.</p>
<fig id="f7" position="float">
<label>Figure&#xa0;7</label>
<caption>
<p>The results of predicting the latitude and longitude of ship trajectory by using M-STCP, LSTM, GRU and M-STCP combined with Kalman filter.</p>
</caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fmars-10-1199238-g007.tif"/>
</fig>
<p>To provide a more precise demonstration of the deviation between predicted and actual results, we have chosen to examine 100 sets of ship trajectories through three different methods, ultimately presenting their longitude and latitude error scatter plots in <xref ref-type="fig" rid="f8">
<bold>Figure&#xa0;8</bold>
</xref>. The M-STCP method&#x2019;s error in latitude and longitude can be found to be lower than those of the other two approaches, and the error of the M-STCP method after the Kalman filter treatment is further reduced, and the GRU model has the lowest prediction accuracy. This also proves the good performance of M-STCP in ship trajectory prediction.</p>
<fig id="f8" position="float">
<label>Figure&#xa0;8</label>
<caption>
<p>The ship trajectory error distribution is optimized by LSTM,GRU,M-STCP, and M-STCP after Kalman filter.</p>
</caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fmars-10-1199238-g008.tif"/>
</fig>
<p>For the prediction results of the experiment, We employ evaluation metrics including root mean square error RMSE, mean absolute error MAE, mean absolute percentage error MAPE. All four evaluation methods are that smaller values indicate more accurate predictions from the model. where <italic>y<sub>i</sub>
</italic>represents the true trajectory value and <inline-formula>
<mml:math display="inline" id="im30">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>y</mml:mi>
<mml:mo>^</mml:mo>
</mml:mover>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> represents the predicted value of the trajectory. As stated in <xref ref-type="table" rid="T5">
<bold>Table&#xa0;5</bold>
</xref>, the specific values are tabulated, and the histogram is shown in <xref ref-type="fig" rid="f9">
<bold>Figure&#xa0;9</bold>
</xref>. Taking MAPE and MSE as indicators to evaluate the prediction results, it can be seen that the M-STCP value is the smallest and the prediction effect is the best, followed by LSTM and GRU have the worst performance. Using MAE and RMSE as indicators to evaluate the prediction results, M-STCP has the best prediction effect, GRU and LSTM values were similar and higher than those of M-STCP method. In summary, the value of the M-STCP method is smaller than that of the other two models under the three evaluation criteria, which indicates that M-STCP has a high precision than the LSTM and GRU models.</p>
<table-wrap id="T5" position="float">
<label>Table&#xa0;5</label>
<caption>
<p>Comparison of mainstream methods for ship trajectory prediction.</p>
</caption>
<table frame="hsides">
<thead>
<tr>
<th valign="top" align="left">Method</th>
<th valign="top" align="center">MAPE</th>
<th valign="top" align="center">MAE</th>
<th valign="top" align="center">RMSE</th>
</tr>
</thead>
<tbody>
<tr>
<td valign="top" align="left">M-STCP</td>
<td valign="top" align="left">3.6045 &#xd7; 10<sup>&#x2212;3</sup>
</td>
<td valign="top" align="left">4.7078 &#xd7; 10<sup>&#x2212;3</sup>
</td>
<td valign="top" align="left">5.5023 &#xd7; 10<sup>&#x2212;3</sup>
</td>
</tr>
<tr>
<td valign="top" align="left">GRU</td>
<td valign="top" align="left">2.3136 &#xd7; 10<sup>&#x2212;2</sup>
</td>
<td valign="top" align="left">1.4817 &#xd7; 10<sup>&#x2212;2</sup>
</td>
<td valign="top" align="left">1.6672 &#xd7; 10<sup>&#x2212;2</sup>
</td>
</tr>
<tr>
<td valign="top" align="left">LSTM</td>
<td valign="top" align="left">2.8864 &#xd7; 10<sup>&#x2212;2</sup>
</td>
<td valign="top" align="left">1.1119 &#xd7; 10<sup>&#x2212;2</sup>
</td>
<td valign="top" align="left">1.2427 &#xd7; 10<sup>&#x2212;2</sup>
</td>
</tr>
</tbody>
</table>
</table-wrap>
<fig id="f9" position="float">
<label>Figure&#xa0;9</label>
<caption>
<p>The evaluation results of the three methods were histogram using the evaluation criteria of MAPE, MSE and RMSE.</p>
</caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fmars-10-1199238-g009.tif"/>
</fig>
<disp-formula>
<label>(20)</label>
<mml:math display="block" id="M20">
<mml:mrow>
<mml:mtext>MAPE</mml:mtext>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>100</mml:mn>
<mml:mo>%</mml:mo>
</mml:mrow>
<mml:mi>n</mml:mi>
</mml:mfrac>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>n</mml:mi>
</mml:munderover>
<mml:mrow>
<mml:mrow>
<mml:mo>|</mml:mo>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>y</mml:mi>
<mml:mo>^</mml:mo>
</mml:mover>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
<mml:mo>|</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mstyle>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula>
<label>(21)</label>
<mml:math display="block" id="M21">
<mml:mrow>
<mml:mtext>MAE</mml:mtext>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mi>n</mml:mi>
</mml:mfrac>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>n</mml:mi>
</mml:munderover>
<mml:mrow>
<mml:mrow>
<mml:mo>|</mml:mo>
<mml:mrow>
<mml:mi>y</mml:mi>
<mml:mi>i</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mover accent="true">
<mml:mi>y</mml:mi>
<mml:mo>^</mml:mo>
</mml:mover>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo>|</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mstyle>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula>
<label>(22)</label>
<mml:math display="block" id="M22">
<mml:mrow>
<mml:mtext>RMSE</mml:mtext>
<mml:mo>=</mml:mo>
<mml:msqrt>
<mml:mrow>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mi>m</mml:mi>
</mml:mfrac>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mn>1</mml:mn>

</mml:msup>
</mml:mrow>
<mml:mi>m</mml:mi>
</mml:munderover>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mover accent="true">
<mml:mi>y</mml:mi>
<mml:mo>^</mml:mo>
</mml:mover>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
</mml:mrow>
</mml:mstyle>
</mml:mrow>
</mml:msqrt>
</mml:mrow>
</mml:math>
</disp-formula>
</sec>
</sec>
<sec id="s5" sec-type="conclusions">
<label>5</label>
<title>Conclusion and future works</title>
<p>In this paper, we introduce an online ship track cleaning and prediction algorithm M-STCP based on matrix neural network. Matrix neural networks, or MNNs, can be applied to predict future ship trajectories using clustered GPS ship trajectory data. The reliability of the dataset is also a critical part of prediction accuracy. Due to sensor acquisition problems, the data set we use may contain some noise and invalid trajectory points, and by cleaning the data set and using Kalman filter, we can obtain a data set closer to the real ship trajectory, and also make the prediction results more realistic and effective. We compare the results of M-STCP predictions of ship trajectories with LSTM and GRU models. To improve the accuracy of the experimental findings, we first extracted ship trajectories with similar behavior patterns in the original trajectory data by clustering method, and then processed them to remove anomalies and invalid values. Predict the future trajectory of ships by using the M-STCP method. We selected three evaluation metrics to evaluate the forecasting methodology. In terms of prediction accuracy, LSTM is 84.27%, GRU is 87.62%, while M-STCP method can reach 88.52C%, which can be improved to 89.44% after Kalman filter noise reduction.</p>
<p>M-STCP&#x2019;s ship trajectory prediction accuracy is higher than that of GRU and LSTM, as evidenced by the experimental results. Ship trajectories can be regarded as a series of time trajectory data, and matrix neural networks have important advantages in addressing time series problems. Based on a matrix neural network, we maintain the spatial correlation between the trajectory data by eliminating the spatial offset in the original dataset so that all ship trajectories start from the same starting position. Matrix neural networks can effectively process multi-dimensional time series data, making them capable of performing multi-scale analysis on data and enhancing data expression capabilities. By doing this, neural networks can learn the input data&#x2019;s features more efficiently and process multi-dimensional input and output data with greater efficiency. Matrix neural networks convert sequence data into matrix or tensor form, enabling parallel computing, speeding up the training process, and addressing the long-term dependency problem by doing so. In contrast, the biggest advantage of matrix neural networks is that they can efficiently process large-scale data and have a fast training speed, but their accuracy is easily affected by noise. Sequence data handling with good stability and solving long-term dependencies through control units can be done by LSTM and GRU using their control units. GRU and LSTM&#x2019;s internal structure is both complex and difficult to interpret. When time series data are long, the problem of disappearing or exploding the gradient arises and the computation time is long. Setting parameters and adjusting the number of layers is a challenge for all three methods, and they require high computing resources. Matrix neural networks can often provide better prediction performance than traditional recurrent neural networks like GRU and LSTM in sequence modeling tasks, including ship trajectory prediction.</p>
<p>In addition, there are other influencing factors, such as wind wave and tide intensity on the ocean, visibility at sea, and the width and depth of the waterways in this sea area, which were not considered in this study. These influencing factors may contribute to the prediction results of matrix neural networks. In future work, we can use other factors that affect the trajectory of ships, such as the strength of wind and waves and tides on the ocean, as input characteristics for prediction. In further work, we will improve the accuracy of long-term trajectory prediction based on improving the calculation accuracy, which will help ships navigate traffic problems with early warning.</p>
</sec>
<sec id="s6" sec-type="data-availability">
<title>Data availability statement</title>
<p>The raw data supporting the conclusions of this article will be made available by the authors, without undue reservation.</p>
</sec>
<sec id="s7" sec-type="author-contributions">
<title>Author contributions</title>
<p>SG and MS contributed to the concept and design of the study, writing a first draft. MS and XM organized the experimental data, designed the experimental methods, and analyzed the experimental data. XM contributed to the design verification and verification of experiments. SW plotted the picture from the experiment. HX contributed to the design verification and verification of experiments. CL contributed to the review and revision of papers. All authors contributed to the article and approved the submitted version.</p>
</sec>
</body>
<back>
<sec id="s8" sec-type="funding-information">
<title>Funding</title>
<p>This research was funded by the Shandong Province Natural Science Foundation. The grant number is ZR2020QF028.</p>
</sec>
<sec id="s9" sec-type="COI-statement">
<title>Conflict of interest</title>
<p>The authors declare that the research was conducted in the absence of any commercial or financial relationships that could be construed as a potential conflict of interest.</p>
</sec>
<sec id="s10" sec-type="disclaimer">
<title>Publisher&#x2019;s note</title>
<p>All claims expressed in this article are solely those of the authors and do not necessarily represent those of their affiliated organizations, or those of the publisher, the editors and the reviewers. Any product that may be evaluated in this article, or claim that may be made by its manufacturer, is not guaranteed or endorsed by the publisher.</p>
</sec>
<ref-list>
<title>References</title>
<ref id="B1">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Aggarwal</surname> <given-names>C. C.</given-names>
</name>
</person-group> (<year>2018</year>). <article-title>Neural networks and deep learning</article-title>. <source>Springer</source> <volume>10</volume>, <fpage>3</fpage>. doi: <pub-id pub-id-type="doi">10.1007/978-3-319-94463-0</pub-id>
</citation>
</ref>
<ref id="B2">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Bao</surname> <given-names>K.</given-names>
</name>
<name>
<surname>Bi</surname> <given-names>J.</given-names>
</name>
<name>
<surname>Gao</surname> <given-names>M.</given-names>
</name>
<name>
<surname>Sun</surname> <given-names>Y.</given-names>
</name>
<name>
<surname>Zhang</surname> <given-names>X.</given-names>
</name>
<name>
<surname>Zhang</surname> <given-names>W.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>An improved ship trajectory prediction based on ais data using mha-bigru</article-title>. <source>J. Mar. Sci. Eng.</source> <volume>10</volume>, <fpage>804</fpage>. doi: <pub-id pub-id-type="doi">10.3390/jmse10060804</pub-id>
</citation>
</ref>
<ref id="B3">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Chen</surname> <given-names>S.</given-names>
</name>
<name>
<surname>Zhang</surname> <given-names>J.</given-names>
</name>
<name>
<surname>Meng</surname> <given-names>F.</given-names>
</name>
<name>
<surname>Wang</surname> <given-names>D.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>A markov chain position prediction model based on multidimensional correction</article-title>. <source>Complexity</source> <volume>2021</volume>. doi: <pub-id pub-id-type="doi">10.1155/2021/6677132</pub-id>
</citation>
</ref>
<ref id="B4">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Dalsnes</surname> <given-names>B. R.</given-names>
</name>
<name>
<surname>Hexeberg</surname> <given-names>S.</given-names>
</name>
<name>
<surname>Flaten</surname> <given-names>A. L.</given-names>
</name>
<name>
<surname>Eriksen</surname> <given-names>B.-O. H.</given-names>
</name>
<name>
<surname>Brekke</surname> <given-names>E. F.</given-names>
</name>
</person-group> (<year>2018</year>). &#x201c;<article-title>The neighbor course distribution method with gaussian mixture models for ais-based vessel trajectory prediction</article-title>,&#x201d; in <source>2018 21st international conference on information fusion (FUSION)</source> (<publisher-loc>Cambridge, UK</publisher-loc>: <publisher-name>IEEE</publisher-name>), <fpage>580</fpage>&#x2013;<lpage>587</lpage>.</citation>
</ref>
<ref id="B5">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>El-Rabbany</surname> <given-names>A.</given-names>
</name>
</person-group> (<year>2002</year>). <source>Introduction to GPS: the global positioning system</source> (<publisher-loc>United States of America</publisher-loc>: <publisher-name>Artech house</publisher-name>).</citation>
</ref>
<ref id="B6">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Fossen</surname> <given-names>S.</given-names>
</name>
<name>
<surname>Fossen</surname> <given-names>T. ,. I.</given-names>
</name>
</person-group> (<year>2018</year>). <article-title>exogenous kalman filter (xkf) for visualization and motion prediction of ships using live automatic identification system (ais) data</article-title>. <source>MODELING IDENTIFICATION AND CONTROL</source> <volume>39</volume>, <fpage>233</fpage>&#x2013;<lpage>244</lpage>. doi:&#xa0;<pub-id pub-id-type="doi">10.4173/mic.2018.4.1</pub-id>
</citation>
</ref>
<ref id="B8">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Gao</surname> <given-names>J.</given-names>
</name>
<name>
<surname>Guo</surname> <given-names>Y.</given-names>
</name>
<name>
<surname>Wang</surname> <given-names>Z.</given-names>
</name>
</person-group> (<year>2017</year>). &#x201c;<article-title>Matrix neural networks</article-title>,&#x201d; in <source>Advances in neural networks - ISNN 2017</source> (<publisher-loc>Springer</publisher-loc>), <fpage>313</fpage>&#x2013;<lpage>320</lpage>.</citation>
</ref>
<ref id="B7">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Gao</surname> <given-names>D.-w.</given-names>
</name>
<name>
<surname>Zhu</surname> <given-names>Y.-s.</given-names>
</name>
<name>
<surname>Zhang</surname> <given-names>J.-f.</given-names>
</name>
<name>
<surname>He</surname> <given-names>Y.-k.</given-names>
</name>
<name>
<surname>Yan</surname> <given-names>K.</given-names>
</name>
<name>
<surname>Yan</surname> <given-names>B.-r.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>A novel mp-lstm method for ship trajectory prediction based on ais data</article-title>. <source>Ocean Eng.</source> <volume>228</volume>, <fpage>108956</fpage>. doi: <pub-id pub-id-type="doi">10.1016/j.oceaneng.2021.108956</pub-id>
</citation>
</ref>
<ref id="B9">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Guo</surname> <given-names>S.</given-names>
</name>
<name>
<surname>Liu</surname> <given-names>C.</given-names>
</name>
<name>
<surname>Guo</surname> <given-names>Z.</given-names>
</name>
<name>
<surname>Feng</surname> <given-names>Y.</given-names>
</name>
<name>
<surname>Hong</surname> <given-names>F.</given-names>
</name>
<name>
<surname>Huang</surname> <given-names>H.</given-names>
</name>
</person-group> (<year>2018</year>). &#x201c;<article-title>Trajectory prediction for ocean vessels base on k-order multivariate markov chain</article-title>,&#x201d; in <conf-name>International Conference on Wireless Algorithms, Systems, and Applications</conf-name>. Part of the Lecture Notes in Computer Science book series (LNTCS, volume 10874). <fpage>140</fpage>&#x2013;<lpage>150</lpage> (Springer, Cham).</citation>
</ref>
<ref id="B10">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Han</surname> <given-names>P.</given-names>
</name>
<name>
<surname>Wang</surname> <given-names>W.</given-names>
</name>
<name>
<surname>Shi</surname> <given-names>Q.</given-names>
</name>
<name>
<surname>Yang</surname> <given-names>J.</given-names>
</name>
</person-group> (<year>2019</year>). &#x201c;<article-title>Real-time short-term trajectory prediction based on gru neural network</article-title>,&#x201d; in <source>In 2019 IEEE/AIAA 38th digital avionics systems conference (DASC)</source> (<publisher-loc>San Diego, CA, USA</publisher-loc>: <publisher-name>IEEE</publisher-name>), <fpage>1</fpage>&#x2013;<lpage>8</lpage>.</citation>
</ref>
<ref id="B11">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Han</surname> <given-names>P.</given-names>
</name>
<name>
<surname>Wang</surname> <given-names>W.</given-names>
</name>
<name>
<surname>Shi</surname> <given-names>Q.</given-names>
</name>
<name>
<surname>Yue</surname> <given-names>J.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>A combined online-learning model with k-means clustering and gru neural networks for trajectory prediction</article-title>. <source>Ad Hoc Networks</source> <volume>117</volume>, <fpage>102476</fpage>. doi: <pub-id pub-id-type="doi">10.1016/j.adhoc.2021.102476</pub-id>
</citation>
</ref>
<ref id="B12">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Hu</surname> <given-names>Q.</given-names>
</name>
<name>
<surname>Jiang</surname> <given-names>Y.</given-names>
</name>
<name>
<surname>Zhang</surname> <given-names>J.</given-names>
</name>
<name>
<surname>Sun</surname> <given-names>X.</given-names>
</name>
<name>
<surname>Zhang</surname> <given-names>S.</given-names>
</name>
</person-group> (<year>2015</year>). <article-title>Development of an automatic identification system autonomous positioning system</article-title>. <source>Sensors</source> <volume>15</volume>, <fpage>28574</fpage>&#x2013;<lpage>28591</lpage>. doi: <pub-id pub-id-type="doi">10.3390/s151128574</pub-id>
</citation>
</ref>
<ref id="B13">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Imran</surname> <given-names>M.</given-names>
</name>
<name>
<surname>Ayob</surname> <given-names>A.</given-names>
</name>
<name>
<surname>Jamaludin</surname> <given-names>S</given-names>
</name>
</person-group>. (<year>2022</year>). <article-title>Applications of artificial intelligence in ship berthing: A review</article-title>. <source>Indian J. Geo-Marine Sci. (IJMS)</source> <volume>50</volume>, <fpage>855</fpage>&#x2013;<lpage>863</lpage>.</citation>
</ref>
<ref id="B14">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Jiang</surname> <given-names>B.</given-names>
</name>
<name>
<surname>Guan</surname> <given-names>J.</given-names>
</name>
<name>
<surname>Zhou</surname> <given-names>W.</given-names>
</name>
<name>
<surname>Chen</surname> <given-names>X.</given-names>
</name>
</person-group> (<year>2019</year>). <article-title>Ship trajectory prediction algorithm based on polynomial kalman filter</article-title>. <source>Signal Process.</source> <volume>35</volume>, <fpage>741</fpage>&#x2013;<lpage>746</lpage>. doi: <pub-id pub-id-type="doi">10.16798/j.issn.1003-0530.2019.05.002</pub-id>
</citation>
</ref>
<ref id="B15">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Koohang</surname> <given-names>A.</given-names>
</name>
<name>
<surname>Sargent</surname> <given-names>C. S.</given-names>
</name>
<name>
<surname>Nord</surname> <given-names>J. H.</given-names>
</name>
<name>
<surname>Paliszkiewicz</surname> <given-names>J.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>Internet of things (iot): From awareness to continued use</article-title>. <source>Int. J. Inf. Manage.</source> <volume>62</volume>, <fpage>102442</fpage>. doi: <pub-id pub-id-type="doi">10.1016/j.ijinfomgt.2021.102442</pub-id>
</citation>
</ref>
<ref id="B16">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Lam</surname> <given-names>J. S. L.</given-names>
</name>
<name>
<surname>Cullinane</surname> <given-names>K. P. B.</given-names>
</name>
<name>
<surname>Lee</surname> <given-names>P. T.-W.</given-names>
</name>
</person-group> (<year>2018</year>). <article-title>The 21st-century maritime silk road: challenges and opportunities for transport management and practice</article-title>. <source>Transport Rev.</source> <volume>38</volume>, <fpage>413</fpage>&#x2013;<lpage>415</lpage>. doi: <pub-id pub-id-type="doi">10.1080/01441647.2018.1453562</pub-id>
</citation>
</ref>
<ref id="B17">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Li</surname> <given-names>X.</given-names>
</name>
<name>
<surname>Zhou</surname> <given-names>S.</given-names>
</name>
<name>
<surname>Yin</surname> <given-names>K.</given-names>
</name>
<name>
<surname>Liu</surname> <given-names>H.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Measurement of the high-quality development level of China&#x2019;s marine economy</article-title>. <source>Mar. Economics Manage</source>. <volume>4</volume> (<issue>1</issue>), <fpage>23</fpage>&#x2013;<lpage>41</lpage>. doi: <pub-id pub-id-type="doi">10.1108/MAEM-10-2020-0004</pub-id>
</citation>
</ref>
<ref id="B19">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Liu</surname> <given-names>R. W.</given-names>
</name>
<name>
<surname>Yuan</surname> <given-names>W.</given-names>
</name>
<name>
<surname>Chen</surname> <given-names>X.</given-names>
</name>
<name>
<surname>Lu</surname> <given-names>Y.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>An enhanced cnn-enabled learning method for promoting ship detection in maritime surveillance system</article-title>. <source>Ocean Eng.</source> <volume>235</volume>, <fpage>109435</fpage>. doi: <pub-id pub-id-type="doi">10.1016/j.oceaneng.2021.109435</pub-id>
</citation>
</ref>
<ref id="B18">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Liu</surname> <given-names>L.</given-names>
</name>
<name>
<surname>Zhang</surname> <given-names>Y.</given-names>
</name>
<name>
<surname>Hu</surname> <given-names>Y.</given-names>
</name>
<name>
<surname>Wang</surname> <given-names>Y.</given-names>
</name>
<name>
<surname>Sun</surname> <given-names>J.</given-names>
</name>
<name>
<surname>Dong</surname> <given-names>X.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>A hybrid-clustering model of ship trajectories for maritime traffic patterns analysis in port area</article-title>. <source>J. Mar. Sci. Eng.</source> <volume>10</volume>, <fpage>342</fpage>. doi: <pub-id pub-id-type="doi">10.3390/jmse10030342</pub-id>
</citation>
</ref>
<ref id="B20">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Lu</surname> <given-names>C.-H.</given-names>
</name>
</person-group> (<year>2018</year>). <article-title>Context-aware service provisioning via agentized and reconfigurable multimodel cooperation for real-life iot-enabled smart home systems</article-title>. <source>IEEE Trans. Systems Man Cybernetics: Syst.</source> <volume>50</volume>, <fpage>2914</fpage>&#x2013;<lpage>2925</lpage>. doi: <pub-id pub-id-type="doi">10.1109/TSMC.2018.2831711</pub-id>
</citation>
</ref>
<ref id="B22">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Nguyen</surname> <given-names>T. D.</given-names>
</name>
</person-group> (<year>2020</year>). &#x201c;<article-title>Evaluation of the accuracy of the ship location determined by gps global positioning system on a given sea area</article-title>,&#x201d; in <conf-name>Journal of Physics: Conference Series</conf-name>, Engineering and Innovative Technologies. Vol. <volume>1515</volume>. <fpage>042010</fpage> (IOP Publishing).</citation>
</ref>
<ref id="B21">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Nguyen</surname> <given-names>H. H.</given-names>
</name>
<name>
<surname>Mirza</surname> <given-names>F.</given-names>
</name>
<name>
<surname>Naeem</surname> <given-names>M. A.</given-names>
</name>
<name>
<surname>Nguyen</surname> <given-names>M.</given-names>
</name>
</person-group> (<year>2017</year>). &#x201c;<article-title>A review on iot healthcare monitoring applications and a vision for transforming sensor data into real-time clinical feedback</article-title>,&#x201d; in <conf-name>2017 IEEE 21st International conference on computer supported cooperative work in design (CSCWD)</conf-name>. <fpage>257</fpage>&#x2013;<lpage>262</lpage> (<publisher-loc>Wellington, New Zealand</publisher-loc>: IEEE).</citation>
</ref>
<ref id="B23">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Noel</surname> <given-names>A.</given-names>
</name>
<name>
<surname>Shreyanka</surname> <given-names>K.</given-names>
</name>
<name>
<surname>Gowtham</surname> <given-names>K.</given-names>
</name>
<name>
<surname>Satya</surname> <given-names>K.</given-names>
</name>
</person-group> (<year>2019</year>). &#x201c;<article-title>Autonomous ship navigation methods: a review</article-title>,&#x201d; in <conf-name>Proceedings of the Conference Proceedings of ICMET OMAN</conf-name>.</citation>
</ref>
<ref id="B24">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Perera</surname> <given-names>L. P.</given-names>
</name>
<name>
<surname>Soares</surname> <given-names>C. G.</given-names>
</name>
</person-group> (<year>2010</year>). &#x201c;<article-title>Ocean vessel trajectory estimation and prediction based on extended kalman filter</article-title>,&#x201d; in <conf-name>The Second International Conference on Adaptive and Self-Adaptive Systems and Applications</conf-name>. <fpage>14</fpage>&#x2013;<lpage>20</lpage> (Citeseer).</citation>
</ref>
<ref id="B25">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Popa</surname> <given-names>C.-A.</given-names>
</name>
</person-group> (<year>2015</year>). &#x201c;<article-title>Matrix-valued neural networks</article-title>,&#x201d; in <conf-name>International Conference on Soft Computing MENDEL</conf-name>. <fpage>245</fpage>&#x2013;<lpage>255</lpage> (Springer).</citation>
</ref>
<ref id="B26">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Qiao</surname> <given-names>S.</given-names>
</name>
<name>
<surname>Shen</surname> <given-names>D.</given-names>
</name>
<name>
<surname>Wang</surname> <given-names>X.</given-names>
</name>
<name>
<surname>Han</surname> <given-names>N.</given-names>
</name>
<name>
<surname>Zhu</surname> <given-names>W.</given-names>
</name>
</person-group> (<year>2014</year>). <article-title>A self-adaptive parameter selection trajectory prediction approach via hidden markov models</article-title>. <source>IEEE Trans. Intelligent Transportation Syst.</source> <volume>16</volume>, <fpage>284</fpage>&#x2013;<lpage>296</lpage>. doi: <pub-id pub-id-type="doi">10.1109/TITS.2014.2331758</pub-id>
</citation>
</ref>
<ref id="B27">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Roberts</surname> <given-names>S.</given-names>
</name>
<name>
<surname>Osborne</surname> <given-names>M.</given-names>
</name>
<name>
<surname>Ebden</surname> <given-names>M.</given-names>
</name>
<name>
<surname>Reece</surname> <given-names>S.</given-names>
</name>
<name>
<surname>Gibson</surname> <given-names>N.</given-names>
</name>
<name>
<surname>Aigrain</surname> <given-names>S.</given-names>
</name>
</person-group> (<year>2013</year>). <article-title>Gaussian processes for time-series modelling</article-title>. <source>Philos. Trans. OF THE R. Soc. A-MATHEMATICAL Phys. AND Eng. Sci.</source> <volume>371</volume>. doi:&#xa0;<pub-id pub-id-type="doi">10.1098/rsta.2011.0550</pub-id>
</citation>
</ref>
<ref id="B28">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Rong</surname> <given-names>H.</given-names>
</name>
<name>
<surname>Teixeira</surname> <given-names>A.</given-names>
</name>
<name>
<surname>Soares</surname> <given-names>C. G.</given-names>
</name>
</person-group> (<year>2019</year>). <article-title>Ship trajectory uncertainty prediction based on a gaussian process model</article-title>. <source>Ocean Eng.</source> <volume>182</volume>, <fpage>499</fpage>&#x2013;<lpage>511</lpage>. doi: <pub-id pub-id-type="doi">10.1016/j.oceaneng.2019.04.024</pub-id>
</citation>
</ref>
<ref id="B29">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Roy</surname> <given-names>N.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Prediction of the ship collision point&#x2014;a review</article-title>. <source>Artif. Intell. Techniques Advanced Computing Appl.</source> <volume>130</volume>, <fpage>283</fpage>&#x2013;<lpage>297</lpage>. doi: <pub-id pub-id-type="doi">10.1007/978-981-15-5329-5_27</pub-id>
</citation>
</ref>
<ref id="B30">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Sun</surname> <given-names>Q.</given-names>
</name>
<name>
<surname>Tang</surname> <given-names>Z.</given-names>
</name>
<name>
<surname>Gao</surname> <given-names>J.</given-names>
</name>
<name>
<surname>Zhang</surname> <given-names>G.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>Short-term ship motion attitude prediction based on lstm and gpr</article-title>. <source>Appl. Ocean Res.</source> <volume>118</volume>, <fpage>102927</fpage>. doi: <pub-id pub-id-type="doi">10.1016/j.apor.2021.102927</pub-id>
</citation>
</ref>
<ref id="B31">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Suo</surname> <given-names>Y.</given-names>
</name>
<name>
<surname>Chen</surname> <given-names>W.</given-names>
</name>
<name>
<surname>Claramunt</surname> <given-names>C.</given-names>
</name>
<name>
<surname>Yang</surname> <given-names>S.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>A ship trajectory prediction framework based on a recurrent neural network</article-title>. <source>Sensors</source> <volume>20</volume>, <fpage>5133</fpage>. doi: <pub-id pub-id-type="doi">10.3390/s20185133</pub-id>
</citation>
</ref>
<ref id="B32">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Tang</surname> <given-names>H.</given-names>
</name>
<name>
<surname>Yin</surname> <given-names>Y.</given-names>
</name>
<name>
<surname>Shen</surname> <given-names>H.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>A model for vessel trajectory prediction based on long short-term memory neural network</article-title>. <source>J. Mar. Eng. Technol.</source> <volume>21</volume>, <fpage>136</fpage>&#x2013;<lpage>145</lpage>. doi: <pub-id pub-id-type="doi">10.1080/20464177.2019.1665258</pub-id>
</citation>
</ref>
<ref id="B33">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Tetreault</surname> <given-names>B. J.</given-names>
</name>
</person-group> (<year>2005</year>). &#x201c;<article-title>Use of the automatic identification system (ais) for maritime domain awareness (mda)</article-title>,&#x201d; in <conf-name>Proceedings of OCEANS 2005 MTS/IEEE</conf-name>. <fpage>1590</fpage>&#x2013;<lpage>1594</lpage> (<publisher-loc>Washington, DC, USA</publisher-loc>: <publisher-name>IEEE</publisher-name>).</citation>
</ref>
<ref id="B34">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Volkova</surname> <given-names>T. A.</given-names>
</name>
<name>
<surname>Balykina</surname> <given-names>Y. E.</given-names>
</name>
<name>
<surname>Bespalov</surname> <given-names>A.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Predicting ship trajectory based on neural networks using ais data</article-title>. <source>J. Mar. Sci. Eng.</source> <volume>9</volume>, <fpage>254</fpage>. doi: <pub-id pub-id-type="doi">10.3390/jmse9030254</pub-id>
</citation>
</ref>
<ref id="B35">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Xu</surname> <given-names>T.</given-names>
</name>
<name>
<surname>Liu</surname> <given-names>X.</given-names>
</name>
<name>
<surname>Yang</surname> <given-names>X.</given-names>
</name>
</person-group> (<year>2011</year>). &#x201c;<article-title>Ship trajectory online prediction based on bp neural network algorithm</article-title>,&#x201d; in <conf-name>2011 International Conference of Information Technology, Computer Engineering and Management Sciences</conf-name>, Vol. <volume>1</volume>. <fpage>103</fpage>&#x2013;<lpage>106</lpage> (<publisher-loc>Nanjing, China</publisher-loc>: <publisher-name>IEEE</publisher-name>).</citation>
</ref>
<ref id="B36">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Yang</surname> <given-names>Y.</given-names>
</name>
<name>
<surname>Gao</surname> <given-names>W.</given-names>
</name>
<name>
<surname>Guo</surname> <given-names>S.</given-names>
</name>
<name>
<surname>Mao</surname> <given-names>Y.</given-names>
</name>
<name>
<surname>Yang</surname> <given-names>Y.</given-names>
</name>
</person-group> (<year>2019</year>). <article-title>Introduction to beidou-3 navigation satellite system</article-title>. <source>Navigation</source> <volume>66</volume>, <fpage>7</fpage>&#x2013;<lpage>18</lpage>. doi: <pub-id pub-id-type="doi">10.1002/navi.291</pub-id>
</citation>
</ref>
<ref id="B38">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Zhang</surname> <given-names>Y.</given-names>
</name>
<name>
<surname>Chandra</surname> <given-names>R.</given-names>
</name>
<name>
<surname>Gao</surname> <given-names>J.</given-names>
</name>
</person-group> (<year>2018</year>). &#x201c;<article-title>Cyclone track prediction with matrix neural networks</article-title>,&#x201d; in <conf-name>2018 International Joint Conference on Neural Networks (IJCNN)</conf-name>. <fpage>1</fpage>&#x2013;<lpage>8</lpage> (<publisher-loc>Rio de Janeiro, Brazil</publisher-loc>: <publisher-name>IEEE</publisher-name>).</citation>
</ref>
<ref id="B37">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Zhang</surname> <given-names>X.</given-names>
</name>
<name>
<surname>Liu</surname> <given-names>G.</given-names>
</name>
<name>
<surname>Hu</surname> <given-names>C.</given-names>
</name>
<name>
<surname>Ma</surname> <given-names>X.</given-names>
</name>
</person-group> (<year>2019</year>). &#x201c;<article-title>Wavelet analysis based hidden markov model for large ship trajectory prediction</article-title>,&#x201d; in <conf-name>2019 Chinese Control Conference (CCC)</conf-name>. <fpage>2913</fpage>&#x2013;<lpage>2918</lpage> (<publisher-loc>Rio de Janeiro, Brazil</publisher-loc>: <publisher-name>IEEE</publisher-name>).</citation>
</ref>
<ref id="B39">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Zhang</surname> <given-names>Y.</given-names>
</name>
<name>
<surname>Sun</surname> <given-names>X.</given-names>
</name>
<name>
<surname>Chen</surname> <given-names>J.</given-names>
</name>
<name>
<surname>Cheng</surname> <given-names>C.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Spatial patterns and characteristics of global maritime accidents</article-title>. <source>Reliability Eng. System Saf.</source> <volume>206</volume>, <fpage>107310</fpage>. doi: <pub-id pub-id-type="doi">10.1016/j.ress.2020.107310</pub-id>
</citation>
</ref>
<ref id="B40">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Zhou</surname> <given-names>H.</given-names>
</name>
<name>
<surname>Chen</surname> <given-names>Y.</given-names>
</name>
<name>
<surname>Zhang</surname> <given-names>S.</given-names>
</name>
</person-group> (<year>2019</year>). <article-title>Ship trajectory prediction based on bp neural network</article-title>. <source>J. Artif. Intell.</source> <volume>1</volume>, <fpage>29</fpage>. doi: <pub-id pub-id-type="doi">10.32604/jai.2019.05939</pub-id>
</citation>
</ref>
<ref id="B41">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Zhou</surname> <given-names>Z.</given-names>
</name>
<name>
<surname>Gao</surname> <given-names>C.</given-names>
</name>
<name>
<surname>Xu</surname> <given-names>C.</given-names>
</name>
<name>
<surname>Zhang</surname> <given-names>Y.</given-names>
</name>
<name>
<surname>Mumtaz</surname> <given-names>S.</given-names>
</name>
<name>
<surname>Rodriguez</surname> <given-names>J.</given-names>
</name>
</person-group> (<year>2017</year>). <article-title>Social big-data-based content dissemination in internet of vehicles</article-title>. <source>IEEE Trans. Ind. Inf.</source> <volume>14</volume>, <fpage>768</fpage>&#x2013;<lpage>777</lpage>. doi: <pub-id pub-id-type="doi">10.1109/TII.2017.2733001</pub-id>
</citation>
</ref>
</ref-list>
</back>
</article>