<?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" xml:lang="en" article-type="research-article">
<front>
<journal-meta>
<journal-id journal-id-type="nlm-ta">Sensors</journal-id>
<journal-title>Sensors</journal-title>
<issn pub-type="epub">1424-8220</issn>
<publisher>
<publisher-name>Molecular Diversity Preservation International (MDPI)</publisher-name></publisher></journal-meta>
<article-meta>
<article-id pub-id-type="doi">10.3390/s91108508</article-id>
<article-id pub-id-type="publisher-id">sensors-09-08508</article-id>
<article-categories>
<subj-group>
<subject>Article</subject></subj-group></article-categories>
<title-group>
<article-title>Classifying Human Leg Motions with Uniaxial Piezoelectric Gyroscopes</article-title></title-group>
<contrib-group>
<contrib contrib-type="author">
<name><surname>Tunçel</surname><given-names>Orkun</given-names></name></contrib>
<contrib contrib-type="author">
<name><surname>Altun</surname><given-names>Kerem</given-names></name></contrib>
<contrib contrib-type="author">
<name><surname>Barshan</surname><given-names>Billur</given-names></name><xref ref-type="corresp" rid="c1-sensors-09-08508"><sup>*</sup></xref></contrib>
<aff id="af1-sensors-09-08508">Department of Electrical and Electronics Engineering, Bilkent University, Bilkent 06800 Ankara, Turkey; E-Mails: <email>orkun@ee.bilkent.edu.tr</email> (O.T.); <email>kaltun@ee.bilkent.edu.tr</email> (K.A.)</aff></contrib-group>
<author-notes>
<corresp id="c1-sensors-09-08508">
<label>*</label>Author to whom correspondence should be addressed; E-Mail: <email>billur@ee.bilkent.edu.tr</email>; Tel: +90 312 290 2161; Fax: +90 312 266 4192.</corresp></author-notes>
<pub-date pub-type="collection">
<year>2009</year></pub-date>
<pub-date pub-type="epub">
<day>27</day>
<month>10</month>
<year>2009</year></pub-date>
<volume>9</volume>
<issue>11</issue>
<fpage>8508</fpage>
<lpage>8546</lpage>
<history>
<date date-type="received">
<day>10</day>
<month>8</month>
<year>2009</year></date>
<date date-type="rev-recd">
<day>21</day>
<month>9</month>
<year>2009</year></date>
<date date-type="accepted">
<day>28</day>
<month>9</month>
<year>2009</year></date></history>
<permissions>
<copyright-statement>© 2009 by the authors; licensee Molecular Diversity Preservation International, Basel, Switzerland.</copyright-statement>
<copyright-year>2009</copyright-year>
<license>
<p>This article is an open access article distributed under the terms and conditions of the Creative Commons Attribution license (http://creativecommons.org/licenses/by/3.0/).</p></license></permissions>
<abstract>
<p>This paper provides a comparative study on the different techniques of classifying human leg motions that are performed using two low-cost uniaxial piezoelectric gyroscopes worn on the leg. A number of feature sets, extracted from the raw inertial sensor data in different ways, are used in the classification process. The classification techniques implemented and compared in this study are: Bayesian decision making (BDM), a rule-based algorithm (RBA) or decision tree, least-squares method (LSM), <italic>k</italic>-nearest neighbor algorithm (<italic>k</italic>-NN), dynamic time warping (DTW), support vector machines (SVM), and artificial neural networks (ANN). A performance comparison of these classification techniques is provided in terms of their correct differentiation rates, confusion matrices, computational cost, and training and storage requirements. Three different cross-validation techniques are employed to validate the classifiers. The results indicate that BDM, in general, results in the highest correct classification rate with relatively small computational cost.</p></abstract>
<kwd-group>
<kwd>gyroscope</kwd>
<kwd>inertial sensors</kwd>
<kwd>motion classification</kwd>
<kwd>Bayesian decision making</kwd>
<kwd>rule-based algorithm</kwd>
<kwd>least-squares method</kwd>
<kwd><italic>k</italic>-nearest neighbor</kwd>
<kwd>dynamic time warping</kwd>
<kwd>support vector machines</kwd>
<kwd>artificial neural networks</kwd></kwd-group></article-meta></front>
<body>
<sec sec-type="intro">
<label>1.</label>
<title>Introduction</title>
<p>In this paper, we use inertial sensors to classify movements of the human leg and present the results of a comparative study for this purpose. Inertial sensors are self-contained, nonradiating, nonjammable, dead-reckoning devices that provide dynamic motion information through direct measurements. To effectively use the information from such sensors, however, it is essential to accurately describe, interpret and classify their outputs. The gyroscope, a type of inertial sensor, provides angular <italic>rate</italic> information around an axis of sensitivity. Similarly, an accelerometer provides linear or angular velocity rate information. Although this rate information is reliable over long periods of time, it must be integrated to provide absolute measurements of orientation, position and velocity. Thus, even very small errors in the rate information provided by inertial sensors cause an unbounded growth in the error of integrated measurements. As a consequence, the outputs of inertial sensors are characterized by position errors that grow with time and distance unboundedly. One way to overcome this problem is to periodically reset the output of inertial sensors with other absolute sensing mechanisms, therefore to eliminate this accumulated error. Thus, techniques of fusing inertial sensor data with other sensors such as GPSs, vision systems, and magnetometers have been widely adopted [<xref ref-type="bibr" rid="b1-sensors-09-08508">1</xref>–<xref ref-type="bibr" rid="b3-sensors-09-08508">3</xref>].</p>
<p>For several decades, inertial sensors have been used in various applications such as for navigation of aircraft [<xref ref-type="bibr" rid="b4-sensors-09-08508">4</xref>–<xref ref-type="bibr" rid="b6-sensors-09-08508">6</xref>], ships, land vehicles and robots [<xref ref-type="bibr" rid="b7-sensors-09-08508">7</xref>–<xref ref-type="bibr" rid="b9-sensors-09-08508">9</xref>], for state estimation and dynamic modeling of legged robots [<xref ref-type="bibr" rid="b10-sensors-09-08508">10</xref>, <xref ref-type="bibr" rid="b11-sensors-09-08508">11</xref>], in the automotive industry, for shock and vibration analysis, and in telesurgery [<xref ref-type="bibr" rid="b12-sensors-09-08508">12</xref>, <xref ref-type="bibr" rid="b13-sensors-09-08508">13</xref>].</p>
<p>Inertial sensing systems have become easy to design and carry as the size and cost of inertial sensors have decreased considerably with the rapid development of micro electro-mechanical systems (MEMS) [<xref ref-type="bibr" rid="b14-sensors-09-08508">14</xref>]. Small, lightweight, low-cost miniature inertial sensors (e.g., gyroscopes, accelerometers, inclinometers or tilt sensors) are increasingly commercially available. Although a considerable improvement over past systems, they clearly provide substantially less accurate position information than highly accurate inertial systems such as those used in aerospace applications. Some of these devices are sensitive around a single axis; others are multi-axial (usually two- or three-axial). For low-cost applications that utilize these devices, gyro calibration, which is provided for high-end commercial gyros by the manufacturer is still a necessary and complicated procedure (requiring an accurate variable-speed turntable). Accelerometer-based systems are more commonly adopted because accelerometers are easily calibrated by gravity.</p>
<p>The developments in the MEMS area have opened up new possibilities for the use of inertial sensors, one of them being human activity monitoring, recognition, and classification through body-worn sensors. This in turn has a broad range of applications in observing the elderly remotely by personal alarm systems [<xref ref-type="bibr" rid="b15-sensors-09-08508">15</xref>], detecting and classifying falls [<xref ref-type="bibr" rid="b16-sensors-09-08508">16</xref>–<xref ref-type="bibr" rid="b18-sensors-09-08508">18</xref>], medical diagnosis and treatment [<xref ref-type="bibr" rid="b19-sensors-09-08508">19</xref>], home-based rehabilitation and physical therapy [<xref ref-type="bibr" rid="b20-sensors-09-08508">20</xref>], monitoring children remotely at home or in school, ergonomics [<xref ref-type="bibr" rid="b21-sensors-09-08508">21</xref>], sports science [<xref ref-type="bibr" rid="b22-sensors-09-08508">22</xref>], ballet and other forms of dance [<xref ref-type="bibr" rid="b23-sensors-09-08508">23</xref>], animation, film making, computer games [<xref ref-type="bibr" rid="b24-sensors-09-08508">24</xref>, <xref ref-type="bibr" rid="b25-sensors-09-08508">25</xref>], professional simulators, virtual reality, and motion compensation and stabilization of equipment. References [<xref ref-type="bibr" rid="b26-sensors-09-08508">26</xref>–<xref ref-type="bibr" rid="b29-sensors-09-08508">29</xref>] and [<xref ref-type="bibr" rid="b30-sensors-09-08508">30</xref>] provide comprehensive surveys on the use of inertial sensors in some of these areas.</p>
<p>The most commonly used approach in human activity recognition and classification employs vision-based systems with single or multiple video cameras [<xref ref-type="bibr" rid="b31-sensors-09-08508">31</xref>–<xref ref-type="bibr" rid="b34-sensors-09-08508">34</xref>]. For example, although the gesture recognition problem has been well studied in computer vision [<xref ref-type="bibr" rid="b35-sensors-09-08508">35</xref>], much less research has been done in this area using body-worn inertial sensors [<xref ref-type="bibr" rid="b36-sensors-09-08508">36</xref>, <xref ref-type="bibr" rid="b37-sensors-09-08508">37</xref>]. The use of camera systems may be acceptable and practical when activities are confined to a limited area (such as certain parts of a house or office environment) and when the environment is well illuminated. However, when the activity involves going from place to place (such as riding in or on a vehicle, traveling, going shopping, going outdoors, etc.), camera systems are not so convenient. Furthermore, camera systems interfere considerably with the privacy of the people involved and supply additional, unnecessary information. In addition to monitoring activities, they provide redundant information about the surroundings, other people in the area, and appearance, facial expressions, body language, and preferences of the person(s) involved.</p>
<p>Miniature inertial sensors can be flexibly used inside or behind objects without occlusion effects. This is a major advantage over visual motion capture systems that require free line-of-sight. When a single camera is used, the 3-D scene is projected onto a 2-D one, with significant information loss. Points of interest need to be pre-identified by placing special, visible markers such as light-emitting diodes (LEDs) on the human body. Some points of interest may be occluded or shadowed by human body parts or objects in the surroundings. This is circumvented by positioning multiple camera systems in the environment and using several 2-D projections to reconstruct the 3-D scene. Each camera needs to be calibrated individually. Another major disadvantage of using camera systems is that the cost of processing and storing images and video recordings is much higher than those of 1-D signals. 1-D signals acquired from multiple axes of inertial sensors can directly provide the required information in 3-D.</p>
<p>The use of camera systems and inertial sensors are two inherently different approaches that are by no means exclusive and can be used in a complementary fashion in many situations. In a number of studies, accelerometers are used in conjunction with video camera systems, considered as a comparison basis [<xref ref-type="bibr" rid="b38-sensors-09-08508">38</xref>–<xref ref-type="bibr" rid="b43-sensors-09-08508">43</xref>]. In other studies, visual sensors are not only used in a supplementary fashion or as a reference, but their data is actually integrated or fused with the inertial data [<xref ref-type="bibr" rid="b2-sensors-09-08508">2</xref>, <xref ref-type="bibr" rid="b44-sensors-09-08508">44</xref>]. The fusion of visual and inertial sensor outputs has attracted considerable attention recently, due to their robust performance and potentially wide application [<xref ref-type="bibr" rid="b45-sensors-09-08508">45</xref>, <xref ref-type="bibr" rid="b46-sensors-09-08508">46</xref>]. These two sensing modalities have complementary characteristics and can cover the limitations and deficiencies of each other: Inertial sensors have large measurement uncertainty in slow motion and lower relative uncertainty at high velocities. They can measure very large velocities and accelerations. On the other hand, cameras can track features very accurately at low velocities. With increasing velocity, tracking accuracy decreases because the resolution must be reduced to accommodate a larger tracking window for the same pixel size and a larger tracking velocity.</p>
<p>The work done on activity recognition through the use of body-worn inertial sensors until now is of limited scope, and mostly unsystematic in nature. The research undertaken by different parties has not been coordinated and exhibits a piece-wise collection of results, difficult to synthesize into the kind of broader understanding that is necessary to make substantial progress. Most previous studies distinguish between sitting, lying and standing [<xref ref-type="bibr" rid="b15-sensors-09-08508">15</xref>, <xref ref-type="bibr" rid="b38-sensors-09-08508">38</xref>–<xref ref-type="bibr" rid="b40-sensors-09-08508">40</xref>, <xref ref-type="bibr" rid="b43-sensors-09-08508">43</xref>, <xref ref-type="bibr" rid="b47-sensors-09-08508">47</xref>–<xref ref-type="bibr" rid="b50-sensors-09-08508">50</xref>] as these postures are relatively easy to detect using the static component of acceleration. Distinguishing between walking, ascending and descending stairs has also been performed [<xref ref-type="bibr" rid="b47-sensors-09-08508">47</xref>, <xref ref-type="bibr" rid="b48-sensors-09-08508">48</xref>, <xref ref-type="bibr" rid="b50-sensors-09-08508">50</xref>], although not as successfully as detecting postures. The signal processing and motion detection techniques employed, the configuration, number, and type of sensors differ widely among the studies, from using a single accelerometer [<xref ref-type="bibr" rid="b15-sensors-09-08508">15</xref>, <xref ref-type="bibr" rid="b51-sensors-09-08508">51</xref>, <xref ref-type="bibr" rid="b52-sensors-09-08508">52</xref>] to as many as twelve [<xref ref-type="bibr" rid="b53-sensors-09-08508">53</xref>] on different parts of the body. Although gyroscopes can provide valuable rotational information in 3-D, in most studies accelerometers are preferred over gyroscopes due to their ease of calibration. To the best of our knowledge, guidance on finding the optimal configuration, number, and type of sensors does not exist [<xref ref-type="bibr" rid="b47-sensors-09-08508">47</xref>]. Usually, some configuration and some modality of sensors is chosen without strong justification, and empirical results are presented. Processing of the acquired signals and motion detection techniques are often also ad hoc and relatively unsophisticated. Furthermore, the available literature viewed as a whole is rather fragmented and incongruent, and the results are not directly comparable with each other; it is more like a scattered set of isolated results rather than a body of knowledge that builds on earlier work. A unified and systematic treatment of the subject is desirable.</p>
<p>In this work, we use small, low-cost gyroscopes positioned on the human leg to classify leg motions. The motivation behind investigating the differentiation of leg motions is its potential applications in physical therapy and home-based rehabilitation. For example, a patient with paralysis may be given certain exercises to do regularly, and inertial sensors can be used remotely to assess which exercise the patient is doing and whether he is doing it properly. We provide a systematic comparison between various classification techniques used for motion recognition based on the same data set. The comparison is in terms of the successful differentiation rates, confusion matrices, and computational requirements of the techniques.</p>
<p>The organization of this paper is as follows: In Section 2., we introduce the motions classified in this study and describe the experimental methodology. Feature selection and reduction process is the topic of Section 3. In Section 4., we review the classification methods used in this study. In Section 5., we present the experimental results and compare the computational costs of the methods. We also provide a brief discussion on the selection of classification techniques and their trade-offs. Section 6. briefly addresses the potential application areas of miniature inertial sensors in motion classification. In Section 7., we draw our conclusions and provide possible directions for future work.</p></sec>
<sec>
<label>2.</label>
<title>Classified Leg Motions and Experimental Methodology</title>
<p>Eight different leg motions are classified using two single-axis gyroscopes that are placed on the subject's right leg. Photos taken while performing the motions are shown in <xref ref-type="fig" rid="f1-sensors-09-08508">Figure 1</xref>. Throughout the motions listed below, the subject's left foot stays on the ground. The motions are:
<list list-type="simple">
<list-item>
<p>M1: standing without moving the legs (<xref ref-type="fig" rid="f1-sensors-09-08508">Figure 1(a)</xref>),</p></list-item>
<list-item>
<p>M2: moving only the lower part of right leg to the back (<xref ref-type="fig" rid="f1-sensors-09-08508">Figure 1(b)</xref>),</p></list-item>
<list-item>
<p>M3: moving both the lower and the upper part of the right leg to the front while bending the knee (<xref ref-type="fig" rid="f1-sensors-09-08508">Figure 1(c)</xref>),</p></list-item>
<list-item>
<p>M4: moving the right leg forward without bending the knee (<xref ref-type="fig" rid="f1-sensors-09-08508">Figure 1(d)</xref>),</p></list-item>
<list-item>
<p>M5: moving the right leg backward without bending the knee (<xref ref-type="fig" rid="f1-sensors-09-08508">Figure 1(e)</xref>),</p></list-item>
<list-item>
<p>M6: opening the right leg to the right side of the body without bending the knee (<xref ref-type="fig" rid="f1-sensors-09-08508">Figure 1(f)</xref>),</p></list-item>
<list-item>
<p>M7: squatting, moving both the upper and the lower leg (<xref ref-type="fig" rid="f1-sensors-09-08508">Figure 1(g)</xref>),</p></list-item>
<list-item>
<p>M8: moving only the lower part of the right leg upward while sitting on a stool (<xref ref-type="fig" rid="f1-sensors-09-08508">Figure 1(h)</xref>).</p></list-item></list>The two gyroscopes used are Gyrostar ENV-05A piezoelectric vibratory gyroscopes manufactured by Murata (<xref ref-type="fig" rid="f2-sensors-09-08508">Figure 2</xref>). The Gyrostar is a small, relatively inexpensive piezoelectric gyro originally developed for the automobile market and active suspension systems [<xref ref-type="bibr" rid="b54-sensors-09-08508">54</xref>]. The main application of the Gyrostar has been in helping car navigation systems to keep track of turns when, for short durations, the vehicle is out of contact with reference points derived from the additional sensors. It consists of a triangular prism made of a substance called “Elinvar”, on each vertical face of which a piezoelectric transducer is placed. Excitation of one transducer perpendicular to its face at about 8 kHz, causes vibrations to be picked up by the other two transducers. If the sensor remains still or moves in a straight line the signals produced by the pick-up transducers are exactly equal. If the prism is rotated around its principal axis, Coriolis forces proportionate to the rate of rotation are created.</p>
<p>This device operates with a DC supply voltage between eight and 13.5 V and converts angular velocity information to an analog DC voltage at its output [<xref ref-type="bibr" rid="b55-sensors-09-08508">55</xref>]. The output voltage is proportional to the angular velocity of the device around its principal axis and varies between 0.5 and 4.5 V. The maximum rate that can be measured with the Gyrostar is ±90°/sec. An angular velocity of zero (no motion) corresponds to a voltage output of 2.5 V. At the maximum angular velocities of +90°/sec and −90°/sec, the output voltages become 4.5 V and 0.5 V, respectively. If the angular velocity is larger than the maximum value (±90°/sec), saturation occurs at the corresponding voltage level (0.5 or 4.5 V) so that the rate and the orientation information become erroneous and need to be reset.</p>
<p>Because these devices are sensitive to rotations around a single axis, the positioning of these sensors should be done by taking their sensitivity axis into account. One of the gyroscopes is placed 17 cm above and the other one 15 cm below the right knee of the subject, as illustrated in <xref ref-type="fig" rid="f3-sensors-09-08508">Figure 3</xref>. The sensors' sensitivity axes are placed parallel to the ground and to the front of the body. In this way, the highest number of different motions can be detected.</p>
<p>The block diagram of the experimental setup is given in <xref ref-type="fig" rid="f4-sensors-09-08508">Figure 4</xref>. The experimental setup comprises two piezoelectric gyroscopes for sensing the leg motions, a multiplexer to multiplex the signals of the two gyros, an eight-bit analog-to-digital (A/D) converter with a sampling frequency of 2,668 Hz, and a PC. Data acquired by the A/D converter is recorded on the PC through the parallel port of the computer with a simple interface program written in Turbo C++. After acquiring and storing this data, the signals are downsampled by 23 to obtain 116 Hz digital signals. Sensor signal processing is done using MATLAB.</p>
<p>In a laboratory environment, a male subject performs the above eight motions. A motion is performed repetitively for approximately 72 seconds, and the motion itself takes about five to seven seconds, for approximately 10 motions per 72-second interval. The same motion is repeated for another seven 72-second intervals. The subject then performs the next motion for the total of eight 72-second intervals. When he has performed all eight motions, the total signal duration per leg motion then, is approximately 576 (= 8 × 72) seconds.</p>
<p>The last 70 seconds of each 72-second signal is used and divided into 10-second time windows. Hence, while acquiring signals for each motion, a total of 56 (= 7 × 8) ten-second windows are recorded from each gyroscope. As there are two gyroscopes, 112 (= 56 × 2) signals are available for each motion. Sample gyroscope signals for eight different leg motions are given in <xref ref-type="fig" rid="f5-sensors-09-08508">Figure 5</xref>, where the quasi-periodic nature of the signals can be observed.</p></sec>
<sec>
<label>3.</label>
<title>Feature Extraction and Reduction</title>
<p>After acquiring the signals as described above, a discrete-time sequence of <italic>N<sub>s</sub></italic> elements that can be represented as an <italic>N<sub>s</sub></italic> × 1 vector <bold>s</bold> = [<italic>s</italic><sub>1</sub>, <italic>s</italic><sub>2</sub>, …, <italic>s<sub>Ns</sub></italic>]<italic><sup>T</sup></italic> is obtained. For the 10-second time windows and the 116 Hz sampling rate, <italic>N<sub>s</sub></italic> = 1, 160. We considered using features such as the minimum and maximum values, the mean value, variance, skewness, kurtosis, autocorrelation sequence, cross-correlation sequence, total energy, peaks of the discrete Fourier transform (DFT) with the corresponding frequencies, and the discrete cosine transform (DCT) coefficients of <bold>s</bold>. DCT is a transformation technique widely used in image processing that transforms the data into the form of the sum of cosine functions [<xref ref-type="bibr" rid="b56-sensors-09-08508">56</xref>]. The features used are calculated as follows, with an explanation below of why we chose our final set of features:
<disp-formula id="FD1">
<label>(1)</label>
<mml:math id="mm1" display="block">
<mml:semantics id="sm1">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mtext>mean</mml:mtext>
<mml:mo stretchy="false">(</mml:mo>
<mml:mtext>s</mml:mtext>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mrow>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mo mathvariant="italic">μ</mml:mo>
<mml:mtext>s</mml:mtext></mml:msub>
<mml:mo>=</mml:mo>
<mml:mi>E</mml:mi>
<mml:mo stretchy="false">{</mml:mo>
<mml:mtext>s</mml:mtext>
<mml:mo stretchy="false">}</mml:mo>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mrow>
<mml:msub>
<mml:mi>N</mml:mi>
<mml:mi>s</mml:mi></mml:msub></mml:mrow></mml:mfrac>
<mml:munderover>
<mml:mo>∑</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>N</mml:mi>
<mml:mi>s</mml:mi></mml:msub></mml:mrow></mml:munderover>
<mml:mrow>
<mml:msub>
<mml:mi>s</mml:mi>
<mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mtext>variance</mml:mtext>
<mml:mo stretchy="false">(</mml:mo>
<mml:mtext>s</mml:mtext>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mrow>
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mo mathvariant="italic">σ</mml:mo>
<mml:mn>2</mml:mn></mml:msup>
<mml:mo>=</mml:mo>
<mml:mi>E</mml:mi>
<mml:mo stretchy="false">{</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mtext>s</mml:mtext>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mo mathvariant="italic">μ</mml:mo>
<mml:mtext>s</mml:mtext></mml:msub>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mn>2</mml:mn></mml:msup>
<mml:mo stretchy="false">}</mml:mo>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mrow>
<mml:msub>
<mml:mi>N</mml:mi>
<mml:mi>s</mml:mi></mml:msub></mml:mrow></mml:mfrac>
<mml:munderover>
<mml:mo>∑</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>N</mml:mi>
<mml:mi>s</mml:mi></mml:msub></mml:mrow></mml:munderover>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>s</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mo mathvariant="italic">μ</mml:mo>
<mml:mtext>s</mml:mtext></mml:msub>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mn>2</mml:mn></mml:msup></mml:mrow></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mtext>skewness</mml:mtext>
<mml:mo stretchy="false">(</mml:mo>
<mml:mtext>s</mml:mtext>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mrow>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>E</mml:mi>
<mml:mo stretchy="false">{</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mtext>s</mml:mtext>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mo mathvariant="italic">μ</mml:mo>
<mml:mtext>s</mml:mtext></mml:msub>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mn>3</mml:mn></mml:msup>
<mml:mo stretchy="false">}</mml:mo></mml:mrow>
<mml:mrow>
<mml:msup>
<mml:mo mathvariant="italic">σ</mml:mo>
<mml:mn>3</mml:mn></mml:msup></mml:mrow></mml:mfrac>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mrow>
<mml:msub>
<mml:mi>N</mml:mi>
<mml:mi>s</mml:mi></mml:msub>
<mml:msup>
<mml:mo mathvariant="italic">σ</mml:mo>
<mml:mn>3</mml:mn></mml:msup></mml:mrow></mml:mfrac>
<mml:munderover>
<mml:mo>∑</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>N</mml:mi>
<mml:mi>s</mml:mi></mml:msub></mml:mrow></mml:munderover>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>s</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mo mathvariant="italic">μ</mml:mo>
<mml:mtext>s</mml:mtext></mml:msub>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mn>3</mml:mn></mml:msup></mml:mrow></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mtext>kurtosis</mml:mtext>
<mml:mo stretchy="false">(</mml:mo>
<mml:mtext>s</mml:mtext>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mrow>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>E</mml:mi>
<mml:mo stretchy="false">{</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mtext>s</mml:mtext>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mo mathvariant="italic">μ</mml:mo>
<mml:mtext>s</mml:mtext></mml:msub>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mn>4</mml:mn></mml:msup>
<mml:mo stretchy="false">}</mml:mo></mml:mrow>
<mml:mrow>
<mml:msup>
<mml:mo mathvariant="italic">σ</mml:mo>
<mml:mn>4</mml:mn></mml:msup></mml:mrow></mml:mfrac>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mrow>
<mml:msub>
<mml:mi>N</mml:mi>
<mml:mi>s</mml:mi></mml:msub>
<mml:msup>
<mml:mo mathvariant="italic">σ</mml:mo>
<mml:mn>4</mml:mn></mml:msup></mml:mrow></mml:mfrac>
<mml:munderover>
<mml:mo>∑</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>N</mml:mi>
<mml:mi>s</mml:mi></mml:msub></mml:mrow></mml:munderover>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>s</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mo mathvariant="italic">μ</mml:mo>
<mml:mtext>s</mml:mtext></mml:msub>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mn>4</mml:mn></mml:msup></mml:mrow></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mrow>
<mml:mtext>autocorrelation</mml:mtext>
<mml:mo>:</mml:mo></mml:mrow>
<mml:msub>
<mml:mi>R</mml:mi>
<mml:mrow>
<mml:mtext>ss</mml:mtext></mml:mrow></mml:msub>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mrow>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mrow>
<mml:msub>
<mml:mi>N</mml:mi>
<mml:mi>s</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:mo>Δ</mml:mo></mml:mrow></mml:mfrac>
<mml:munderover>
<mml:mo>∑</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn></mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>N</mml:mi>
<mml:mi>s</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:mo>Δ</mml:mo>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:munderover>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>s</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mo mathvariant="italic">μ</mml:mo>
<mml:mtext>s</mml:mtext></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>s</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>−</mml:mo>
<mml:mo>Δ</mml:mo></mml:mrow></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mo mathvariant="italic">μ</mml:mo>
<mml:mtext>s</mml:mtext></mml:msub>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mspace width="0.4em"/>
<mml:mo>Δ</mml:mo>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>N</mml:mi>
<mml:mi>s</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mrow>
<mml:mtext>crosscorrelation</mml:mtext>
<mml:mo>:</mml:mo></mml:mrow>
<mml:msub>
<mml:mi>R</mml:mi>
<mml:mrow>
<mml:mtext>su</mml:mtext></mml:mrow></mml:msub>
<mml:mo stretchy="false">(</mml:mo>
<mml:mo>Δ</mml:mo>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mrow>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mrow>
<mml:msub>
<mml:mi>N</mml:mi>
<mml:mi>s</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:mo>Δ</mml:mo></mml:mrow></mml:mfrac>
<mml:munderover>
<mml:mo>∑</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn></mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>N</mml:mi>
<mml:mi>s</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:mo>Δ</mml:mo>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:munderover>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>s</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mo mathvariant="italic">μ</mml:mo>
<mml:mtext>s</mml:mtext></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>u</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>−</mml:mo>
<mml:mo>Δ</mml:mo></mml:mrow></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mo mathvariant="italic">μ</mml:mo>
<mml:mi>u</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mspace width="0.4em"/>
<mml:mo>Δ</mml:mo>
<mml:mo>=</mml:mo>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mi>N</mml:mi>
<mml:mi>s</mml:mi></mml:msub>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo>,</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>N</mml:mi>
<mml:mi>s</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mrow>
<mml:mtext>DFT</mml:mtext>
<mml:mo>:</mml:mo></mml:mrow>
<mml:msub>
<mml:mi>S</mml:mi>
<mml:mrow>
<mml:mtext>DFT</mml:mtext></mml:mrow></mml:msub>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mrow>
<mml:mo>=</mml:mo>
<mml:munderover>
<mml:mo>∑</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn></mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>N</mml:mi>
<mml:mi>s</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:munderover>
<mml:mrow>
<mml:msub>
<mml:mi>s</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:msup>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mo>−</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mn>2</mml:mn>
<mml:mo mathvariant="italic">π</mml:mo>
<mml:mi>k</mml:mi>
<mml:mi>i</mml:mi></mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>N</mml:mi>
<mml:mi>s</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mrow></mml:msup></mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>N</mml:mi>
<mml:mi>s</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mrow>
<mml:mtext>DCT</mml:mtext>
<mml:mo>:</mml:mo></mml:mrow>
<mml:msub>
<mml:mi>S</mml:mi>
<mml:mrow>
<mml:mtext>DCT</mml:mtext></mml:mrow></mml:msub>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mrow>
<mml:mo>=</mml:mo>
<mml:mo mathvariant="italic">α</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:munderover>
<mml:mo>∑</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn></mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>N</mml:mi>
<mml:mi>s</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:munderover>
<mml:mrow>
<mml:msub>
<mml:mi>s</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>cos</mml:mo>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mspace width="0.2em"/>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mo mathvariant="italic">π</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mn>2</mml:mn>
<mml:mi>i</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:msub>
<mml:mi>N</mml:mi>
<mml:mi>s</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mrow>
<mml:mo>]</mml:mo></mml:mrow></mml:mrow>
<mml:mspace width="0.2em"/>
<mml:mi>k</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>N</mml:mi>
<mml:mi>s</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mtext>where</mml:mtext>
<mml:mspace width="0.2em"/>
<mml:mi>α</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mrow>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mo stretchy="true">{</mml:mo>
<mml:mrow>
<mml:mtable columnalign="left">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msqrt>
<mml:mrow>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mrow>
<mml:msub>
<mml:mi>N</mml:mi>
<mml:mi>s</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mrow></mml:msqrt></mml:mrow></mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mtext>for</mml:mtext>
<mml:mspace width="0.2em"/>
<mml:mi>k</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msqrt>
<mml:mrow>
<mml:mfrac>
<mml:mn>2</mml:mn>
<mml:mrow>
<mml:msub>
<mml:mi>N</mml:mi>
<mml:mi>s</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mrow></mml:msqrt></mml:mrow></mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mtext>for</mml:mtext>
<mml:mspace width="0.2em"/>
<mml:mi>k</mml:mi>
<mml:mo>≠</mml:mo>
<mml:mn>0</mml:mn></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mrow></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:semantics></mml:math></disp-formula></p>
<p>In these equations, <italic>s<sub>i</sub></italic> is the <italic>i</italic>th element of the discrete-time sequence s, <italic>E</italic>{.} denotes the expectation operator, <italic>μ</italic><bold><sub>s</sub></bold> and <italic>σ</italic> are the mean and the standard deviation of s, <italic>R</italic><sub>ss</sub>(Δ) is the unbiased autocorrelation sequence of <bold>s</bold>, <italic>μ</italic><bold><sub>u</sub></bold> is the mean of <bold>u</bold>, <italic>R</italic><bold><sub>su</sub></bold>(Δ) is the unbiased cross-correlation sequence between <bold>s</bold> and <bold>u</bold>, <italic>S</italic><sub>DFT</sub>(<italic>k</italic>) and <italic>S</italic><sub>DCT</sub>(<italic>k</italic>) are the <italic>k</italic>th elements of the 1-D <italic>N<sub>s</sub></italic>-point DFT and <italic>N<sub>s</sub></italic>-point DCT, respectively.</p>
<p>In constructing the feature vectors based on the acquired signals, features of the two gyroscope signals that correspond to the same 10-second time window are included in each feature vector. A total of 101 features are extracted from the signals of the two gyroscopes so that the size of each feature vector is 101 × 1. For each leg motion, 56 (= 7 × 8) such feature vectors are obtained. The initial set of features is as follows:
<list list-type="simple">
<list-item>
<label>1</label>
<p>mean value of gyro 1 signal</p></list-item>
<list-item>
<label>2</label>
<p>mean value of gyro 2 signal</p></list-item>
<list-item>
<label>3</label>
<p>kurtosis of gyro 1 signal</p></list-item>
<list-item>
<label>4</label>
<p>kurtosis of gyro 2 signal</p></list-item>
<list-item>
<label>5</label>
<p>skewness of gyro 1 signal</p></list-item>
<list-item>
<label>6</label>
<p>skewness of gyro 2 signal</p></list-item>
<list-item>
<label>7</label>
<p>minimum value of gyro 1 signal</p></list-item>
<list-item>
<label>8</label>
<p>minimum value of gyro 2 signal</p></list-item>
<list-item>
<label>9</label>
<p>maximum value of gyro 1 signal</p></list-item>
<list-item>
<label>10</label>
<p>maximum value of gyro 2 signal</p></list-item>
<list-item>
<label>11</label>
<p>minimum value of cross-correlation between gyro 1 and gyro 2 signals</p></list-item>
<list-item>
<label>12</label>
<p>maximum value of cross-correlation between gyro 1 and gyro 2 signals</p></list-item>
<list-item>
<label>13-17</label>
<p>maximum 5 peaks of DFT of gyro 1 signal</p></list-item>
<list-item>
<label>18-22</label>
<p>maximum 5 peaks of DFT of gyro 2 signal</p></list-item>
<list-item>
<label>23-27</label>
<p>the 5 frequencies corresponding to the maximum 5 peaks of DFT of gyro 1 signal</p></list-item>
<list-item>
<label>28-32</label>
<p>the 5 frequencies corresponding to the maximum 5 peaks of DFT of gyro 2 signal</p></list-item>
<list-item>
<label>33-38</label>
<p>6 samples of the autocorrelation function of gyro 1 signal (sample at the midpoint and every 25th sample up to the 125th)</p></list-item>
<list-item>
<label>39-44</label>
<p>6 samples of the autocorrelation function of gyro 2 signal (sample at the midpoint and every 25th sample up to the 125th)</p></list-item>
<list-item>
<label>45</label>
<p>minimum value of the autocorrelation function of gyro 1 signal</p></list-item>
<list-item>
<label>46</label>
<p>minimum value of the autocorrelation function of gyro 2 signal</p></list-item>
<list-item>
<label>47-61</label>
<p>15 samples of the cross-correlation between gyro 1 and gyro 2 signals (every 20th sample)</p></list-item>
<list-item>
<label>63-81</label>
<p>first 20 DCT coefficients of gyro 1</p></list-item>
<list-item>
<label>82-101</label>
<p>first 20 DCT coefficients of gyro 2</p></list-item></list>Because the initial set of features was quite large (101) and not all features were equally useful in discriminating the motions, we reduced the number of features in several different ways: First, we reduced the number of features from 101 to 14 by inspection, trying to identify the features that could correctly classify the motions by trial and error. These features are listed on the left in <xref ref-type="table" rid="t1-sensors-09-08508">Table 1</xref>. Then, by applying Principal Component Analysis (PCA) (see the Appendix) to these 14 selected features, we further reduced their number to six. Third, we selected the 14 features with the largest variances using the covariance matrix of the feature vectors. These features are listed on the right in <xref ref-type="table" rid="t1-sensors-09-08508">Table 1</xref>. We also reduced the 101 features to eight through PCA. The features selected by PCA correspond to linear combinations of the initial set of features, obtained through a matrix transformation. Since physical meaning cannot be assigned to these features, we do not list them here.</p>
<p>Finally, we employed the sequential forward feature selection (SFFS) algorithm [<xref ref-type="bibr" rid="b57-sensors-09-08508">57</xref>]. As opposed to feature reduction methods such as PCA, feature selection methods use the extracted features themselves that do have physical meaning. In SFFS, starting with a null feature set, features are added one at a time to the feature set such that with each addition, the correct classification rate is maximized. Adding new features is terminated when the desired correct classification rate or the maximum number of allowed features is reached. In our study, the techniques summarized in Section 4. are used for motion classification. We primarily use the arithmetic average of the correct classification rates obtained with these techniques as a guideline to ultimately determine the reduced feature set, although the individual performances of the different classification techniques are also considered.</p>
<p>The average correct classification rate with each newly added feature is given in <xref ref-type="table" rid="t2-sensors-09-08508">Table 2</xref> for two separate runs of the algorithm. As a result, the following features are selected in the given order:
<list list-type="order">
<list-item>
<p>maximum value of gyro 1 signal</p></list-item>
<list-item>
<p>maximum value of the cross-correlation between gyro 1 and gyro 2 signals</p></list-item>
<list-item>
<p>minimum value of gyro 2 signal</p></list-item>
<list-item>
<p>the 3rd maximum peak of DFT of gyro 2 signal</p></list-item>
<list-item>
<p>minimum value of the cross-correlation between gyro 1 and gyro 2 signals</p></list-item>
<list-item>
<p>the 3rd maximum peak of DFT of gyro 1 signal</p></list-item></list>All of these features are normalized to the interval [0, 1] to be used for classification. Scatter plots of these features are given in <xref ref-type="fig" rid="f6-sensors-09-08508">Figure 6</xref> pairwise, in the order that they have been selected. As expected, in the first two plots or so (parts (a) and (b) of the figure), the features for different classes are better clustered and more distinct.</p>
<p>We assume that after feature reduction or selection, the resulting feature vector is an <italic>N</italic> × 1 vector <bold>x</bold> = [<italic>x</italic><sub>1</sub>, …, <italic>x<sub>N</sub></italic>]<italic><sup>T</sup></italic>.</p></sec>
<sec>
<label>4.</label>
<title>Classification Techniques</title>
<p>We associate a class <italic>ω<sub>i</sub></italic> with each motion type (<italic>i</italic> = 1, …, <italic>c</italic>). An unknown motion is assigned to class <italic>ω<sub>i</sub></italic> if its feature vector <bold>x</bold> = [<italic>x</italic><sub>1</sub>, …, <italic>x<sub>N</sub></italic>]<italic><sup>T</sup></italic> falls in the region Ω<italic><sub>i</sub></italic> A rule that partitions the decision space into regions Ω<italic><sub>i</sub>, i</italic> = 1, …, <italic>c</italic> is called a <italic>decision rule</italic>. In our work, each one of these regions corresponds to a different motion type. Boundaries between these regions are called <italic>decision surfaces</italic>. The <italic>training set</italic> contains a total of <italic>I</italic> = <italic>I</italic><sub>1</sub> + <italic>I</italic><sub>2</sub> + … + <italic>I<sub>c</sub></italic> sample feature vectors where <italic>I<sub>i</sub></italic> sample feature vectors belong to class <italic>ω<sub>i</sub></italic>, and <italic>i</italic> = 1, …, <italic>c</italic>. The <italic>test set</italic> is then used to evaluate the performance of the decision rule.</p>
<sec>
<label>4.1.</label>
<title>Bayesian Decision Making (BDM)</title>
<p>In this method, the maximum a posteriori (MAP) decision rule is used for classification. Let <italic>p</italic>(<italic>ω<sub>i</sub></italic>) be the a priori probability of the motion belonging to class <italic>ω<sub>i</sub></italic>. To classify a motion with feature vector <bold>x</bold>, a posteriori probabilities <italic>p</italic>(<italic>ω<sub>i</sub></italic>∣<bold>x</bold>) are compared and the motion is classified into class <italic>ω<sub>j</sub></italic> that has the maximum a posteriori probability such that <italic>p</italic>(<italic>ω<sub>j</sub></italic>∣<bold>x</bold>) &gt; <italic>p</italic>(<italic>ω<sub>i</sub></italic>∣<bold>x</bold>) ∀<italic>i</italic> ≠ <italic>j</italic>. This is known as <italic>Bayes' minimum error rule</italic> and can be equivalently expressed as:
<disp-formula id="FD2">
<label>(2)</label>
<mml:math id="mm2" display="block">
<mml:semantics id="sm2">
<mml:mrow>
<mml:mi>ℓ</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:mtext>x</mml:mtext>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mo>arg</mml:mo>
<mml:mspace width="0.2em"/>
<mml:munder>
<mml:mrow>
<mml:mo>max</mml:mo></mml:mrow>
<mml:mi>j</mml:mi></mml:munder>
<mml:mi>p</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>ω</mml:mi>
<mml:mi>j</mml:mi></mml:msub>
<mml:mo stretchy="false">∣</mml:mo>
<mml:mtext>x</mml:mtext>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:semantics></mml:math></disp-formula>where <italic>ℓ</italic>(<bold>x</bold>) denotes the label for feature vector <bold>x</bold>. However, because these a posteriori probabilities are rarely known, they need to be estimated. A more convenient formulation of this rule can be obtained by using Bayes' theorem:
<disp-formula id="FD3">
<label>(3)</label>
<mml:math id="mm3" display="block">
<mml:semantics id="sm3">
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>ω</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo stretchy="false">∣</mml:mo>
<mml:mtext>x</mml:mtext>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:mtext>x</mml:mtext>
<mml:mo stretchy="false">∣</mml:mo>
<mml:msub>
<mml:mi>ω</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mi>p</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>ω</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:mtext>x</mml:mtext>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mfrac></mml:mrow></mml:semantics></mml:math></disp-formula>where <italic>p</italic>(<bold>x</bold>∣<italic>ω<sub>i</sub></italic>) are the class-conditional probability density functions (CCPDFs) which are also unknown and need to be estimated in their turn based on the training set. In <xref ref-type="disp-formula" rid="FD3">Equation (3)</xref>, 
<inline-formula>
<mml:math id="mm4">
<mml:semantics id="sm4">
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:mtext>x</mml:mtext>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:msubsup>
<mml:mo>∑</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mi>c</mml:mi></mml:msubsup>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:mtext>x</mml:mtext>
<mml:mo stretchy="false">∣</mml:mo>
<mml:msub>
<mml:mi>ω</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mi>p</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>ω</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:semantics></mml:math></inline-formula> is a constant and is equal to the same value for all classes. Then, the decision rule becomes: if <italic>p</italic>(<bold>x</bold>∣<italic>ω<sub>j</sub></italic>)<italic>p</italic>(<italic>ω<sub>j</sub></italic>) &gt; <italic>p</italic>(<bold>x</bold>∣<italic>ω<sub>i</sub></italic>)<italic>p</italic>(<italic>ω<sub>i</sub></italic>) ∀<italic>i</italic> ≠ <italic>j</italic> ⇒ <bold>x</bold> ∈ Ω<italic><sub>j</sub></italic>.</p>
<p>In addition, if the a priori probabilities <italic>p</italic>(<italic>ω<sub>i</sub></italic>) are assumed to be equal for each class, the a posteriori probability becomes directly proportional to the likelihood value <italic>p</italic>(<bold>x</bold>∣<italic>ω<sub>i</sub></italic>). Under this assumption, the decision rule simplifies to:
<disp-formula id="FD4">
<label>(4)</label>
<mml:math id="mm5" display="block">
<mml:semantics id="sm5">
<mml:mrow>
<mml:mi>ℓ</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:mtext>x</mml:mtext>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mo>arg</mml:mo>
<mml:mspace width="0.2em"/>
<mml:munder>
<mml:mrow>
<mml:mo>max</mml:mo></mml:mrow>
<mml:mi>j</mml:mi></mml:munder>
<mml:mi>p</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:mtext>x</mml:mtext>
<mml:mo stretchy="false">∣</mml:mo>
<mml:msub>
<mml:mi>ω</mml:mi>
<mml:mi>j</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:semantics></mml:math></disp-formula></p>
<p>The decision rule can be generalized as <italic>q<sub>j</sub></italic>(<bold>x</bold>) &gt; <italic>q<sub>i</sub></italic>(<bold>x</bold>) ∀<italic>i</italic> ≠ <italic>j</italic> ⇒ <bold>x</bold> ∈ Ω<italic><sub>j</sub></italic>, where the function <italic>q<sub>i</sub></italic> is called a <italic>discriminant function</italic>.</p>
<p>The various statistical techniques for estimating the CCPDFs based on the training set are often categorized as non-parametric and parametric. In non-parametric methods, no assumptions on the parametric form of the CCPDFs are made; however, this requires large training sets because any non-parametric PDF estimate based on a finite number of samples is biased [<xref ref-type="bibr" rid="b58-sensors-09-08508">58</xref>]. In parametric methods, specific models for the CCPDFs are assumed and then the parameters of these models are estimated. Parametric methods can be further categorized as normal and non-normal models.</p>
<p>In our study, the CCPDFs are assumed to have normal or Gaussian parametric form, and the parameters of the Gaussian distribution are estimated using maximum likelihood (ML) estimators. For class <italic>i</italic>, suppose a set of training vectors is given as {<bold>x</bold><italic><sub>i</sub></italic><sub>1</sub>, …, <bold>x</bold><italic><sub>iIi</sub></italic>}. Then the ML estimates for the mean vector and the covariance matrix are
<disp-formula id="FD5">
<label>(5)</label>
<mml:math id="mm6" display="block">
<mml:semantics id="sm6">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>μ</mml:mi>
<mml:mo>^</mml:mo></mml:mover>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mrow>
<mml:msub>
<mml:mi>I</mml:mi>
<mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:mfrac>
<mml:munderover>
<mml:mo>∑</mml:mo>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>I</mml:mi>
<mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:munderover>
<mml:mrow>
<mml:msub>
<mml:mtext>x</mml:mtext>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mrow></mml:semantics></mml:math></disp-formula>
<disp-formula id="FD6">
<label>(6)</label>
<mml:math id="mm7" display="block">
<mml:semantics id="sm7">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mo>Σ</mml:mo>
<mml:mo>^</mml:mo></mml:mover>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mrow>
<mml:msub>
<mml:mi>I</mml:mi>
<mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:mfrac>
<mml:munderover>
<mml:mo>∑</mml:mo>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>I</mml:mi>
<mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:munderover>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mtext>x</mml:mtext>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi></mml:mrow></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mover accent="true">
<mml:mi>μ</mml:mi>
<mml:mo>^</mml:mo></mml:mover>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mtext>x</mml:mtext>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi></mml:mrow></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mover accent="true">
<mml:mi>μ</mml:mi>
<mml:mo>^</mml:mo></mml:mover>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mi>T</mml:mi></mml:msup></mml:mrow></mml:mrow></mml:semantics></mml:math></disp-formula>Note that the ML estimator of the covariance is biased. Using these estimates, the CCPDF for class <italic>i</italic> is given as
<disp-formula id="FD7">
<label>(7)</label>
<mml:math id="mm8" display="block">
<mml:semantics id="sm8">
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:mtext>x</mml:mtext>
<mml:mo stretchy="false">∣</mml:mo>
<mml:msub>
<mml:mi>ω</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mn>2</mml:mn>
<mml:mi>π</mml:mi>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>I</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>/</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:msup>
<mml:mo stretchy="false">|</mml:mo>
<mml:msub>
<mml:mover accent="true">
<mml:mo>Σ</mml:mo>
<mml:mo>^</mml:mo></mml:mover>
<mml:mi>i</mml:mi></mml:msub>
<mml:msup>
<mml:mo stretchy="false">|</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>/</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:msup></mml:mrow></mml:mfrac>
<mml:mo>exp</mml:mo>
<mml:mrow>
<mml:mo stretchy="true">{</mml:mo>
<mml:mrow>
<mml:mo>−</mml:mo>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mn>2</mml:mn></mml:mfrac>
<mml:msup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mtext>x</mml:mtext>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mover accent="true">
<mml:mi>μ</mml:mi>
<mml:mo>^</mml:mo></mml:mover>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mi>T</mml:mi></mml:msup>
<mml:msubsup>
<mml:mover accent="true">
<mml:mo>Σ</mml:mo>
<mml:mo>^</mml:mo></mml:mover>
<mml:mi>i</mml:mi>
<mml:mrow>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msubsup>
<mml:mo stretchy="false">(</mml:mo>
<mml:mtext>x</mml:mtext>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mover accent="true">
<mml:mi>μ</mml:mi>
<mml:mo>^</mml:mo></mml:mover>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mo stretchy="true">}</mml:mo></mml:mrow></mml:mrow></mml:semantics></mml:math></disp-formula></p>
<p>Using <xref ref-type="disp-formula" rid="FD5">Equations (5)</xref>–<xref ref-type="disp-formula" rid="FD7">(7)</xref>, the CCPDFs are estimated for each class. Then, for a given test vector <bold>x</bold>, the decision rule in <xref ref-type="disp-formula" rid="FD4">Equation (4)</xref> is used for classification.</p></sec>
<sec>
<label>4.2.</label>
<title>Rule-Based Algorithm (RBA)</title>
<p>A rule-based algorithm or a decision tree can be considered a sequential procedure that classifies given inputs [<xref ref-type="bibr" rid="b59-sensors-09-08508">59</xref>]. An RBA follows predefined rules at each node of the tree and makes binary decisions based on these rules. Rules correspond to conditions such as “is feature <italic>x<sub>i</sub></italic> ≤ <italic>τ<sub>i</sub></italic>?,” where <italic>τ</italic> is the threshold value for a given feature and <italic>i</italic> = 1, 2, …, <italic>T</italic>, with <italic>T</italic> being the total number of features used [<xref ref-type="bibr" rid="b60-sensors-09-08508">60</xref>]. Selecting and calculating features before using them in the RBA is an important necessary issue to make the algorithm independent of the calculation cost of different features. These rules are determined by examining the training vectors of all classes. More discriminative features are used at the nodes higher in the tree hierarchy. Decision-tree algorithms start from the top of the tree and branch out at each node into two descendant nodes based on checking conditions similar to above. This process continues until one of the leaves is reached or until a branch is terminated.</p>
<p>As the information necessary to differentiate between the motions is completely embodied in the decision rules, the RBA has the advantage of not requiring storage of any reference feature vectors. The main difficulty is in designing the rules and making them independent of absolute quantities so that they will be more generally applicable.</p>
<p>The RBA for the classification of leg motions has eight leaves (for the eight motions) as expected, and 7 decision nodes, as illustrated in <xref ref-type="fig" rid="f7-sensors-09-08508">Figure 7</xref>. These decision nodes are enumerated from top to bottom and from left to right, respectively. The rules are determined by using the normalized values of the features between 0 and 1. The rules are inequalities that compare the value of certain features or ratios of features with a constant threshold level:
<list list-type="order">
<list-item>
<p>Is the variance of gyro 2 signal &lt; 0.1?</p></list-item>
<list-item>
<p>Is the variance of gyro 1 signal &lt; 0.1?</p></list-item>
<list-item>
<p>Is the min value of gyro 1 signal &gt; 0.6?</p></list-item>
<list-item>
<p>Is 
<inline-formula>
<mml:math id="mm9">
<mml:semantics id="sm9">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mtext>max value of gyro</mml:mtext>
<mml:mspace width="0.2em"/>
<mml:mn>1</mml:mn>
<mml:mspace width="0.2em"/>
<mml:mtext>signal</mml:mtext></mml:mrow>
<mml:mrow>
<mml:mtext>min value of gyro</mml:mtext>
<mml:mspace width="0.2em"/>
<mml:mn>1</mml:mn>
<mml:mspace width="0.2em"/>
<mml:mtext>signal</mml:mtext></mml:mrow></mml:mfrac>
<mml:mo>&lt;</mml:mo>
<mml:mn>0.1</mml:mn></mml:mrow></mml:semantics></mml:math></inline-formula>?</p></list-item>
<list-item>
<p>Is 
<inline-formula>
<mml:math id="mm10">
<mml:semantics id="sm10">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mtext>variance of gyro</mml:mtext>
<mml:mspace width="0.2em"/>
<mml:mn>2</mml:mn>
<mml:mspace width="0.2em"/>
<mml:mtext>signal</mml:mtext></mml:mrow>
<mml:mrow>
<mml:mtext>min value of autocorrelation function of gyro</mml:mtext>
<mml:mspace width="0.2em"/>
<mml:mn>2</mml:mn></mml:mrow></mml:mfrac>
<mml:mo>&gt;</mml:mo>
<mml:mn>1.04</mml:mn></mml:mrow></mml:semantics></mml:math></inline-formula>?</p></list-item>
<list-item>
<p>Is max value of cross-correlation function &lt; 0.4?</p></list-item>
<list-item>
<p>Is 
<inline-formula>
<mml:math id="mm11">
<mml:semantics id="sm11">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mtext>max value of gyro</mml:mtext>
<mml:mspace width="0.2em"/>
<mml:mn>2</mml:mn>
<mml:mspace width="0.2em"/>
<mml:mtext>signal</mml:mtext></mml:mrow>
<mml:mrow>
<mml:mtext>min value of gyro</mml:mtext>
<mml:mspace width="0.2em"/>
<mml:mn>2</mml:mn>
<mml:mspace width="0.2em"/>
<mml:mtext>signal</mml:mtext></mml:mrow></mml:mfrac>
<mml:mo>&lt;</mml:mo>
<mml:mn>1.4</mml:mn></mml:mrow></mml:semantics></mml:math></inline-formula>?</p></list-item></list></p></sec>
<sec>
<label>4.3.</label>
<title>Least-Squares Method (LSM)</title>
<p>Least-squares method is one of the simplest algorithms that can be used for classification. We have implemented LSM in two different ways: In the first approach, each test feature vector is compared with each reference vector stored in the database and the test vector is assigned to the same class as the nearest reference vector. Since this approach is the same as the <italic>k</italic>-NN method (when <italic>k</italic> is selected as 1) described below, its results are not presented separately.</p>
<p>In the second approach, the average reference vector for each class is calculated as a representative for that particular class. Each test vector is compared with the average reference vector (instead of each individual reference vector) as follows:
<disp-formula id="FD8">
<label>(8)</label>
<mml:math id="mm12" display="block">
<mml:semantics id="sm12">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="script">D</mml:mi>
<mml:mi>i</mml:mi>
<mml:mn>2</mml:mn></mml:msubsup>
<mml:mo>=</mml:mo>
<mml:munderover>
<mml:mo>∑</mml:mo>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mi>N</mml:mi></mml:munderover>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>n</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mi>r</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>n</mml:mi></mml:mrow></mml:msub>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mn>2</mml:mn></mml:msup>
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mn>1</mml:mn></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mi>r</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mn>1</mml:mn></mml:mrow></mml:msub>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mn>2</mml:mn></mml:msup>
<mml:mo>+</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo>+</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>N</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mi>r</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>N</mml:mi></mml:mrow></mml:msub>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mn>2</mml:mn></mml:msup></mml:mrow>
<mml:mspace width="0.4em"/>
<mml:mi>i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo>,</mml:mo>
<mml:mi>c</mml:mi></mml:mrow></mml:semantics></mml:math></disp-formula>The test vector is assigned to the same class as the nearest average reference vector. In this equation, <bold>x</bold> = [<italic>x</italic><sub>1</sub>, <italic>x</italic><sub>2</sub>, …, <italic>x<sub>N</sub></italic>]<italic><sup>T</sup></italic> represents a test feature vector, <bold>r</bold> = [<italic>r<sub>i</sub></italic><sub>1</sub>, <italic>r<sub>i</sub></italic><sub>2</sub>, …, <italic>r<sub>iN</sub></italic>]<italic><sup>T</sup></italic> represents the average of the reference feature vectors for each distinct class, and 
<inline-formula>
<mml:math id="mm13">
<mml:semantics id="sm13">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="script">D</mml:mi>
<mml:mi>i</mml:mi>
<mml:mn>2</mml:mn></mml:msubsup></mml:mrow></mml:semantics></mml:math></inline-formula> is the square of the distance between these two vectors.</p></sec>
<sec>
<label>4.4.</label>
<title><italic>k</italic>-Nearest Neighbor (<italic>k</italic>-NN) Algorithm</title>
<p>Consider the <italic>k</italic> nearest neighbors of a feature vector <bold>x</bold> in a given set of many feature vectors. The neighbors are taken from a set of feature vectors (the training set) for which the correct classification is known. The occurrence number of each class is counted among these neighbor vectors and suppose that <italic>k<sub>i</sub></italic> of these <italic>k</italic> vectors come from class <italic>ω<sub>i</sub></italic>. Then, a <italic>k</italic>-NN estimator for class <italic>ω<sub>i</sub></italic> can be defined as 
<inline-formula>
<mml:math id="mm14">
<mml:semantics id="sm14">
<mml:mrow>
<mml:mover accent="true">
<mml:mi>p</mml:mi>
<mml:mo>^</mml:mo></mml:mover>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>ω</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo stretchy="false">∣</mml:mo>
<mml:mtext>x</mml:mtext>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi>k</mml:mi>
<mml:mi>i</mml:mi></mml:msub></mml:mrow>
<mml:mi>k</mml:mi></mml:mfrac></mml:mrow></mml:semantics></mml:math></inline-formula>, and <italic>p̂</italic>(<bold>x</bold>∣<italic>ω<sub>i</sub></italic>) can be obtained from <italic>p̂</italic>(<bold>x</bold>∣<italic>ω<sub>i</sub></italic>)<italic>p̂</italic>(<italic>ω<sub>i</sub></italic>) = <italic>p̂</italic>(<italic>ω<sub>i</sub></italic>∣<bold>x</bold>)<italic>p̂</italic>(<bold>x</bold>). This results in a classification rule such that <bold>x</bold> is classified into class <italic>ω<sub>j</sub></italic> if <italic>k<sub>j</sub></italic> = max<italic><sub>i</sub></italic>(<italic>k<sub>i</sub></italic>), where <italic>i</italic> = 1, …, <italic>c</italic>. In other words, the <italic>k</italic> nearest neighbors of the vector <bold>x</bold> in the training set are considered and the vector <bold>x</bold> is classified into the same class as the majority of its <italic>k</italic> nearest neighbors [<xref ref-type="bibr" rid="b61-sensors-09-08508">61</xref>]. It is common to use the Euclidean distance measure, although other distance measures such as the Manhattan distance could in principle be used instead. The <italic>k</italic>-NN algorithm is sensitive to the local structure of the data.</p>
<p>Assigning training feature vectors to predefined classes and storing them for distance comparison can be thought of as the training phase of this technique, although no explicit training step is required. Calculating the distances of test vectors to each of the training vectors and selecting those with the <italic>k</italic> smallest distances comprises the test phase.</p>
<p>For example in <xref ref-type="fig" rid="f8-sensors-09-08508">Figure 8</xref>, suppose that the square is the test vector and the diamonds and stars are the vectors that come from two different classes, class 1 and class 2, respectively. If <italic>k</italic> = 4, the four vectors in the inner circle are then the nearest neighbors of the test vector (square). Three of these vectors belong to class 2 and the remaining one belongs to class 1, so the test vector will be classified as a class 2 vector. If <italic>k</italic> = 12, then the classes of the nearest 12 vectors should be inspected to determine the classification of the test vector (square). These 12 vectors can be seen inside the larger circle in <xref ref-type="fig" rid="f8-sensors-09-08508">Figure 8</xref>. Seven of these vectors are represented with diamonds (class 1) and the remaining five are stars (class 2), so the test vector (square) will be classified as a class 1 vector. As can be seen from the above example, selection of the parameter <italic>k</italic>, the number of neighbors considered, is a very important issue that can affect the classification decision. Unfortunately, a pre-defined rule for selecting the value of <italic>k</italic> does not exist [<xref ref-type="bibr" rid="b62-sensors-09-08508">62</xref>]. In this study, the number of nearest neighbors <italic>k</italic> is determined by maximizing the correct classification rate over different <italic>k</italic> values. When <italic>k</italic> = 1, the feature vector is simply assigned to the class of its nearest neighbor and this is, in fact, same as the first approach used in LSM.</p></sec>
<sec>
<label>4.5.</label>
<title>Dynamic Time Warping (DTW)</title>
<p>Dynamic time warping is an algorithm for measuring the similarity between two sequences that may vary in time or speed. An optimal match between two given sequences (e.g., a time series) is found under certain restrictions. The sequences are “warped” non-linearly in the time dimension to determine a measure of their similarity independent of certain non-linear variations in the time dimension. DTW is used mostly in finite vocabulary speech recognition to handle different speaking speeds [<xref ref-type="bibr" rid="b63-sensors-09-08508">63</xref>, <xref ref-type="bibr" rid="b64-sensors-09-08508">64</xref>]. Besides speech recognition, DTW has been used for word spotting in handwritten historical documents on electronic media [<xref ref-type="bibr" rid="b65-sensors-09-08508">65</xref>] and machine-printed documents [<xref ref-type="bibr" rid="b66-sensors-09-08508">66</xref>], in signature [<xref ref-type="bibr" rid="b67-sensors-09-08508">67</xref>, <xref ref-type="bibr" rid="b68-sensors-09-08508">68</xref>] and gait recognition [<xref ref-type="bibr" rid="b69-sensors-09-08508">69</xref>], for ECG signal classification [<xref ref-type="bibr" rid="b70-sensors-09-08508">70</xref>–<xref ref-type="bibr" rid="b72-sensors-09-08508">72</xref>], for fingerprint verification [<xref ref-type="bibr" rid="b73-sensors-09-08508">73</xref>], and for face localization in color images [<xref ref-type="bibr" rid="b74-sensors-09-08508">74</xref>]. In this study, DTW is used for classifying feature vectors extracted from gyroscope signals.</p>
<p>In DTW, the aim is to find the least-cost warping path for the tested feature vector among the stored reference feature vectors [<xref ref-type="bibr" rid="b63-sensors-09-08508">63</xref>]. The cost measure is typically taken as the Euclidean distance between the elements of the feature vectors. Given two feature vectors <bold>x</bold> and <bold>y</bold> with lengths <italic>N</italic> and <italic>M</italic>:
<disp-formula id="FD9">
<label>(9)</label>
<mml:math id="mm15" display="block">
<mml:semantics id="sm15">
<mml:mtable columnalign="left">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mtext>x</mml:mtext>
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mn>1</mml:mn></mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mn>2</mml:mn></mml:msub>
<mml:mo>,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>n</mml:mi></mml:msub>
<mml:mo>,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>N</mml:mi></mml:msub>
<mml:mo stretchy="false">]</mml:mo></mml:mrow>
<mml:mi>T</mml:mi></mml:msup></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mtext>y</mml:mtext>
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mn>1</mml:mn></mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mn>2</mml:mn></mml:msub>
<mml:mo>,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mi>m</mml:mi></mml:msub>
<mml:mo>,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mi>M</mml:mi></mml:msub>
<mml:mo stretchy="false">]</mml:mo></mml:mrow>
<mml:mi>T</mml:mi></mml:msup></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:semantics></mml:math></disp-formula>an <italic>N</italic> × <italic>M</italic> distance matrix <bold>d</bold> is constructed by using all the elements of the feature vectors <bold>x</bold> and <bold>y</bold>. The (<italic>n, m</italic>)th element of this matrix, <italic>d</italic>(<italic>n, m</italic>), is the distance between the <italic>n</italic>th element of <bold>x</bold> and the <italic>m</italic>th element of <bold>y</bold> and is given by 
<inline-formula>
<mml:math id="mm16">
<mml:semantics id="sm16">
<mml:mrow>
<mml:mi>d</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>n</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>m</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:msqrt>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>n</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mi>m</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mn>2</mml:mn></mml:msup></mml:mrow></mml:msqrt>
<mml:mo>=</mml:mo>
<mml:mspace width="0.2em"/>
<mml:mo stretchy="false">|</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>n</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mi>m</mml:mi></mml:msub>
<mml:mo stretchy="false">|</mml:mo></mml:mrow></mml:semantics></mml:math></inline-formula> [<xref ref-type="bibr" rid="b64-sensors-09-08508">64</xref>].</p>
<p>A warping path <bold>W</bold> is a contiguous set of matrix elements that defines a mapping between <bold>x</bold> and <bold>y</bold>. Assuming that the <italic>l</italic>th element of the warping path is <italic>w<sub>l</sub></italic> = (<italic>n<sub>l</sub>, m<sub>l</sub></italic>), the warping path <bold>W</bold> with length <italic>L</italic> is given as:
<disp-formula id="FD10">
<label>(10)</label>
<mml:math id="mm17" display="block">
<mml:semantics id="sm17">
<mml:mrow>
<mml:mtext mathvariant="bold">W</mml:mtext>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mn>1</mml:mn></mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mn>2</mml:mn></mml:msub>
<mml:mo>,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mi>l</mml:mi></mml:msub>
<mml:mo>,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mi>L</mml:mi></mml:msub>
<mml:mspace width="0.5em"/>
<mml:mo>max</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>N</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>M</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>≤</mml:mo>
<mml:mi>L</mml:mi>
<mml:mo>&lt;</mml:mo>
<mml:mi>N</mml:mi>
<mml:mo>+</mml:mo>
<mml:mi>M</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:semantics></mml:math></disp-formula>The minimum length of the warping path corresponds to max <italic>(N, M)</italic>, corresponding to the length of the diagonal of d when <italic>N = M</italic>. The maximum length is <italic>L = N + M</italic> − 1 when the warping path follows the two edges of the distance matrix.</p>
<p>The warping path W must minimize the overall cost function
<disp-formula id="FD11">
<label>(11)</label>
<mml:math id="mm18" display="block">
<mml:semantics id="sm18">
<mml:mrow>
<mml:mi mathvariant="script">C</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:mtext mathvariant="bold">W</mml:mtext>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mo>min</mml:mo>
<mml:mrow>
<mml:mo stretchy="true">(</mml:mo>
<mml:mrow>
<mml:munderover>
<mml:mo>∑</mml:mo>
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mi>L</mml:mi></mml:munderover>
<mml:mrow>
<mml:mi mathvariant="script">C</mml:mi>
<mml:mo stretchy="false">[</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mi>l</mml:mi></mml:msub>
<mml:mo stretchy="false">]</mml:mo></mml:mrow></mml:mrow>
<mml:mo stretchy="true">)</mml:mo></mml:mrow>
<mml:mo>=</mml:mo>
<mml:mo>min</mml:mo>
<mml:mrow>
<mml:mo stretchy="true">(</mml:mo>
<mml:mrow>
<mml:munderover>
<mml:mo>∑</mml:mo>
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mi>L</mml:mi></mml:munderover>
<mml:mrow>
<mml:mi>d</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>n</mml:mi>
<mml:mi>l</mml:mi></mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>m</mml:mi>
<mml:mi>l</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow>
<mml:mo stretchy="true">)</mml:mo></mml:mrow></mml:mrow></mml:semantics></mml:math></disp-formula>with the following four conditions [<xref ref-type="bibr" rid="b63-sensors-09-08508">63</xref>, <xref ref-type="bibr" rid="b64-sensors-09-08508">64</xref>, <xref ref-type="bibr" rid="b75-sensors-09-08508">75</xref>]:
<list list-type="order">
<list-item>
<p>(monotonicity) Warping function should be monotonic, meaning that the warping function cannot go “south” or “west”:</p>
<p><italic>n<sub>l</sub> ≥ n<sub>l</sub></italic><sub>−1</sub> and <italic>m<sub>l</sub> ≥ m<sub>l</sub></italic><sub>−1</sub></p></list-item>
<list-item>
<p>(boundary condition) The two vectors/sequences that are compared should be matched at the beginning and the end points of the warping path:</p>
<p><italic>w</italic><sub>1</sub> = (1, 1) and <italic>w<sub>L</sub></italic> = (<italic>N, M</italic>)</p></list-item>
<list-item>
<p>(continuity condition) Warping function should not bypass any points:</p>
<p><italic>n<sub>l</sub></italic> − <italic>n<sub>l</sub></italic><sub>−1</sub> ≤ 1 and <italic>m<sub>l</sub></italic> − <italic>m<sub>l</sub></italic><sub>−1</sub> ≤ 1</p></list-item>
<list-item>
<p>Maximum amount of warp is controlled by a global limit:</p>
<p>|<italic>n<sub>l</sub></italic> − <italic>m<sub>l</sub></italic>| <italic>&lt;G</italic></p>
<p>This global constraint <italic>G</italic> is called a <italic>window width</italic> and is used to speed up DTW and prevent pathological warpings [<xref ref-type="bibr" rid="b64-sensors-09-08508">64</xref>]. A good path is unlikely to wander very far from the diagonal.</p></list-item></list>For a given pair of sequences, many different warping paths between (1, 1) and (<italic>N, M</italic>) exist but the aim is to find the least-cost one. Therefore, a cumulative distance or cost matrix <bold>D</bold> is constructed starting at (<italic>n, m</italic>) = (1, 1). <italic>D</italic>(<italic>n, m</italic>) represents the cost of the least-cost path that can be obtained until reaching point (<italic>n, m</italic>). As stated above, the warp path must either be incremented by one or stay the same along the <italic>n</italic> and <italic>m</italic> axes. Therefore, the distances of the optimal warp paths one data point smaller than lengths <italic>n</italic> and <italic>m</italic> are contained in the matrix elements <italic>D</italic>(<italic>n</italic> − 1, <italic>m</italic> − 1),<italic>D</italic>(<italic>n</italic> − 1, <italic>m</italic>), and <italic>D</italic>(<italic>n, m</italic> − 1). Therefore, <italic>D</italic>(<italic>n, m</italic>) is calculated by:
<disp-formula id="FD12">
<label>(12)</label>
<mml:math id="mm19" display="block">
<mml:semantics id="sm19">
<mml:mrow>
<mml:mi>D</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>n</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>m</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mi>d</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>n</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>m</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>+</mml:mo>
<mml:mo>min</mml:mo>
<mml:mo stretchy="false">[</mml:mo>
<mml:mi>D</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>n</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mi>m</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>,</mml:mo>
<mml:mi>D</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>n</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mi>m</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>,</mml:mo>
<mml:mi>D</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>n</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>m</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo stretchy="false">]</mml:mo></mml:mrow></mml:semantics></mml:math></disp-formula>This equation defines the cumulative distance <italic>D</italic>(<italic>n, m</italic>) as the distance <italic>d</italic>(<italic>n, m</italic>) found in the current cell and the minimum of the cumulative distances of the three adjacent cells. Because this recurrence equation determines the value of a cell by using the values in three adjacent cells, the order that the cell values are evaluated in is important: The cost matrix is filled one column at a time from the bottom up, and from left to right. The final value <italic>D</italic>(<italic>N, M</italic>) is used as a measure of distance when comparing two given feature vectors. After the entire matrix is filled, the least-cost warping path between <italic>D</italic>(1, 1) and <italic>D</italic>(<italic>N, M</italic>) can be found if needed. This can be calculated very efficiently by using dynamic programming, starting with the (<italic>N, M</italic>) element and going backwards until reaching (1, 1). At each step, adjacent cells at the left, at the bottom, and at the lower-left diagonal of the present cell are checked. In <xref ref-type="fig" rid="f9-sensors-09-08508">Figure 9</xref>, the three possible directions for constructing each step of the path are illustrated. Whichever of these three cells has the smallest value is added to the warp path found so far, and the search continues from that cell. In finding the smallest value among <italic>D</italic>(<italic>n</italic> − 1, <italic>m</italic> − 1), <italic>D</italic>(<italic>n</italic> − 1, <italic>m</italic>), and <italic>D</italic>(<italic>n, m</italic> − 1), if any two or three of these elements including <italic>D</italic>(<italic>n</italic> − 1, <italic>m</italic> − 1) are equal, <italic>D</italic>(<italic>n</italic> − 1, <italic>m</italic> − 1) is selected as the minimum. In other words, the diagonal path segment is preferred whenever possible. If <italic>D</italic>(<italic>n</italic> − 1, <italic>m</italic>), and <italic>D</italic>(<italic>n, m</italic> − 1) are equal and smaller than <italic>D</italic>(<italic>n</italic> − 1, <italic>m</italic> − 1), then <italic>D</italic>(<italic>n</italic> − 1, <italic>m</italic>) or <italic>D</italic>(<italic>n, m</italic> − 1) is chosen randomly. The search stops when <italic>D</italic>(1, 1) is reached. The rationale for using a dynamic programming approach in this problem is that instead of attempting to solve the problem all at once, solutions to sub-problems (portions of the two sequences) are found and used to iteratively find solutions until the solution is found for the entire sequence.</p>
<p>An example warping path <bold>W</bold> is shown in <xref ref-type="fig" rid="f10-sensors-09-08508">Figure 10</xref>. Part of the DTW path in this figure is given by:
<disp-formula id="FD13">
<label>(13)</label>
<mml:math id="mm20" display="block">
<mml:semantics id="sm20">
<mml:mrow>
<mml:mtext mathvariant="bold">W</mml:mtext>
<mml:mo>=</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>,</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>,</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mn>3</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>,</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mn>4</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>,</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mn>5</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>3</mml:mn>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>,</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mn>6</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>4</mml:mn>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>,</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mn>6</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>5</mml:mn>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>,</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mn>7</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>5</mml:mn>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo>,</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>N</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>M</mml:mi>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:semantics></mml:math></disp-formula>The time and space complexity of the DTW algorithm is <italic>O</italic>(<italic>NM</italic>).</p>
<p>As an example, in <xref ref-type="fig" rid="f11-sensors-09-08508">Figure 11(a)</xref>, the upper and lower curves represent a 32 × 1 reference vector and a 32 × 1 test vector from two different classes. The alignment between the samples of these two vectors is illustrated with dot-dash lines. Because these two feature vectors are very different, there is a lot of warping when they try to align, as illustrated in <xref ref-type="fig" rid="f11-sensors-09-08508">Figure 11(b)</xref>. The reference and test vectors in part (c) of the figure both belong to the same class. Because these two vectors are very similar, warping is not observed between these two vectors, and the corresponding minimum-distance warp path shown in <xref ref-type="fig" rid="f11-sensors-09-08508">Figure 11(d)</xref> is a straight line. In <xref ref-type="fig" rid="f11-sensors-09-08508">Figures 11(e) and (f)</xref>, although both the reference and the test vector belong to the same class, there appears to be a small amount of warping. As in this example, warping can sometimes occur even between reference and test vectors from the same class, resulting in classification errors.</p></sec>
<sec>
<label>4.6.</label>
<title>Support Vector Machines (SVMs)</title>
<p>The support vector machine classifier is a machine learning technique proposed early in the 1980s [<xref ref-type="bibr" rid="b76-sensors-09-08508">76</xref>, <xref ref-type="bibr" rid="b77-sensors-09-08508">77</xref>]. It has been mostly used in applications such as object, voice, and handwritten character recognition, and text classification.</p>
<p>If the feature vectors in the original feature space are not linearly separable, SVMs pre-process and represent them in a space of higher dimension where they can become linearly separable. The dimension of the transformed space may sometimes be much higher than the original feature space. With a suitable nonlinear mapping <italic>ϕ</italic>(.) to a sufficiently high dimension, data from two different classes can always be made linearly separable, and separated by a hyperplane. The choice of the nonlinear mapping depends on the prior information available to the designer. If such information is not available, one might choose to use polynomials, Gaussians, or other types of basis functions. The dimensionality of the mapped space can be arbitrarily high. However, in practice, it may be limited by computational resources. The complexity of SVMs is related to the number of resulting support vectors rather than the high dimensionality of the transformed space.</p>
<p>Consider SVMs in a binary classification setting. We are given the training feature vectors <bold>x</bold><italic><sub>i</sub></italic> that are vectors in some space <italic>X</italic> ⊆ ℛ<italic><sup>N</sup></italic> and their labels <italic>ℓ<sub>i</sub></italic> ∈ {−1,1} where <italic>ℓ<sub>i</sub></italic> = <italic>ℓ</italic>(<bold>x</bold><italic><sub>i</sub></italic>) and <italic>i</italic> = 1, …, <italic>I</italic>. Here, <italic>ℓ<sub>i</sub></italic> is used to label the class of the feature vectors as before. If the feature vector is a class 1 vector, then <italic>ℓ<sub>i</sub></italic> = +1; if it is a class 2 vector <italic>ℓ<sub>i</sub></italic> = −1. The goal in training a SVM is to find the separating hyperplane with the largest margin so that the generalization of the classifier is better. All vectors lying on one side of the hyperplane are labeled as +1, and all vectors lying on the other side are labeled as −1. The support vectors are the (transformed) training patterns that lie closest to the hyperplane and are at equal distance from it. They correspond to the training samples that define the optimal separating hyperplane and are the most difficult patterns to classify, yet the most informative for the classification task.</p>
<p>More generally, SVMs allow one to project the original training data in space <italic>X</italic> to a higher-dimensional feature space ℱ via a Mercer kernel operator <italic>K</italic> [<xref ref-type="bibr" rid="b78-sensors-09-08508">78</xref>]. We consider a set of classifiers of the form 
<inline-formula>
<mml:math id="mm21">
<mml:semantics id="sm21">
<mml:mrow>
<mml:mi>f</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:mtext>x</mml:mtext>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:msubsup>
<mml:mo>∑</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mi>I</mml:mi></mml:msubsup>
<mml:mrow>
<mml:msub>
<mml:mi>β</mml:mi>
<mml:mi>i</mml:mi></mml:msub></mml:mrow>
<mml:mspace width="0.2em"/>
<mml:mi>K</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:mtext>x</mml:mtext>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mtext>x</mml:mtext>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:semantics></mml:math></inline-formula>. When <italic>f</italic>(<bold>x</bold>) ≥ 0, we label <bold>x</bold> as +1, otherwise as −1. When <italic>K</italic> satisfies Mercer's condition, <italic>K</italic>(<bold>u, v</bold>) = <italic>ϕ</italic>(<bold>u</bold>) · <italic>ϕ</italic>(<bold>v</bold>) where <italic>ϕ</italic>(.) : <italic>X</italic> → ℱ is a nonlinear mapping and “·” denotes the inner or dot product. We can then rewrite <italic>f</italic>(<bold>x</bold>) in the transformed space as <italic>f</italic>(<bold>x</bold>) = a · <italic>ϕ</italic>(<bold>x</bold>). The linear discriminant function <italic>f</italic>(<bold>x</bold>) is based on the hyperplane a · <italic>ϕ</italic>(<bold>x</bold>) = 0 where 
<inline-formula>
<mml:math id="mm22">
<mml:semantics id="sm22">
<mml:mrow>
<mml:mtext>a</mml:mtext>
<mml:mo>=</mml:mo>
<mml:msubsup>
<mml:mo>∑</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mi>I</mml:mi></mml:msubsup>
<mml:mrow>
<mml:msub>
<mml:mi>β</mml:mi>
<mml:mi>i</mml:mi></mml:msub></mml:mrow>
<mml:mo mathvariant="italic">ϕ</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mtext>x</mml:mtext>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:semantics></mml:math></inline-formula> is a weight vector. Thus, by using <italic>K</italic>, the training data is projected into a new feature space ℱ which is often higher dimensional. The SVM then computes the <italic>β<sub>i</sub></italic>'s that correspond to the maximal margin hyperplane in ℱ. By choosing different kernel functions, we can project the training data from <italic>X</italic> into spaces ℱ for which hyperplanes in ℱ correspond to more complex decision boundaries in the original space <italic>X</italic>. Hence, by nonlinear mapping of the original training patterns into other spaces, decision functions can be found using a linear algorithm in the transformed space by only computing the kernel <italic>K</italic>(<bold>x, x</bold><italic><sub>i</sub></italic>).</p>
<p>To illustrate the problem in 2-D, consider the training set feature vectors in <xref ref-type="fig" rid="f12-sensors-09-08508">Figure 12</xref>. In this example, there are two classes; squares (<italic>ℓ<sub>i</sub></italic> = +1) symbolize the first class (class 1) and circles (<italic>ℓ<sub>i</sub></italic> = −1) symbolize the second class (class 2). These two types of training vectors can be separated with infinitely many different hyperplanes, three of which are shown in <xref ref-type="fig" rid="f12-sensors-09-08508">Figure 12(a)</xref>. For each of these hyperplanes, correct classification rates may be different when test vectors are presented to the system. To have the smallest classification error at the test stage, the hyperplane should be placed between the support vectors of two classes with maximum and equal margin for both classes [<xref ref-type="bibr" rid="b79-sensors-09-08508">79</xref>]. For a SVM, the optimal hyperplane classifier is unique [<xref ref-type="bibr" rid="b60-sensors-09-08508">60</xref>]. The equation of a hyperplane that may be used to classify these two classes is given by:
<disp-formula id="FD14">
<label>(14)</label>
<mml:math id="mm23" display="block">
<mml:semantics id="sm23">
<mml:mrow>
<mml:mtext>a</mml:mtext>
<mml:mo>·</mml:mo>
<mml:mo mathvariant="italic">ϕ</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mtext>x</mml:mtext>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn></mml:mrow></mml:semantics></mml:math></disp-formula>and is represented by the solid line in <xref ref-type="fig" rid="f12-sensors-09-08508">Figure 12(b)</xref>. Here, both the weight vector <bold>a</bold> and the transformed feature vector <italic>ϕ</italic>(<bold>x</bold><italic><sub>i</sub></italic>) have been augmented by one dimension to include a bias weight so that the hyperplanes need not pass through the origin. For this hyperplane to have maximum margins, dotted and dashed margin lines in <xref ref-type="fig" rid="f12-sensors-09-08508">Figure 12(b)</xref> are given by the following two equations, respectively:
<disp-formula id="FD15">
<label>(15)</label>
<mml:math id="mm24" display="block">
<mml:semantics id="sm24">
<mml:mtable columnalign="left">
<mml:mtr>
<mml:mtd>
<mml:mtext>a</mml:mtext>
<mml:mo>·</mml:mo>
<mml:mo mathvariant="italic">ϕ</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mtext>x</mml:mtext>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mtext>a</mml:mtext>
<mml:mo>·</mml:mo>
<mml:mo mathvariant="italic">ϕ</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mtext>x</mml:mtext>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mtd></mml:mtr></mml:mtable></mml:semantics></mml:math></disp-formula>In the same figure, vectors that are marked with extra circles correspond to the support vectors.</p>
<p>Because there should not be training set vectors dropping between these margin lines, the following equations should be satisfied:
<disp-formula id="FD16">
<label>(16)</label>
<mml:math id="mm25" display="block">
<mml:semantics id="sm25">
<mml:mtable columnalign="left">
<mml:mtr>
<mml:mtd>
<mml:mtext>a</mml:mtext>
<mml:mo>·</mml:mo>
<mml:mo mathvariant="italic">ϕ</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mtext>x</mml:mtext>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>≥</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>∀</mml:mo>
<mml:msub>
<mml:mtext>x</mml:mtext>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>∈</mml:mo>
<mml:mtext>class</mml:mtext>
<mml:mspace width="0.2em"/>
<mml:mn>1</mml:mn></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mtext>a</mml:mtext>
<mml:mo>·</mml:mo>
<mml:mo mathvariant="italic">ϕ</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mtext>x</mml:mtext>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>≤</mml:mo>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>∀</mml:mo>
<mml:msub>
<mml:mtext>x</mml:mtext>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>∈</mml:mo>
<mml:mtext>class</mml:mtext>
<mml:mspace width="0.2em"/>
<mml:mn>2</mml:mn></mml:mtd></mml:mtr></mml:mtable></mml:semantics></mml:math></disp-formula></p>
<p>More compactly, a separating hyperplane ensures
<disp-formula id="FD17">
<label>(17)</label>
<mml:math id="mm26" display="block">
<mml:semantics id="sm26">
<mml:mrow>
<mml:msub>
<mml:mi>ℓ</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mi>f</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mtext>x</mml:mtext>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mi>ℓ</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mtext>a</mml:mtext>
<mml:mo>·</mml:mo>
<mml:mo mathvariant="italic">ϕ</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mtext>x</mml:mtext>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>≥</mml:mo>
<mml:mn>1</mml:mn>
<mml:mspace width="0.2em"/>
<mml:mtext>for</mml:mtext>
<mml:mspace width="0.2em"/>
<mml:mi>i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo>,</mml:mo>
<mml:mi>I</mml:mi></mml:mrow></mml:semantics></mml:math></disp-formula></p>
<p>Assuming a = [<bold>n</bold>, <italic>a</italic><sub>0</sub>] where <bold>n</bold> is the normal vector of the hyperplane, it can be shown that the distance between the two margin lines is 2/‖<bold>n</bold>‖. Therefore, to maximize the separation between these margin lines, ‖<bold>n</bold>‖ should be minimized. Since <italic>a</italic><sub>0</sub> is a constant, this is equivalent to minimizing ‖<bold>a</bold>‖.</p>
<p>To have optimal margin hyperplanes for classifying feature vectors, the optimal hyperplane can be found by minimizing the magnitude of the weight vector ‖ <bold>a</bold> ‖<sup>2</sup> subject to the constraint given by <xref ref-type="disp-formula" rid="FD17">Equation (17)</xref> [<xref ref-type="bibr" rid="b80-sensors-09-08508">80</xref>]. Using the method of Lagrange multipliers, we construct the functional
<disp-formula id="FD18">
<label>(18)</label>
<mml:math id="mm27" display="block">
<mml:semantics id="sm27">
<mml:mrow>
<mml:mi>ℒ</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:mtext>a</mml:mtext>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="normal">λ</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mn>2</mml:mn></mml:mfrac>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo>‖</mml:mo>
<mml:mtext>a</mml:mtext>
<mml:mo>‖</mml:mo></mml:mrow></mml:mrow>
<mml:mn>2</mml:mn></mml:msup>
<mml:mo>−</mml:mo>
<mml:munderover>
<mml:mo>∑</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mi>I</mml:mi></mml:munderover>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">λ</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo stretchy="false">[</mml:mo>
<mml:msub>
<mml:mi>ℓ</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mtext>a</mml:mtext>
<mml:mo>·</mml:mo>
<mml:mo mathvariant="italic">ϕ</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mtext>x</mml:mtext>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo stretchy="false">]</mml:mo></mml:mrow></mml:mrow></mml:semantics></mml:math></disp-formula>where the second term in the above equation expresses the goal of classifying the points correctly. To find the optimal hyperplane, we minimize ℒ(.) with respect to the weight vector <bold>a</bold>, while maximizing with respect to the undetermined Lagrange multipliers <italic>λ<sub>i</sub></italic> ≥ 0. This can be done by solving the constrained optimization problem by quadratic programming [<xref ref-type="bibr" rid="b81-sensors-09-08508">81</xref>] or by other techniques. The solution of the weight vector is 
<inline-formula>
<mml:math id="mm28">
<mml:semantics id="sm28">
<mml:mrow>
<mml:msup>
<mml:mtext>a</mml:mtext>
<mml:mo>∗</mml:mo></mml:msup>
<mml:mo>=</mml:mo>
<mml:msubsup>
<mml:mo>∑</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mi>I</mml:mi></mml:msubsup>
<mml:mrow>
<mml:msub>
<mml:mi>ℓ</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:msub>
<mml:mi mathvariant="normal">λ</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo mathvariant="italic">ϕ</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mtext>x</mml:mtext>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:semantics></mml:math></inline-formula>, corresponding to <italic>β<sub>i</sub></italic> = <italic>ℓ<sub>i</sub>λ<sub>i</sub></italic>. Then, the decision function is given by:
<disp-formula id="FD19">
<label>(19)</label>
<mml:math id="mm29" display="block">
<mml:semantics id="sm29">
<mml:mrow>
<mml:msup>
<mml:mi>f</mml:mi>
<mml:mo>∗</mml:mo></mml:msup>
<mml:mo stretchy="false">(</mml:mo>
<mml:mtext>x</mml:mtext>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:munderover>
<mml:mo>∑</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mi>I</mml:mi></mml:munderover>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">λ</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:msub>
<mml:mi>ℓ</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo mathvariant="italic">ϕ</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mtext>x</mml:mtext>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>·</mml:mo>
<mml:mo mathvariant="italic">ϕ</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mtext>x</mml:mtext>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:semantics></mml:math></disp-formula></p>
<p>In this study, the method summarized above is applied to differentiate feature vectors that belong to more than two classes. Following the one-versus-the-rest method, <italic>c</italic> different binary classifiers are trained, where each classifier recognizes one of <italic>c</italic> motion types.</p>
<p>In this study, the performance of linear classifiers was not satisfactory for classifying human leg motions. Therefore, a nonlinear classifier is used with a radial basis function (RBF) kernel according to the following model with <italic>γ</italic> = 4:
<disp-formula id="FD20">
<label>(20)</label>
<mml:math id="mm30" display="block">
<mml:semantics id="sm30">
<mml:mrow>
<mml:mi>K</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:mtext>x</mml:mtext>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mtext>x</mml:mtext>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mo>−</mml:mo>
<mml:mi>γ</mml:mi>
<mml:mo stretchy="false">|</mml:mo>
<mml:mtext>x</mml:mtext>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mtext>x</mml:mtext>
<mml:mi>i</mml:mi></mml:msub>
<mml:msup>
<mml:mo stretchy="false">|</mml:mo>
<mml:mn>2</mml:mn></mml:msup></mml:mrow></mml:msup></mml:mrow></mml:semantics></mml:math></disp-formula>A library for SVMs (LIBSVM toolbox) is used in the MATLAB environment [<xref ref-type="bibr" rid="b82-sensors-09-08508">82</xref>].</p></sec>
<sec>
<label>4.7.</label>
<title>Artificial Neural Networks (ANN)</title>
<p>Multi-layer ANNs consist of an input layer, one or more hidden layers to extract progressively more meaningful features, and a single output layer, each comprised of a number of units called <italic>neurons</italic>. The model of each neuron includes a smooth nonlinearity, which is called the <italic>activation function</italic>. Due to the presence of distributed nonlinearity and a high degree of connectivity, theoretical analysis of ANNs is difficult. These networks are trained to compute the boundaries of decision regions in the form of connection weights and biases by using training algorithms. The performance of ANNs is affected by the choice of parameters related to the network structure, training algorithm, and input signals, as well as by parameter initialization [<xref ref-type="bibr" rid="b83-sensors-09-08508">83</xref>, <xref ref-type="bibr" rid="b84-sensors-09-08508">84</xref>].</p>
<p>In this work, a three-layer ANN is used for classifying leg motions. The input layer has <italic>N</italic> neurons, equal to the dimension of the feature vectors. The hidden layer has nine neurons, and the output layer has <italic>c</italic> neurons, equal to the number of classes. In the input and hidden layers each, there is an additional neuron with a bias value of 1. For an input feature vector <bold>x</bold> ∈ ℝ<italic><sup>N</sup></italic>, the target output is 1 for the class that the vector belongs to, and 0 for all other output neurons. The sigmoid function used as the activation function in the hidden and output layers is given by:
<disp-formula id="FD21">
<label>(21)</label>
<mml:math id="mm31" display="block">
<mml:semantics id="sm31">
<mml:mrow>
<mml:mi>g</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>x</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>+</mml:mo>
<mml:msup>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mo>−</mml:mo>
<mml:mi>x</mml:mi></mml:mrow></mml:msup></mml:mrow></mml:mfrac></mml:mrow></mml:semantics></mml:math></disp-formula></p>
<p>The output neurons can take continuous values between 0 and 1. Fully-connected ANNs are trained with the back-propagation algorithm (BPA) [<xref ref-type="bibr" rid="b83-sensors-09-08508">83</xref>] by presenting a set of <italic>training patterns</italic> to the network. Different initial conditions and different numbers of neurons in the hidden layer have been considered.</p>
<p>The aim is to minimize the average of the sum of squared errors over all training vectors:
<disp-formula id="FD22">
<label>(22)</label>
<mml:math id="mm32" display="block">
<mml:semantics id="sm32">
<mml:mrow>
<mml:msub>
<mml:mi>ℰ</mml:mi>
<mml:mrow>
<mml:mtext>av</mml:mtext></mml:mrow></mml:msub>
<mml:mo stretchy="false">(</mml:mo>
<mml:mtext mathvariant="bold">w</mml:mtext>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mi>I</mml:mi></mml:mrow></mml:mfrac>
<mml:munderover>
<mml:mo>∑</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mi>I</mml:mi></mml:munderover>
<mml:mrow>
<mml:munderover>
<mml:mo>∑</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mi>c</mml:mi></mml:munderover>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>k</mml:mi></mml:mrow></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mi>o</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>k</mml:mi></mml:mrow></mml:msub>
<mml:mo stretchy="false">(</mml:mo>
<mml:mtext mathvariant="bold">w</mml:mtext>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo stretchy="false">]</mml:mo></mml:mrow>
<mml:mn>2</mml:mn></mml:msup></mml:mrow></mml:mrow></mml:mrow></mml:semantics></mml:math></disp-formula>Here, <bold>w</bold> is the weight vector, <italic>t<sub>ik</sub></italic> and <italic>o<sub>ik</sub></italic> are the desired and actual output values for the <italic>i</italic>th training pattern and the <italic>k</italic>th output neuron, and <italic>I</italic> is the total number of training patterns. When the entire training set is covered, an <italic>epoch</italic> is completed. The error between the desired and actual outputs is computed at the end of each iteration and these errors are averaged at the end of each epoch (<xref ref-type="disp-formula" rid="FD22">Equation (22)</xref>). The training process is terminated when a certain precision goal on the average error is reached or if the specified maximum number of epochs (5,000) is exceeded, whichever occurs earlier. The latter case occurs very rarely. The acceptable average error level is set to a value of 0.06. The weights are initialized randomly with a uniform distribution in the interval [0,1], and the learning rate is chosen as 0.3.</p>
<p>In the test phase, the test feature vectors are fed forward to the network, the outputs are compared with the desired outputs and the error between them is calculated. The test vector is said to be correctly classified if this error is below a threshold value of 0.15.</p></sec></sec>
<sec sec-type="results">
<label>5.</label>
<title>Experimental Results</title>
<p>In this study, the classification techniques described in the previous section are used to classify eight different leg motions. A total of 448 (= 7 × 8 × 8) feature vectors are available. In the training and testing phases of the classification process, we use the following approaches: repeated random sub-sampling (RRSS), <italic>P</italic>-fold, and leave-one-out (LOO) cross-validation techniques. In RRSS, we divide the 56 feature vectors from each motion type randomly into two sets so that each set contains 28 feature vectors. In total, 224 (= 28 × 8) vectors are used for training and the same number of vectors is used for testing. This is repeated 100 times and the resulting correct differentiation percentages are averaged. The disadvantage of this method is that because of the randomization, some feature vectors may never be selected in the testing or the validation phase, whereas others may be selected more than once. In other words, validation subsets may overlap.</p>
<p>In <italic>P</italic>-fold cross validation, the 448 feature vectors are divided into <italic>P</italic> = 8 partitions, where each partition contains seven randomly selected feature vectors from each class, for a total of 56 vectors. Of the <italic>P</italic> partitions, a single partition is retained as the validation set for testing, and the remaining <italic>P</italic> − 1 partitions are used for training. The cross-validation process is then repeated <italic>P</italic> times (the folds), where each of the <italic>P</italic> partitions is used exactly once for validation. The <italic>P</italic> results from the folds are then averaged to produce a single estimation. This process is repeated 100 times and the average correct differentiation percentage is reported. The advantage of this validation method over RRSS is that all feature vectors are used for both training and testing, and each feature vector is used for testing exactly once in each of the 100 runs.</p>
<p>Finally, we also used LOO cross validation, where a single feature vector out of 448 is used in turn for validation, and the remaining 447 feature vectors are used for training. This is repeated such that each feature vector is used once as the validation data (i.e., 448 times) and the correct classification rate is calculated. This is the same as a <italic>P</italic>-fold cross validation with <italic>P</italic> being equal to the number of feature vectors in the original sample (<italic>P</italic> = 448). Because the training process is repeated a large number of times, the LOO cross-validation technique is often computationally expensive.</p>
<p>Correct differentiation rates obtained with different classification techniques are given in <xref ref-type="table" rid="t3-sensors-09-08508">Tables 3</xref>–<xref ref-type="table" rid="t5-sensors-09-08508">5</xref> for the five different feature sets we considered and the three different cross-validation techniques. For the RBA, the features used in the rules do not correspond to any of the sets presented in <xref ref-type="table" rid="t3-sensors-09-08508">Tables 3</xref>–<xref ref-type="table" rid="t5-sensors-09-08508">5</xref>. Therefore, RBA results are not listed in these tables. Correct differentiation rates of 95.2%, 95.1%, and 95.1% are achieved with RBA for RRSS, <italic>P</italic>-fold, and LOO cross-validation techniques, respectively.</p>
<p>Among the five different feature sets that we considered, the first two and the last one result in higher classification rates in general. As the last feature set (obtained by SFFS) can be obtained more systematically, we used this feature set in reporting the confusion matrices of the different techniques.</p>
<p>From the tables, it can be observed that there is not a significant difference between the results of different cross-validation techniques in terms of their classification accuracy. Among the classification techniques we have considered and implemented, BDM in general gives the highest classification rate, followed by SVM, with a few exceptions. As LOO cross validation gives slightly larger correct differentiation rates, this cross-validation technique is used in obtaining the confusion matrices of the classification techniques presented in <xref ref-type="table" rid="t6-sensors-09-08508">Tables 6</xref>–<xref ref-type="table" rid="t12-sensors-09-08508">12</xref>. Looking at the confusion matrices of the different techniques, it can be observed that motions 4 and 5 and motions 2 and 8 are the motions mostly confused with each other. Motions 4 and 5 are similar in that both the lower and upper parts of the leg are moving without bending the knee forward and backward, respectively. The confusion of motions 2 and 8 is also caused by their similarity because only the lower part of the leg is moving backward and forward in these motions, respectively.</p>
<p>The confusion matrices for BDM and RBA are provided in <xref ref-type="table" rid="t6-sensors-09-08508">Tables 6</xref> and <xref ref-type="table" rid="t7-sensors-09-08508">7</xref>. With these methods, correct differentiation rates of 98.2% and 95.1% are, respectively, achieved.</p>
<p>In the LSM approach, test vectors are compared with the average of the reference vectors that are calculated for each of the eight classes. The confusion matrix for this method is provided in <xref ref-type="table" rid="t8-sensors-09-08508">Table 8</xref>. The overall successful differentiation rate of LSM is 94.2%.</p>
<p>Performance of the <italic>k</italic>-NN algorithm changes for different values of <italic>k</italic>. Correct differentiation rates for different <italic>k</italic> values are presented in <xref ref-type="fig" rid="f13-sensors-09-08508">Figures 13(a) and (b)</xref> for RRSS and LOO cross-validation techniques. As the value of <italic>k</italic> increases, the rate of successful classification decreases. Values of <italic>k</italic> between 1 and 4 seem to be more suitable because they provide larger classification rates. The confusion matrix of the <italic>k</italic>-NN algorithm for <italic>k</italic> = 1 is provided in <xref ref-type="table" rid="t9-sensors-09-08508">Table 9</xref>, and a successful differentiation rate of 97.6% is achieved.</p>
<p>We implemented the DTW algorithm in two different ways: In the first approach, the average of the reference feature vectors for each motion is used for comparison. The confusion matrix for the DTW method by using this first approach (DTW-1) is presented in <xref ref-type="table" rid="t10-sensors-09-08508">Table 10</xref>, and a correct differentiation rate of 96.0% is achieved. As a second approach (DTW-2), DTW distances are calculated between the test vector and each of the (56 × 8) − 1 = 447 reference vectors from different classes. The class of the nearest reference vector is assigned as the class of the test vector. Correct classification rate of this second approach is 97.3%. The corresponding confusion matrix is given in <xref ref-type="table" rid="t11-sensors-09-08508">Table 11</xref>.</p>
<p>In SVM, following the one-versus-the-rest method, each leg motion is assumed as the first class and the remaining seven leg motions are assumed as the second class. With LOO cross validation, a different SVM model is created for the classification of each test vector. Since there are 56 test vectors for each motion type, a total of 448 different SVM models are created. The number of correctly and incorrectly classified feature vectors for each motion type is tabulated in <xref ref-type="table" rid="t12-sensors-09-08508">Table 12</xref>(a). The overall correct classification rate of the SVM method is calculated as 98.2%.</p>
<p>For ANN, since the incorrectly classified feature vectors are usually classified as belonging to none of the classes, it is not possible to form a more detailed confusion matrix. The number of correctly and incorrectly classified feature vectors with LOO cross validation is given in <xref ref-type="table" rid="t12-sensors-09-08508">Table 12</xref>(b). The overall correct classification rate of this method is the lowest (80.1%) among all the methods considered. On the average, the network converges in about 400 epochs for the LOO cross-validation technique.</p>
<sec>
<label>5.1.</label>
<title>Computational Cost of the Classification Techniques</title>
<p>The classification techniques given above are also compared based on their computational costs. Pre-processing and classification times are calculated on an Intel Centrino Duo CPU T2400 @1.83 GHz, 0.99 GB RAM laptop computer running the Microsoft Windows XP Professional operating system. Pre-processing and storage requirements of the different techniques are tabulated in <xref ref-type="table" rid="t13-sensors-09-08508">Table 13</xref>. The pre-processing time of BDM is used for estimating the mean vector, covariance matrix and the CCPDFs, which need to be stored for the test stage. In RBA, the pre-processing phase involves extracting the rules based on the available data. Once the rules are available, the vectors need not be stored and any test vector can be classified using the RBA. In LSM and DTW-1, the averages of the training vectors for each class need to be stored for the test phase. Note that the pre-processing time for these two methods is exactly the same. For <italic>k</italic>-NN and DTW-2, all training vectors need to be stored. For the SVM, the SVM models constructed in the training phase need to be stored for the test phase. For ANN, the structure of the trained network and the connection weights need to be saved for testing. ANN and SVM require the longest training time and also have considerable storage requirements.</p>
<p>The resulting processing times of the different techniques for classifying a single feature vector are given in <xref ref-type="table" rid="t14-sensors-09-08508">Table 14</xref>. The classification time for RBA is the smallest, followed by SVM or LSM, <italic>k</italic>-NN (<italic>k</italic> = 1) or DTW-1 or the ANN, next BDM, and last DTW-2 methods. DTW-2 takes the longest amount of classification time due to the nature of the algorithm and also because a comparison should be made with every training vector. Among the different cross-validation techniques, RRSS requires the shortest amount of processing time, whereas in general, LOO requires the longest.</p></sec>
<sec sec-type="discussion">
<label>5.2.</label>
<title>Discussion</title>
<p>Given its very high correct classification rate and relatively small pre-processing and classification times and storage requirements, it can be concluded that BDM is superior to the other classification techniques we considered for the given classification problem. This result supports the idea that the distribution of the motions in the feature space can be well approximated by multi-dimensional Gaussian distributions. The low processing and storage requirements of the BDM method make it a strong candidate for similar classification problems.</p>
<p>The support vector machine method is also very accurate but requires a considerable amount of pre-processing time to construct the SVM models. For real-time applications, LSM and DTW-1 could also be suitable choices because they are faster than BDM at the expense of a slightly lower correct classification rate.</p>
<p>It can clearly be observed from the results that the ANN method performs significantly poorer than the other methods, and the required training time is much longer. This may be because the number of training vectors are limited, preventing the network from converging to a robust classifier. Increasing the number of hidden-layer neurons can improve the performance, however this would result in longer processing times.</p></sec></sec>
<sec>
<label>6.</label>
<title>Potential Application Areas</title>
<p>There are diverse applications in which the methods and algorithms presented in this paper can be utilized. In home-based rehabilitation and physical therapy, the required exercises for the patient can be monitored, and feedback can be provided to the patient or the therapist to maximize the efficiency of the therapy. Similar applications are sports training, physical education and dance, where the trainer and/or the trainee can be given feedback regarding their motions in terms of effectiveness and safety, as well as increasing the benefits of physical exercise, improving athletic performance, and most importantly, promoting health and preventing injuries. Integrating other sensing modalities such as accelerometers, heart rate and blood pressure monitors, more detailed judgment about the motions can be obtained and the efficiency of training and/or therapy can further be increased.</p>
<p>In a more general context, motion recognition and analysis using gyroscopes can be applied in biomechanics, ergonomics, remote monitoring of physically or mentally disabled, elderly, and children, detecting falls, sports science, animation and film making, computer games, professional simulators, virtual reality, and motion compensation and stabilization of equipment. The references for previous studies on some of these applications are given in Section 1.</p></sec>
<sec sec-type="conclusions">
<label>7.</label>
<title>Conclusions and Future Work</title>
<p>We have presented the results of a comparative study where features extracted from gyroscope signals are used for classifying leg motions. A number of classification techniques have been compared based on the same data set in terms of their correct differentiation rates, confusion matrices, computational costs, training and storage requirements. BDM achieves higher correct classification rates compared to the other classification techniques and has relatively small computational time and storage requirements. This parametric method can be employed in similar classification problems where it is appropriate to model the feature space with multi-dimensional Gaussian distributions. The support vector machine method is the second-best choice in terms of classification accuracy but it requires a considerable amount of pre-processing time to construct the models. For real-time applications, LSM and DTW-1 could also be considered suitable choices because they are faster than BDM at the expense of a slightly lower correct classification rate.</p>
<p>A number of feature extraction and reduction methods as well as different cross-validation techniques have been implemented and compared in this study. Although there is not a significant difference between the correct classification rates obtained by different cross-validation techniques, RRSS uses the shortest amount of processing time, whereas LOO requires the longest. However, the main disadvantage of RRSS is that some feature vectors may never be used for testing, whereas others may be used more than once. In <italic>P</italic>-fold and LOO cross validation, all feature vectors are used for both training and testing.</p>
<p>There are several possible future research directions that can be explored:</p>
<p>We plan to extend the classification of leg motions considered here into different daily activities performed in indoor and outdoor environments by a variety of subjects. An aspect of activity recognition and classification that has not been much investigated is the normalization between the way different individuals perform the same activities. Each person does a particular activity differently due to differences in body size, style, and timing. Although some approaches may be more prone to highlighting personal differences, new techniques need to be developed that involve time-warping and projections of signals and comparing their differentials.</p>
<p>To the best of our knowledge, optimizing the positioning, number, and type of sensors has not been much studied. Typically, some configuration, number, and modality of sensors is chosen and used without strong justification.</p>
<p>Detection and classification of falls using inertial sensors is another important problem that has not been sufficiently well investigated [<xref ref-type="bibr" rid="b18-sensors-09-08508">18</xref>]. One of the reasons for this is the difficulty of designing and performing fair and realistic experiments in this area [<xref ref-type="bibr" rid="b27-sensors-09-08508">27</xref>], and thus standard and systematic techniques for detecting and classifying falls still do not exist. In our ever-aging population, it seems imperative to develop such definitions and techniques as soon as possible [<xref ref-type="bibr" rid="b16-sensors-09-08508">16</xref>, <xref ref-type="bibr" rid="b17-sensors-09-08508">17</xref>].</p>
<p>Fusion of information from inertial sensors and cameras can be further explored to provide robust solutions in human activity monitoring, recognition, and classification. Joint use of these two sensing modalities increases the capabilities of intelligent systems and enlarges the application potential of inertial and vision systems.</p></sec>
<sec sec-type="methods">
<title>A Principal Component Analysis (Karhunen-Loéve Transformation)</title>
<p>Principal Component Analysis (PCA) is a technique used in pattern recognition to reduce the size of feature vectors by eliminating the redundant features. Components of the feature vector are extracted from the acquired signals or real world data, and are transformed to a new space where they become uncorrelated [<xref ref-type="bibr" rid="b85-sensors-09-08508">85</xref>]. Features with large variances are more discriminating so they are used to construct the transformation matrix, whereas features with small variances are considered as noise [<xref ref-type="bibr" rid="b75-sensors-09-08508">75</xref>]. The steps of PCA are as follows [<xref ref-type="bibr" rid="b86-sensors-09-08508">86</xref>]:
<list list-type="bullet">
<list-item>
<p>Mean of each feature vector is calculated and subtracted.</p></list-item>
<list-item>
<p>Covariance matrix of training feature vectors is calculated.</p></list-item>
<list-item>
<p>Eigenvalues and eigenvectors of the covariance matrix are calculated.</p></list-item>
<list-item>
<p>Transformation matrix is obtained by arranging the eigenvectors in descending order of their eigenvalues.</p></list-item>
<list-item>
<p>Features are transformed to a new space where they become uncorrelated.</p></list-item></list>The diagonal elements of the covariance matrix are the variances of the features and the off-diagonal elements correspond to the correlation between the different features. The feature with the largest eigenvalue is the most discriminative feature, and the corresponding eigenvector is called the principal component of the data set. This eigenvector is placed on the first row of the transformation matrix. The transformed features do not correspond to any physically meaningful quantity [<xref ref-type="bibr" rid="b59-sensors-09-08508">59</xref>].</p></sec></body>
<back>
<ack>
<p>This work is supported by the Scientific and Technological Research Council of Turkey (TÜBİTAK) under grant number EEEAG-109E059.</p></ack>
<ref-list>
<title>References</title>
<ref id="b1-sensors-09-08508"><label>1.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Sukkarieh</surname><given-names>S.</given-names></name><name><surname>Nebot</surname><given-names>E.M.</given-names></name><name><surname>Durrant-Whyte</surname><given-names>H.F.</given-names></name></person-group><article-title>A high integrity IMU/GPS navigation loop for autonomous land vehicle applications</article-title><source>IEEE Trans. Rob. Autom.</source><year>1999</year><volume>15</volume><fpage>572</fpage><lpage>578</lpage><pub-id pub-id-type="doi">10.1109/70.768189</pub-id></citation></ref>
<ref id="b2-sensors-09-08508"><label>2.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Tao</surname><given-names>Y.</given-names></name><name><surname>Hu</surname><given-names>H.</given-names></name><name><surname>Zhou</surname><given-names>H.</given-names></name></person-group><article-title>Integration of vision and inertial sensors for 3D arm motion tracking in home-based rehabilitation</article-title><source>Int. J. Rob. Res.</source><year>2007</year><volume>26</volume><fpage>607</fpage><lpage>624</lpage><pub-id pub-id-type="doi">10.1177/0278364907079278</pub-id></citation></ref>
<ref id="b3-sensors-09-08508"><label>3.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Zhu</surname><given-names>R.</given-names></name><name><surname>Zhou</surname><given-names>Z.</given-names></name></person-group><article-title>A real-time articulated human motion tracking using tri-axis inertial/magnetic sensors package</article-title><source>IEEE Trans. Neural Syst. Rehab. Eng.</source><year>2004</year><volume>12</volume><fpage>295</fpage><lpage>302</lpage><pub-id pub-id-type="doi">10.1109/TNSRE.2004.827825</pub-id></citation></ref>
<ref id="b4-sensors-09-08508"><label>4.</label><citation citation-type="book"><person-group person-group-type="editor"><name><surname>Cox</surname><given-names>I.J.</given-names></name><name><surname>Wilfong</surname><given-names>G.T.</given-names></name></person-group><source>Autonomous Robot Vehicles</source><publisher-name>Section on Inertial Navigation; Springer-Verlag</publisher-name><publisher-loc>New York, NY, USA</publisher-loc><year>1990</year></citation></ref>
<ref id="b5-sensors-09-08508"><label>5.</label><citation citation-type="book"><person-group person-group-type="editor"><name><surname>Leondes</surname><given-names>C.T.</given-names></name></person-group><source>Theory and Applications of Kalman Filtering</source><publisher-name>Sponsored by NATO Advisory Group for Aerospace Research and Development; Technical Editing and Reproduction</publisher-name><publisher-loc>London, UK</publisher-loc><year>1970</year></citation></ref>
<ref id="b6-sensors-09-08508"><label>6.</label><citation citation-type="book"><person-group person-group-type="author"><name><surname>Mackenzie</surname><given-names>D.A.</given-names></name></person-group><source>Inventing Accuracy: A Historical Sociology of Nuclear Missile Guidance</source><publisher-name>MIT Press</publisher-name><publisher-loc>Cambridge, MA, USA</publisher-loc><year>1990</year></citation></ref>
<ref id="b7-sensors-09-08508"><label>7.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Barshan</surname><given-names>B.</given-names></name><name><surname>Durrant-Whyte</surname><given-names>H.F.</given-names></name></person-group><article-title>Inertial navigation systems for mobile robots</article-title><source>IEEE Trans. Rob. Autom.</source><year>1995</year><volume>11</volume><fpage>328</fpage><lpage>342</lpage><pub-id pub-id-type="doi">10.1109/70.388775</pub-id></citation></ref>
<ref id="b8-sensors-09-08508"><label>8.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Tan</surname><given-names>C.W.</given-names></name><name><surname>Park</surname><given-names>S.</given-names></name></person-group><article-title>Design of accelerometer-based inertial navigation systems</article-title><source>IEEE Trans. Instrum. Meas.</source><year>2005</year><volume>54</volume><fpage>2520</fpage><lpage>2530</lpage><pub-id pub-id-type="doi">10.1109/TIM.2005.858129</pub-id></citation></ref>
<ref id="b9-sensors-09-08508"><label>9.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Vaganay</surname><given-names>J.</given-names></name><name><surname>Aldon</surname><given-names>M.J.</given-names></name></person-group><article-title>Attitude estimation for a vehicle using inertial sensors</article-title><conf-name>Proceedings of the 1st IFAC International Workshop on Intell. Auton. Vehicles</conf-name><conf-loc>Southampton, Hampshire, UK</conf-loc><conf-date>April 18–21, 1993</conf-date><person-group person-group-type="editor"><name><surname>Charnley</surname><given-names>D.</given-names></name></person-group><publisher-name>Pergamon</publisher-name><publisher-loc>Oxford, UK</publisher-loc><year>1993</year><fpage>89</fpage><lpage>94</lpage></citation></ref>
<ref id="b10-sensors-09-08508"><label>10.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Nichol</surname><given-names>J.G.</given-names></name><name><surname>Singh</surname><given-names>S.P.N.</given-names></name><name><surname>Waldron</surname><given-names>K.J.</given-names></name><name><surname>Palmer</surname><given-names>L.R.</given-names><suffix>III</suffix></name><name><surname>Orin</surname><given-names>D.E.</given-names></name></person-group><article-title>System design of a quadrupedal galloping machine</article-title><source>Int. J. Rob. Res.</source><year>2004</year><volume>23</volume><fpage>1013</fpage><lpage>1027</lpage><pub-id pub-id-type="doi">10.1177/0278364904047391</pub-id></citation></ref>
<ref id="b11-sensors-09-08508"><label>11.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Lin</surname><given-names>P.C.</given-names></name><name><surname>Komsuoglu</surname><given-names>H.</given-names></name><name><surname>Koditschek</surname><given-names>D.E.</given-names></name></person-group><article-title>Sensor data fusion for body state estimation in a hexapod robot with dynamical gaits</article-title><source>IEEE Trans. Rob.</source><year>2006</year><volume>22</volume><fpage>932</fpage><lpage>943</lpage><pub-id pub-id-type="doi">10.1109/TRO.2006.878954</pub-id></citation></ref>
<ref id="b12-sensors-09-08508"><label>12.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Ang</surname><given-names>W.T.</given-names></name><name><surname>Khosla</surname><given-names>P.K.</given-names></name><name><surname>Riviere</surname><given-names>C.N.</given-names></name></person-group><article-title>Design of all-accelerometer inertial measurement unit for tremor sensing in hand-held microsurgical instrument</article-title><conf-name>Proceedings of IEEE International Conference on Robotics and Automation</conf-name><conf-loc>Taipei, Taiwan</conf-loc><conf-date>September, 2003</conf-date><volume>2</volume><fpage>1781</fpage><lpage>1786</lpage></citation></ref>
<ref id="b13-sensors-09-08508"><label>13.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Ang</surname><given-names>W.T.</given-names></name><name><surname>Pradeep</surname><given-names>P.K.</given-names></name><name><surname>Riviere</surname><given-names>C.N.</given-names></name></person-group><article-title>Active tremor compensation in microsurgery</article-title><conf-name>Proceedings of the 26th Annual International Conference of the IEEE EMBS</conf-name><conf-loc>San Francisco, CA, USA</conf-loc><conf-date>September 1–5, 2004</conf-date><volume>1</volume><fpage>2738</fpage><lpage>2741</lpage></citation></ref>
<ref id="b14-sensors-09-08508"><label>14.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Maenaka</surname><given-names>K.</given-names></name></person-group><article-title>MEMS inertial sensors and their applications</article-title><conf-name>Proceeding of the 5th International Conference on Networked Sensing Systems</conf-name><conf-loc>Kanazawa, Japan</conf-loc><conf-date>June 17–19, 2008</conf-date><fpage>71</fpage><lpage>73</lpage></citation></ref>
<ref id="b15-sensors-09-08508"><label>15.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Mathie</surname><given-names>M.J.</given-names></name><name><surname>Celler</surname><given-names>B.G.</given-names></name><name><surname>Lovell</surname><given-names>N.H.</given-names></name><name><surname>Coster</surname><given-names>A.C.F.</given-names></name></person-group><article-title>Classification of basic daily movements using a triaxial accelerometer</article-title><source>Med. Biol. Eng. Comput.</source><year>2004</year><volume>42</volume><fpage>679</fpage><lpage>687</lpage><pub-id pub-id-type="doi">10.1007/BF02347551</pub-id><pub-id pub-id-type="pmid">15503970</pub-id></citation></ref>
<ref id="b16-sensors-09-08508"><label>16.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Hauer</surname><given-names>K.</given-names></name><name><surname>Lamb</surname><given-names>S.E.</given-names></name><name><surname>Jorstad</surname><given-names>E.C.</given-names></name><name><surname>Todd</surname><given-names>C.</given-names></name><name><surname>Becker</surname><given-names>C.</given-names></name></person-group><article-title>Systematic review of definitions and methods of measuring falls in randomised controlled fall prevention trials</article-title><source>Age Ageing</source><year>2006</year><volume>35</volume><fpage>5</fpage><lpage>10</lpage><pub-id pub-id-type="doi">10.1093/ageing/afi218</pub-id><pub-id pub-id-type="pmid">16364930</pub-id></citation></ref>
<ref id="b17-sensors-09-08508"><label>17.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Noury</surname><given-names>N.</given-names></name><name><surname>Fleury</surname><given-names>A.</given-names></name><name><surname>Rumeau</surname><given-names>P.</given-names></name><name><surname>Bourke</surname><given-names>A.K.</given-names></name><name><surname>Laighin</surname><given-names>G.O.</given-names></name><name><surname>Rialle</surname><given-names>V.</given-names></name><name><surname>Lundy</surname><given-names>J.E.</given-names></name></person-group><article-title>Fall detection—principles and methods</article-title><conf-name>Proceedings of the 29th Annual International Conferences of IEEE EMBS</conf-name><conf-loc>Lyon, France</conf-loc><conf-date>August 23–26, 2007</conf-date><fpage>1663</fpage><lpage>1666</lpage></citation></ref>
<ref id="b18-sensors-09-08508"><label>18.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Kangas</surname><given-names>M.</given-names></name><name><surname>Konttila</surname><given-names>A.</given-names></name><name><surname>Lindgren</surname><given-names>P.</given-names></name><name><surname>Winblad</surname><given-names>I.</given-names></name><name><surname>Jämsä</surname><given-names>T.</given-names></name></person-group><article-title>Comparison of low-complexity fall detection algorithms for body attached accelerometers</article-title><source>Gait Posture</source><year>2008</year><volume>28</volume><fpage>285</fpage><lpage>291</lpage><pub-id pub-id-type="doi">10.1016/j.gaitpost.2008.01.003</pub-id><pub-id pub-id-type="pmid">18294851</pub-id></citation></ref>
<ref id="b19-sensors-09-08508"><label>19.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Wu</surname><given-names>W.H.</given-names></name><name><surname>Bui</surname><given-names>A.A.T.</given-names></name><name><surname>Batalin</surname><given-names>M.A.</given-names></name><name><surname>Liu</surname><given-names>D.</given-names></name><name><surname>Kaiser</surname><given-names>W.J.</given-names></name></person-group><article-title>Incremental diagnosis method for intelligent wearable sensor system</article-title><source>IEEE Trans. Inf. Technol. B.</source><year>2007</year><volume>11</volume><fpage>553</fpage><lpage>562</lpage><pub-id pub-id-type="doi">10.1109/TITB.2007.897579</pub-id></citation></ref>
<ref id="b20-sensors-09-08508"><label>20.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Jovanov</surname><given-names>E.</given-names></name><name><surname>Milenkovic</surname><given-names>A.</given-names></name><name><surname>Otto</surname><given-names>C.</given-names></name><name><surname>de Groen</surname><given-names>P.C.</given-names></name></person-group><article-title>A wireless body area network of intelligent motion sensors for computer assisted physical rehabilitation</article-title><source>J. NeuroEng. Rehab.</source><year>2005</year><volume>2</volume><pub-id pub-id-type="doi">10.1186/1743-0003-2-6</pub-id></citation></ref>
<ref id="b21-sensors-09-08508"><label>21.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Pärkkä</surname><given-names>J.</given-names></name><name><surname>Ermes</surname><given-names>M.</given-names></name><name><surname>Korpipää</surname><given-names>P.</given-names></name><name><surname>Mäntyjärvi</surname><given-names>J.</given-names></name><name><surname>Peltola</surname><given-names>J.</given-names></name><name><surname>Korhonen</surname><given-names>I.</given-names></name></person-group><article-title>Activity classification using realistic data from wearable sensors</article-title><source>IEEE Trans. Inf. Technol. B.</source><year>2006</year><volume>10</volume><fpage>119</fpage><lpage>128</lpage><pub-id pub-id-type="doi">10.1109/TITB.2005.856863</pub-id></citation></ref>
<ref id="b22-sensors-09-08508"><label>22.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Ermes</surname><given-names>M.</given-names></name><name><surname>Pärkkä</surname><given-names>J.</given-names></name><name><surname>Mäntyjärvi</surname><given-names>J.</given-names></name><name><surname>Korhonen</surname><given-names>I.</given-names></name></person-group><article-title>Detection of daily activities and sports with wearable sensors in controlled and uncontrolled conditions</article-title><source>IEEE Trans. Inf. Technol. B.</source><year>2008</year><volume>12</volume><fpage>20</fpage><lpage>26</lpage><pub-id pub-id-type="doi">10.1109/TITB.2007.899496</pub-id></citation></ref>
<ref id="b23-sensors-09-08508"><label>23.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Aylward</surname><given-names>R.</given-names></name><name><surname>Paradiso</surname><given-names>J.A.</given-names></name></person-group><article-title>Sensemble: A wireless, compact, multi-user sensor system for interactive dance</article-title><conf-name>Proceedings of Conference on New Interfaces for Musical Expression</conf-name><conf-loc>Paris, France</conf-loc><conf-date>June 4–8, 2006</conf-date><fpage>134</fpage><lpage>139</lpage></citation></ref>
<ref id="b24-sensors-09-08508"><label>24.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Lee</surname><given-names>J.</given-names></name><name><surname>Ha</surname><given-names>I.</given-names></name></person-group><article-title>Real-time motion capture for a human body using accelerometers</article-title><source>Robotica</source><year>2001</year><volume>19</volume><fpage>601</fpage><lpage>610</lpage></citation></ref>
<ref id="b25-sensors-09-08508"><label>25.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Shiratori</surname><given-names>T.</given-names></name><name><surname>Hodgins</surname><given-names>J.K.</given-names></name></person-group><article-title>Accelerometer-based user interfaces for the control of a physically simulated character</article-title><source>ACM T. Graphic.</source><year>2008</year><volume>27</volume><issue>123</issue></citation></ref>
<ref id="b26-sensors-09-08508"><label>26.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Zijlstra</surname><given-names>W.</given-names></name><name><surname>Aminian</surname><given-names>K.</given-names></name></person-group><article-title>Mobility assessment in older people: new possibilities and challenges</article-title><source>Eur. J. Ageing</source><year>2007</year><volume>4</volume><fpage>3</fpage><lpage>12</lpage></citation></ref>
<ref id="b27-sensors-09-08508"><label>27.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Mathie</surname><given-names>M.J.</given-names></name><name><surname>Coster</surname><given-names>A.C.F.</given-names></name><name><surname>Lovell</surname><given-names>N.H.</given-names></name><name><surname>Celler</surname><given-names>B.G.</given-names></name></person-group><article-title>Accelerometry: providing an integrated, practical method for long-term, ambulatory monitoring of human movement</article-title><source>Physiol. Meas.</source><year>2004</year><volume>25</volume><fpage>R1</fpage><lpage>R20</lpage><pub-id pub-id-type="pmid">15132305</pub-id></citation></ref>
<ref id="b28-sensors-09-08508"><label>28.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Wong</surname><given-names>W.Y.</given-names></name><name><surname>Wong</surname><given-names>M.S.</given-names></name><name><surname>Lo</surname><given-names>K.H.</given-names></name></person-group><article-title>Clinical applications of sensors for human posture and movement analysis: A review</article-title><source>Prosthet. Orthot. Int.</source><year>2007</year><volume>31</volume><fpage>62</fpage><lpage>75</lpage><pub-id pub-id-type="pmid">17365886</pub-id></citation></ref>
<ref id="b29-sensors-09-08508"><label>29.</label><citation citation-type="book"><person-group person-group-type="author"><name><surname>Sabatini</surname><given-names>A.M.</given-names></name></person-group><article-title>Inertial sensing in biomechanics: a survey of computational techniques bridging motion analysis and personal navigation</article-title><source>Computational Intelligence for Movement Sciences: Neural Networks and Other Emerging Techniques</source><person-group person-group-type="editor"><name><surname>Begg</surname><given-names>R.K.</given-names></name><name><surname>Palaniswami</surname><given-names>M.</given-names></name></person-group><publisher-name>Idea Group Publishing</publisher-name><publisher-loc>Hershey, PA, USA</publisher-loc><year>2006</year><fpage>70</fpage><lpage>100</lpage></citation></ref>
<ref id="b30-sensors-09-08508"><label>30.</label><citation citation-type="thesis"><person-group person-group-type="author"><name><surname>Tunçel</surname><given-names>O.</given-names></name></person-group><article-title>Human Activity Classification with Miniature Inertial Sensors</article-title><source>Master's thesis</source><publisher-name>Department of Electrical and Electronics Engineering, Bilkent University</publisher-name><publisher-loc>Ankara, Turkey</publisher-loc><month>July</month><year>2009</year></citation></ref>
<ref id="b31-sensors-09-08508"><label>31.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Moeslund</surname><given-names>T.B.</given-names></name><name><surname>Granum</surname><given-names>E.</given-names></name></person-group><article-title>A survey of computer vision-based human motion capture</article-title><source>Comput. Vis. Image Und.</source><year>2001</year><volume>81</volume><fpage>231</fpage><lpage>268</lpage></citation></ref>
<ref id="b32-sensors-09-08508"><label>32.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Moeslund</surname><given-names>T.B.</given-names></name><name><surname>Hilton</surname><given-names>A.</given-names></name><name><surname>Krüger</surname><given-names>V.</given-names></name></person-group><article-title>A survey of advances in vision-based human motion capture and analysis</article-title><source>Comput. Vis. Image Und.</source><year>2006</year><volume>104</volume><fpage>90</fpage><lpage>126</lpage></citation></ref>
<ref id="b33-sensors-09-08508"><label>33.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Wang</surname><given-names>L.</given-names></name><name><surname>Hu</surname><given-names>W.</given-names></name><name><surname>Tan</surname><given-names>T.</given-names></name></person-group><article-title>Recent developments in human motion analysis</article-title><source>Pattern Recogn.</source><year>2003</year><volume>36</volume><fpage>585</fpage><lpage>601</lpage></citation></ref>
<ref id="b34-sensors-09-08508"><label>34.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Aggarwal</surname><given-names>J.K.</given-names></name><name><surname>Cai</surname><given-names>Q.</given-names></name></person-group><article-title>Human motion analysis: a review</article-title><source>Comput. Vis. Image Und.</source><year>1999</year><volume>73</volume><fpage>428</fpage><lpage>440</lpage></citation></ref>
<ref id="b35-sensors-09-08508"><label>35.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Hyeon-Kyu</surname><given-names>L.</given-names></name><name><surname>Kim</surname><given-names>J.H.</given-names></name></person-group><article-title>An HMM-based threshold model approach for gesture recognition</article-title><source>IEEE Trans. Pattern Anal.</source><year>1999</year><volume>21</volume><fpage>961</fpage><lpage>973</lpage></citation></ref>
<ref id="b36-sensors-09-08508"><label>36.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Junker</surname><given-names>H.</given-names></name><name><surname>Amft</surname><given-names>O.</given-names></name><name><surname>Lukowicz</surname><given-names>P.</given-names></name><name><surname>Troester</surname><given-names>G.</given-names></name></person-group><article-title>Gesture spotting with body-worn inertial sensors to detect user activities</article-title><source>Pattern Recogn.</source><year>2008</year><volume>41</volume><fpage>2010</fpage><lpage>2024</lpage></citation></ref>
<ref id="b37-sensors-09-08508"><label>37.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Lementec</surname><given-names>J.C.</given-names></name><name><surname>Bajcsy</surname><given-names>P.</given-names></name></person-group><article-title>Recognition of arm gestures using multiple orientation sensors: gesture classification</article-title><conf-name>Proceeding of the 7th International Conferences Intelligent Transportation Systems</conf-name><conf-loc>Washington, DC, USA</conf-loc><conf-date>October 3–6, 2004</conf-date><fpage>965</fpage><lpage>970</lpage></citation></ref>
<ref id="b38-sensors-09-08508"><label>38.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Uiterwaal</surname><given-names>M.</given-names></name><name><surname>Glerum</surname><given-names>E.B.C.</given-names></name><name><surname>Busser</surname><given-names>H.J.</given-names></name><name><surname>van Lummel</surname><given-names>R.C.</given-names></name></person-group><article-title>Ambulatory monitoring of physical activity in working situations, a validation study</article-title><source>J. Med. Eng. Technol.</source><year>1998</year><volume>22</volume><fpage>168</fpage><lpage>172</lpage><pub-id pub-id-type="pmid">9680600</pub-id></citation></ref>
<ref id="b39-sensors-09-08508"><label>39.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Bussmann</surname><given-names>J.B.</given-names></name><name><surname>Reuvekamp</surname><given-names>P.J.</given-names></name><name><surname>Veltink</surname><given-names>P.H.</given-names></name><name><surname>Martens</surname><given-names>W.L.</given-names></name><name><surname>Stam</surname><given-names>H.J.</given-names></name></person-group><article-title>Validity and reliability of measurements obtained with an “activity monitor” in people with and without transtibial amputation</article-title><source>Phys. Ther.</source><year>1998</year><volume>78</volume><fpage>989</fpage><lpage>998</lpage><pub-id pub-id-type="pmid">9736896</pub-id></citation></ref>
<ref id="b40-sensors-09-08508"><label>40.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Aminian</surname><given-names>K.</given-names></name><name><surname>Robert</surname><given-names>P.</given-names></name><name><surname>Buchser</surname><given-names>E.E.</given-names></name><name><surname>Rutschmann</surname><given-names>B.</given-names></name><name><surname>Hayoz</surname><given-names>D.</given-names></name><name><surname>Depairon</surname><given-names>M.</given-names></name></person-group><article-title>Physical activity monitoring based on accelerometry: validation and comparison with video observation</article-title><source>Med. Biol. Eng. Comput.</source><year>1999</year><volume>37</volume><fpage>304</fpage><lpage>308</lpage><pub-id pub-id-type="pmid">10505379</pub-id></citation></ref>
<ref id="b41-sensors-09-08508"><label>41.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Roetenberg</surname><given-names>D.</given-names></name><name><surname>Slycke</surname><given-names>P.J.</given-names></name><name><surname>Veltink</surname><given-names>P.H.</given-names></name></person-group><article-title>Ambulatory position and orientation tracking fusing magnetic and inertial sensing</article-title><source>IEEE Trans. Bio-med. Eng.</source><year>2007</year><volume>54</volume><fpage>883</fpage><lpage>890</lpage></citation></ref>
<ref id="b42-sensors-09-08508"><label>42.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Najafi</surname><given-names>B.</given-names></name><name><surname>Aminian</surname><given-names>K.</given-names></name><name><surname>Loew</surname><given-names>F.</given-names></name><name><surname>Blanc</surname><given-names>Y.</given-names></name><name><surname>Robert</surname><given-names>P.</given-names></name></person-group><article-title>Measurement of stand-sit and sit-stand transitions using a miniature gyroscope and its application in fall risk evaluation in the elderly</article-title><source>IEEE Trans. Bio-med. Eng.</source><year>2002</year><volume>49</volume><fpage>843</fpage><lpage>851</lpage></citation></ref>
<ref id="b43-sensors-09-08508"><label>43.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Najafi</surname><given-names>B.</given-names></name><name><surname>Aminian</surname><given-names>K.</given-names></name><name><surname>Paraschiv-Ionescu</surname><given-names>A.</given-names></name><name><surname>Loew</surname><given-names>F.</given-names></name><name><surname>Büla</surname><given-names>C.J.</given-names></name><name><surname>Robert</surname><given-names>P.</given-names></name></person-group><article-title>Ambulatory system for human motion analysis using a kinematic sensor: monitoring of daily physical activity in the elderly</article-title><source>IEEE Trans. Bio-med. Eng.</source><year>2003</year><volume>50</volume><fpage>711</fpage><lpage>723</lpage></citation></ref>
<ref id="b44-sensors-09-08508"><label>44.</label><citation citation-type="book"><person-group person-group-type="author"><name><surname>Viéville</surname><given-names>T.</given-names></name><name><surname>Faugeras</surname><given-names>O.D.</given-names></name></person-group><article-title>Cooperation of the Inertial and Visual Systems</article-title><edition>59th Ed.</edition><series>NATO ASI Series</series><source>Traditional and Non-Traditional Robotic Sensors</source><publisher-name>Springer-Verlag</publisher-name><publisher-loc>Berlin, Heidelberg, Germany</publisher-loc><year>1990</year><volume>F63</volume><fpage>339</fpage><lpage>350</lpage></citation></ref>
<ref id="b45-sensors-09-08508"><label>45.</label><citation citation-type="journal"><source>Workshop on Integration of Vision and Inertial Sensors (InerVis)</source><publisher-loc>Coimbra, Portugal</publisher-loc><month>June</month><year>2003</year><publisher-loc>Barcelona, Spain</publisher-loc><month>April</month><year>2005</year></citation></ref>
<ref id="b46-sensors-09-08508"><citation citation-type="journal"><label>46.</label><article-title>Special Issue on the 2nd Workshop on Integration of Vision and Inertial Sensors (InerVis05)</article-title><source>Int J Rob Res.</source><year>2007</year><volume>26</volume><fpage>515</fpage><lpage>517</lpage></citation></ref>
<ref id="b47-sensors-09-08508"><label>47.</label><citation citation-type="web"><person-group person-group-type="author"><name><surname>Bao</surname><given-names>L.</given-names></name><name><surname>Intille</surname><given-names>S.S.</given-names></name></person-group><article-title>Activity recognition from user-annotated acceleration data</article-title><conf-name>Proceedings of Pervasive Computing: Second International Conference of Lecture Notes in Computer Science</conf-name><conf-loc>Vienna, Austria</conf-loc><conf-date>April 21–23, 2004</conf-date><volume>3001</volume><fpage>1</fpage><lpage>17</lpage><comment>Available online: <ext-link xlink:href="http://web.media.mit.edu/intille/papers-files/BaoIntille04.pdf" ext-link-type="uri">http://web.media.mit.edu/intille/papers-files/BaoIntille04.pdf</ext-link> (accessed October 14, 2009)</comment></citation></ref>
<ref id="b48-sensors-09-08508"><label>48.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Veltink</surname><given-names>P.H.</given-names></name><name><surname>Bussman</surname><given-names>H.B.J.</given-names></name><name><surname>de Vries</surname><given-names>W.</given-names></name><name><surname>Martens</surname><given-names>W.L.J.</given-names></name><name><surname>van Lummel</surname><given-names>R.C.</given-names></name></person-group><article-title>Detection of static and dynamic activities using uniaxial accelerometers</article-title><source>IEEE Trans Rehabil. Eng.</source><year>1996</year><volume>4</volume><fpage>375</fpage><lpage>385</lpage><pub-id pub-id-type="pmid">8973963</pub-id></citation></ref>
<ref id="b49-sensors-09-08508"><label>49.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Kiani</surname><given-names>K.</given-names></name><name><surname>Snijders</surname><given-names>C.J.</given-names></name><name><surname>Gelsema</surname><given-names>E.S.</given-names></name></person-group><article-title>Computerized analysis of daily life motor activity for ambulatory monitoring</article-title><source>Technol. Health Care</source><year>1997</year><volume>5</volume><fpage>307</fpage><lpage>318</lpage><pub-id pub-id-type="pmid">9429271</pub-id></citation></ref>
<ref id="b50-sensors-09-08508"><label>50.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Foerster</surname><given-names>F.</given-names></name><name><surname>Smeja</surname><given-names>M.</given-names></name><name><surname>Fahrenberg</surname><given-names>J.</given-names></name></person-group><article-title>Detection of posture and motion by accelerometry: a validation study in ambulatory monitoring</article-title><source>Comput. Hum. Behav.</source><year>1999</year><volume>15</volume><fpage>571</fpage><lpage>583</lpage></citation></ref>
<ref id="b51-sensors-09-08508"><label>51.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Karantonis</surname><given-names>D.M.</given-names></name><name><surname>Narayanan</surname><given-names>M.R.</given-names></name><name><surname>Mathie</surname><given-names>M.</given-names></name><name><surname>Lovell</surname><given-names>N.H.</given-names></name><name><surname>Celler</surname><given-names>B.G.</given-names></name></person-group><article-title>Implementation of a real-time human movement classifier using a triaxial accelerometer for ambulatory monitoring</article-title><source>IEEE Trans. Inf. Technol. B.</source><year>2006</year><volume>10</volume><fpage>156</fpage><lpage>167</lpage></citation></ref>
<ref id="b52-sensors-09-08508"><label>52.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Allen</surname><given-names>F.R.</given-names></name><name><surname>Ambikairajah</surname><given-names>E.</given-names></name><name><surname>Lovell</surname><given-names>N.H.</given-names></name><name><surname>Celler</surname><given-names>B.G.</given-names></name></person-group><article-title>Classification of a known sequence of motions and postures from accelerometry data using adapted Gaussian mixture models</article-title><source>Physiol. Meas.</source><year>2006</year><volume>27</volume><fpage>935</fpage><lpage>951</lpage><pub-id pub-id-type="pmid">16951454</pub-id></citation></ref>
<ref id="b53-sensors-09-08508"><label>53.</label><citation citation-type="web"><person-group person-group-type="author"><name><surname>Kern</surname><given-names>N.</given-names></name><name><surname>Schiele</surname><given-names>B.</given-names></name><name><surname>Schmidt</surname><given-names>A.</given-names></name></person-group><article-title>Multi-sensor activity context detection for wearable computing</article-title><conf-name>Proceedings of European Symposium on Ambient Intelligence, Lecture Notes in Computer Science</conf-name><conf-loc>Eindhoven, The Netherlands</conf-loc><conf-date>November, 2003</conf-date><volume>2875</volume><fpage>220</fpage><lpage>232</lpage><comment>Available online: <ext-link xlink:href="http://citeseer.ist.psu.edu/kern03multisensor.html" ext-link-type="uri">http://citeseer.ist.psu.edu/kern03multisensor.html</ext-link> (accessed October 14, 2009)</comment></citation></ref>
<ref id="b54-sensors-09-08508"><label>54.</label><citation citation-type="book"><person-group person-group-type="author"><name><surname>Shelley</surname><given-names>T.</given-names></name><name><surname>Barrett</surname><given-names>J.</given-names></name></person-group><article-title>Vibrating gyro to keep cars on route</article-title><source>Eureka on Campus, Engineering Materials and Design</source><publisher-name>Spring</publisher-name><publisher-loc>Berlin, Germany</publisher-loc><year>1992</year><volume>4</volume><fpage>17</fpage></citation></ref>
<ref id="b55-sensors-09-08508"><label>55.</label><citation citation-type="book"><person-group person-group-type="author"><collab>Murata Manufacturing Co., Ltd.</collab></person-group><source>Murata Gyrostar ENV-05A Piezoelectric Vibratory Gyroscope Datasheet.</source><publisher-name>Murata Manufacturing Co., Ltd.</publisher-name><publisher-loc>Nagaokakyo, Japan</publisher-loc><year>1994</year></citation></ref>
<ref id="b56-sensors-09-08508"><label>56.</label><citation citation-type="book"><person-group person-group-type="author"><name><surname>Jain</surname><given-names>A.K.</given-names></name></person-group><source>Fundamentals of Digital Image Processing</source><publisher-name>Prentice Hall</publisher-name><publisher-loc>Upper Saddle River, NJ, USA</publisher-loc><year>1989</year></citation></ref>
<ref id="b57-sensors-09-08508"><label>57.</label><citation citation-type="book"><person-group person-group-type="author"><name><surname>Webb</surname><given-names>A.</given-names></name></person-group><source>Statistical Pattern Recognition</source><publisher-name>John Wiley &amp; Sons</publisher-name><publisher-loc>New York, NY, USA</publisher-loc><year>2002</year></citation></ref>
<ref id="b58-sensors-09-08508"><label>58.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Rosenblatt</surname><given-names>M.</given-names></name></person-group><article-title>Remarks on some nonparametric estimates of a density function</article-title><source>Ann. Math. Stat.</source><year>1956</year><volume>27</volume><fpage>832</fpage><lpage>837</lpage></citation></ref>
<ref id="b59-sensors-09-08508"><label>59.</label><citation citation-type="book"><person-group person-group-type="author"><name><surname>Nadler</surname><given-names>M.</given-names></name><name><surname>Smith</surname><given-names>E.P.</given-names></name></person-group><source>Pattern Recognition Engineering</source><publisher-name>John Wiley &amp; Sons</publisher-name><publisher-loc>New York, NY, USA</publisher-loc><year>1993</year></citation></ref>
<ref id="b60-sensors-09-08508"><label>60.</label><citation citation-type="book"><person-group person-group-type="author"><name><surname>Theodoridis</surname><given-names>S.</given-names></name><name><surname>Koutroumbas</surname><given-names>K.</given-names></name></person-group><source>Pattern Recognition</source><publisher-name>Academic Press</publisher-name><publisher-loc>Orlando, FL, USA</publisher-loc><year>2006</year></citation></ref>
<ref id="b61-sensors-09-08508"><label>61.</label><citation citation-type="book"><person-group person-group-type="author"><name><surname>Fukunaga</surname><given-names>K.</given-names></name></person-group><source>Introduction to Statistical Pattern Recognition</source><edition>2nd Ed.</edition><publisher-name>Academic Press</publisher-name><publisher-loc>San Diego, CA, USA</publisher-loc><year>1990</year></citation></ref>
<ref id="b62-sensors-09-08508"><label>62.</label><citation citation-type="book"><person-group person-group-type="author"><name><surname>Silverman</surname><given-names>B.W.</given-names></name></person-group><source>Density Estimation for Statistics and Data Analysis</source><publisher-name>Chapman and Hall</publisher-name><publisher-loc>New York, NY, USA</publisher-loc><year>1986</year></citation></ref>
<ref id="b63-sensors-09-08508"><label>63.</label><citation citation-type="book"><person-group person-group-type="author"><name><surname>Deller</surname><given-names>J.R.</given-names></name><name><surname>Hansen</surname><given-names>J.H.L.</given-names></name><name><surname>Proakis</surname><given-names>J.G.</given-names></name></person-group><source>Discrete-Time Processing of Speech Signals</source><publisher-name>IEEE</publisher-name><publisher-loc>New York, NY, USA</publisher-loc><year>2000</year></citation></ref>
<ref id="b64-sensors-09-08508"><label>64.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Keogh</surname><given-names>E.</given-names></name><name><surname>Ratanamahatana</surname><given-names>C.A.</given-names></name></person-group><article-title>Exact indexing of dynamic time warping</article-title><source>Knowl. Inf. Syst.</source><year>2005</year><volume>7</volume><fpage>358</fpage><lpage>386</lpage></citation></ref>
<ref id="b65-sensors-09-08508"><label>65.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Rath</surname><given-names>T.M.</given-names></name><name><surname>Manmatha</surname><given-names>R.</given-names></name></person-group><article-title>Word image matching using dynamic time warping</article-title><conf-name>Proceedings of 2003 IEEE Computer Society Conference on Computer Vision and Pattern Recognition</conf-name><publisher-loc>Madison, Wisconsin</publisher-loc><conf-date>June 16–22, 2003</conf-date><volume>2</volume><fpage>521</fpage><lpage>527</lpage></citation></ref>
<ref id="b66-sensors-09-08508"><label>66.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Konidaris</surname><given-names>T.</given-names></name><name><surname>Gatos</surname><given-names>B.</given-names></name><name><surname>Perantonis</surname><given-names>S.J.</given-names></name><name><surname>Kesidis</surname><given-names>A.</given-names></name></person-group><article-title>Keyword matching in historical machine-printed documents using synthetic data, word portions and dynamic time warping</article-title><conf-name>Proceedings of the 8th IAPR International Workshop on Document Analysis Systems</conf-name><conf-loc>Nara, Japan</conf-loc><conf-date>September 16–19, 2008</conf-date><fpage>539</fpage><lpage>545</lpage></citation></ref>
<ref id="b67-sensors-09-08508"><label>67.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Zanuy</surname><given-names>M.F.</given-names></name></person-group><article-title>On-line signature recognition based on VQ-DTW</article-title><source>Pattern Recogn</source><year>2007</year><volume>40</volume><fpage>981</fpage><lpage>992</lpage></citation></ref>
<ref id="b68-sensors-09-08508"><label>68.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Chang</surname><given-names>W.D.</given-names></name><name><surname>Shin</surname><given-names>J.</given-names></name></person-group><article-title>Modified dynamic time warping for stroke-based on-line signature verification</article-title><conf-name>Proceedings of the 9th International Conference on Document Analysis and Recognition</conf-name><conf-loc>Curitiba, State of Parana, Brazil</conf-loc><conf-date>September 23–26</conf-date><year>2007</year><volume>2</volume><fpage>724</fpage><lpage>728</lpage></citation></ref>
<ref id="b69-sensors-09-08508"><label>69.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Boulgouris</surname><given-names>N.V.</given-names></name><name><surname>Plataniotis</surname><given-names>K.N.</given-names></name><name><surname>Hatzinakos</surname><given-names>D.</given-names></name></person-group><article-title>Gait recognition using dynamic time warping</article-title><conf-name>Proceedings of the IEEE 6th Workshop on Multimedia Signal Processing</conf-name><conf-loc>Siena, Italy</conf-loc><conf-date>September 29– October 1, 2004</conf-date><fpage>263</fpage><lpage>266</lpage></citation></ref>
<ref id="b70-sensors-09-08508"><label>70.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Huang</surname><given-names>B.</given-names></name><name><surname>Kinsner</surname><given-names>W.</given-names></name></person-group><article-title>ECG frame classification using dynamic time warping</article-title><conf-name>IEEE Canadian Conference on Electrical and Computer Engineering</conf-name><conf-loc>Winnipeg, Manitoba</conf-loc><conf-date>May 12–15, 2002</conf-date><volume>2</volume><fpage>1105</fpage><lpage>1110</lpage></citation></ref>
<ref id="b71-sensors-09-08508"><label>71.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Vullings</surname><given-names>H.J.L.M.</given-names></name><name><surname>Verhaegen</surname><given-names>M.H.G.</given-names></name><name><surname>Verbruggen</surname><given-names>H.B.</given-names></name></person-group><article-title>Automated ECG segmentation with dynamic time warping</article-title><conf-name>Proceedings of the 20th Annual International Conference-IEEE/EMBS</conf-name><conf-loc>Hong Kong, China</conf-loc><conf-date>October 29– November 1, 1998</conf-date><volume>20</volume><fpage>163</fpage><lpage>166</lpage></citation></ref>
<ref id="b72-sensors-09-08508"><label>72.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Tuzcu</surname><given-names>V.</given-names></name><name><surname>Nas</surname><given-names>S.</given-names></name></person-group><article-title>Dynamic time warping as a novel tool in pattern recognition of ECG changes in heart rhythm disturbances</article-title><conf-name>Proceedings of the IEEE International Conference on Systems, Man and Cybernetics</conf-name><conf-loc>Hawaii, HI, USA</conf-loc><conf-date>October 10–12, 2005</conf-date><volume>1</volume><fpage>182</fpage><lpage>186</lpage></citation></ref>
<ref id="b73-sensors-09-08508"><label>73.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Kovács-Vajna</surname><given-names>Z.M.</given-names></name></person-group><article-title>A fingerprint verification system based on triangular matching and dynamic time warping</article-title><source>IEEE Trans. Pattern Anal.</source><year>2000</year><volume>22</volume><fpage>1266</fpage><lpage>1276</lpage></citation></ref>
<ref id="b74-sensors-09-08508"><label>74.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>López</surname><given-names>L.E.M.</given-names></name><name><surname>Elías</surname><given-names>R.P.</given-names></name><name><surname>Tavira</surname><given-names>J.V.</given-names></name></person-group><article-title>Face localization in color images using dynamic time warping and integral projections</article-title><conf-name>Proceedings of the International Joint Conference on Neural Networks</conf-name><conf-loc>Orlando, FL, USA</conf-loc><conf-date>August 12–17, 2007</conf-date><fpage>892</fpage><lpage>896</lpage></citation></ref>
<ref id="b75-sensors-09-08508"><label>75.</label><citation citation-type="book"><person-group person-group-type="author"><name><surname>Parsons</surname><given-names>T.</given-names></name></person-group><source>Voice and Speech Processing</source><publisher-name>McGraw-Hill</publisher-name><publisher-loc>New York, NY, USA</publisher-loc><year>1986</year></citation></ref>
<ref id="b76-sensors-09-08508"><label>76.</label><citation citation-type="book"><person-group person-group-type="author"><name><surname>Vapnik</surname><given-names>V.N.</given-names></name></person-group><source>Estimation of Dependences Based on Empirical Data</source><publisher-name>Nauka</publisher-name><publisher-loc>Moscow, Russia</publisher-loc><year>1979</year><comment>(in Russian, English translation: Springer Verlag: New York, NY, USA, 1982)</comment></citation></ref>
<ref id="b77-sensors-09-08508"><label>77.</label><citation citation-type="book"><person-group person-group-type="author"><name><surname>Hsu</surname><given-names>C.W.</given-names></name><name><surname>Chang</surname><given-names>C.C.</given-names></name><name><surname>Lin</surname><given-names>C.J.</given-names></name></person-group><source>A Practical Guide to Support Vector Classification</source><publisher-name>Department of Computer Science, National Taiwan University</publisher-name><publisher-loc>Taipei, Taiwan</publisher-loc><year>2008</year></citation></ref>
<ref id="b78-sensors-09-08508"><label>78.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Tong</surname><given-names>S.</given-names></name><name><surname>Koller</surname><given-names>D.</given-names></name></person-group><article-title>Support vector machine active learning with applications to text classification</article-title><source>J. Mach. Learn. Res.</source><year>2001</year><volume>2</volume><fpage>45</fpage><lpage>66</lpage></citation></ref>
<ref id="b79-sensors-09-08508"><label>79.</label><citation citation-type="book"><person-group person-group-type="author"><name><surname>Schölkopf</surname><given-names>B.</given-names></name><name><surname>Smola</surname><given-names>A.J.</given-names></name></person-group><source>Learning with Kernels</source><publisher-name>The MIT Press</publisher-name><publisher-loc>Cambridge, MA, USA</publisher-loc><year>2002</year></citation></ref>
<ref id="b80-sensors-09-08508"><label>80.</label><citation citation-type="book"><person-group person-group-type="author"><name><surname>Duda</surname><given-names>R.O.</given-names></name><name><surname>Hart</surname><given-names>P.E.</given-names></name><name><surname>Stork</surname><given-names>D.G.</given-names></name></person-group><source>Pattern Classification</source><edition>2nd Ed.</edition><publisher-name>John Wiley &amp; Sons</publisher-name><publisher-loc>New York, NY, USA</publisher-loc><year>2001</year></citation></ref>
<ref id="b81-sensors-09-08508"><label>81.</label><citation citation-type="book"><person-group person-group-type="author"><name><surname>Duin</surname><given-names>R.P.W.</given-names></name><name><surname>Juszczak</surname><given-names>P.</given-names></name><name><surname>Paclik</surname><given-names>P.</given-names></name><name><surname>Pekalska</surname><given-names>E.</given-names></name><name><surname>de Ridder</surname><given-names>D.</given-names></name><name><surname>Tax</surname><given-names>D.M.J.</given-names></name></person-group><source>A Matlab Toolbox for Pattern Recognition, PRTools4</source><publisher-name>Delft University of Technology</publisher-name><publisher-loc>Delft, The Netherlands</publisher-loc><year>2004</year></citation></ref>
<ref id="b82-sensors-09-08508"><label>82.</label><citation citation-type="web"><person-group person-group-type="author"><name><surname>Chang</surname><given-names>C.C.</given-names></name><name><surname>Lin</surname><given-names>C.J.</given-names></name></person-group><source>LIBSVM: a library for support vector machines</source><year>2001</year><comment>Available online: <ext-link xlink:href="http://www.csie.ntu.edu.tw/cjlin/libsvm" ext-link-type="uri">http://www.csie.ntu.edu.tw/cjlin/libsvm</ext-link> (accessed October 14, 2009)</comment></citation></ref>
<ref id="b83-sensors-09-08508"><label>83.</label><citation citation-type="book"><person-group person-group-type="author"><name><surname>Haykin</surname><given-names>S.</given-names></name></person-group><source>Neural Networks: A Comprehensive Foundation</source><publisher-name>Macmillan Publishing</publisher-name><publisher-loc>New York, NY, USA</publisher-loc><year>1994</year></citation></ref>
<ref id="b84-sensors-09-08508"><label>84.</label><citation citation-type="book"><person-group person-group-type="author"><name><surname>Hagan</surname><given-names>M.T.</given-names></name><name><surname>Demuth</surname><given-names>H.B.</given-names></name><name><surname>Beale</surname><given-names>M.H.</given-names></name></person-group><source>Neural Network Design</source><publisher-name>PWS Publishing</publisher-name><publisher-loc>Boston, MA, USA</publisher-loc><year>1996</year></citation></ref>
<ref id="b85-sensors-09-08508"><label>85.</label><citation citation-type="book"><person-group person-group-type="author"><name><surname>Kil</surname><given-names>D.H.</given-names></name><name><surname>Shin</surname><given-names>F.B.</given-names></name></person-group><source>Pattern Recognition and Prediction with Applications to Signal Characterization</source><publisher-name>American Institute of Physics</publisher-name><publisher-loc>New York, NY, USA</publisher-loc><year>1996</year></citation></ref>
<ref id="b86-sensors-09-08508"><label>86.</label><citation citation-type="web"><person-group person-group-type="author"><name><surname>Smith</surname><given-names>L.I.</given-names></name></person-group><source>A Tutorial on Principal Components Analysis</source><comment>Technical report</comment><year>2002</year><comment>Available online: <ext-link xlink:href="http://cs.otago.ac.nz/cosc453/student_tutorials/principal_components.pdf" ext-link-type="uri">http://cs.otago.ac.nz/cosc453/student_tutorials/principal_components.pdf</ext-link> (accessedOctober 14, 2009)</comment></citation></ref></ref-list>
<sec sec-type="display-objects">
<title>Figures and Tables</title>
<fig id="f1-sensors-09-08508" position="float">
<label>Figure 1.</label>
<caption>
<p>Eight different leg motions.</p></caption>
<graphic xlink:href="sensors-09-08508f1.gif"/></fig>
<fig id="f2-sensors-09-08508" position="float">
<label>Figure 2.</label>
<caption>
<p>Murata Gyrostar ENV-05A.</p></caption>
<graphic xlink:href="sensors-09-08508f2.gif"/></fig>
<fig id="f3-sensors-09-08508" position="float">
<label>Figure 3.</label>
<caption>
<p>Position of the two gyroscopes on the human leg (body figure adopted from <ext-link xlink:href="http://www.answers.com/body" ext-link-type="uri">http://www.answers.com/body</ext-link> breadths).</p></caption>
<graphic xlink:href="sensors-09-08508f3.gif"/></fig>
<fig id="f4-sensors-09-08508" position="float">
<label>Figure 4.</label>
<caption>
<p>Block diagram of the experimental setup.</p></caption>
<graphic xlink:href="sensors-09-08508f4.gif"/></fig>
<fig id="f5-sensors-09-08508" position="float">
<label>Figure 5.</label>
<caption>
<p>Signals of the two gyroscopes (gyro 1 and gyro 2) for the eight different leg motions.</p></caption>
<graphic xlink:href="sensors-09-08508f5.gif"/></fig>
<fig id="f6-sensors-09-08508" position="float">
<label>Figure 6.</label>
<caption>
<p>Scatter plots of the features selected by SFFS.</p></caption>
<graphic xlink:href="sensors-09-08508f6.gif"/></fig>
<fig id="f7-sensors-09-08508" position="float">
<label>Figure 7.</label>
<caption>
<p>The RBA for classifying leg motions.</p></caption>
<graphic xlink:href="sensors-09-08508f7.gif"/></fig>
<fig id="f8-sensors-09-08508" position="float">
<label>Figure 8.</label>
<caption>
<p>An example of the selection of the parameter <italic>k</italic> in the <italic>k</italic>-NN algorithm. The inner circle corresponds to <italic>k</italic> = 4 and the outer circle corresponds to <italic>k</italic> = 12, producing different classification results for the test vector.</p></caption>
<graphic xlink:href="sensors-09-08508f8.gif"/></fig>
<fig id="f9-sensors-09-08508" position="float">
<label>Figure 9.</label>
<caption>
<p>Three possible directions for constructing each step of the path.</p></caption>
<graphic xlink:href="sensors-09-08508f9.gif"/></fig>
<fig id="f10-sensors-09-08508" position="float">
<label>Figure 10.</label>
<caption>
<p>DTW mapping function.</p></caption>
<graphic xlink:href="sensors-09-08508f10.gif"/></fig>
<fig id="f11-sensors-09-08508" position="float">
<label>Figure 11.</label>
<caption>
<p>In (a), (c), and (e), the upper curves show reference vectors and the lower curves represent test vectors of size 32 × 1. Parts (b), (d), and (f) illustrate the least-cost warp paths between the two feature vectors, respectively. In (a), reference and test vectors are from different classes. In (c) and (e), both the reference and the test vectors are from the same class.</p></caption>
<graphic xlink:href="sensors-09-08508f11.gif"/></fig>
<fig id="f12-sensors-09-08508" position="float">
<label>Figure 12.</label>
<caption>
<p>(a) Three different hyperplanes separating two classes; (b) SVM hyperplane (solid line), its margins (dotted and dashed lines), and the support vectors (circled solid squares and dots).</p></caption>
<graphic xlink:href="sensors-09-08508f12.gif"/></fig>
<fig id="f13-sensors-09-08508" position="float">
<label>Figure 13.</label>
<caption>
<p>Correct classification rates of the <italic>k</italic>-NN algorithm for (a) <italic>k</italic> = 1, …, 28 (RRSS) and (b) <italic>k</italic> = 1, …, 55 (LOO).</p></caption>
<graphic xlink:href="sensors-09-08508f13.gif"/></fig>
<table-wrap id="t1-sensors-09-08508" position="float">
<label>Table 1.</label>
<caption>
<p>Features selected by inspection (left) and the features selected by using the covariance matrix (right).</p></caption>
<table frame="hsides" rules="none">
<thead>
<tr>
<th align="left" valign="middle">features selected by inspection:</th>
<th align="left" valign="middle">features selected from the covariance matrix:</th></tr>
<tr>
<th align="left" valign="bottom">
<hr/></th>
<th align="left" valign="bottom">
<hr/></th></tr></thead>
<tbody>
<tr>
<td align="left" valign="top">1: min value of cross-correlation</td>
<td align="left" valign="top">1: min value of gyro 2</td></tr>
<tr>
<td align="left" valign="top">2: max value of cross-correlation</td>
<td align="left" valign="top">2: min value of gyro 1</td></tr>
<tr>
<td align="left" valign="top">3: variance of gyro 2</td>
<td align="left" valign="top">3–8: 6 samples of the autocorrelation</td></tr>
<tr>
<td align="left" valign="top">4: min value of gyro 1</td>
<td align="left" valign="top">function of gyro 2</td></tr>
<tr>
<td align="left" valign="top">5: max value of gyro 1</td>
<td align="left" valign="top">9: 1st max peak of DFT of gyro 2</td></tr>
<tr>
<td align="left" valign="top">6: skewness of gyro 1</td>
<td align="left" valign="top">10: max value of gyro 2</td></tr>
<tr>
<td align="left" valign="top">7: skewness of gyro 2</td>
<td align="left" valign="top">11: min value of autocorrelation of gyro 2</td></tr>
<tr>
<td align="left" valign="top">8: mean of gyro 2</td>
<td align="left" valign="top">12: 3rd max peak of DFT of gyro 2</td></tr>
<tr>
<td align="left" valign="top">9: min value of gyro 2</td>
<td align="left" valign="top">13: max value of gyro 1</td></tr>
<tr>
<td align="left" valign="top">10–14: maximum 5 peaks of DFT of gyro 2</td>
<td align="left" valign="top">14: min value of cross-correlation</td></tr></tbody></table></table-wrap>
<table-wrap id="t2-sensors-09-08508" position="float">
<label>Table 2.</label>
<caption>
<p>Sample SFFS results where average correct classification rates over all classification techniques are given for two different runs.</p></caption>
<table frame="hsides" rules="none">
<thead>
<tr>
<th align="left" valign="top"><bold>features selected (1st run):</bold></th>
<th align="center" valign="top">%</th>
<th align="left" valign="top"><bold>features selected (2nd run):</bold></th>
<th align="center" valign="top">%</th></tr>
<tr>
<th align="center" valign="middle" colspan="2">
<hr/></th>
<th align="center" valign="middle" colspan="2">
<hr/></th></tr></thead>
<tbody>
<tr>
<td align="left" valign="top">max value of gyro 1</td>
<td align="center" valign="top">56.7</td>
<td align="left" valign="top">max value of gyro 1</td>
<td align="center" valign="top">56.8</td></tr>
<tr>
<td align="left" valign="top">max value of cross-correlation</td>
<td align="center" valign="top">86.2</td>
<td align="left" valign="top">max value of cross-correlation</td>
<td align="center" valign="top">86.9</td></tr>
<tr>
<td align="left" valign="top">3rd max peak of DFT of gyro 2</td>
<td align="center" valign="top">93.8</td>
<td align="left" valign="top">min value of gyro 2</td>
<td align="center" valign="top">93.8</td></tr>
<tr>
<td align="left" valign="top">variance of gyro 2</td>
<td align="center" valign="top">95.0</td>
<td align="left" valign="top">3rd max peak of DFT of gyro 2</td>
<td align="center" valign="top">95.8</td></tr>
<tr>
<td align="left" valign="top">min value of cross-correlation</td>
<td align="center" valign="top">95.9</td>
<td align="left" valign="top">min value of cross-correlation</td>
<td align="center" valign="top">96.3</td></tr>
<tr>
<td align="left" valign="top">min value of gyro 2</td>
<td align="center" valign="top">96.1</td>
<td align="left" valign="top">skewness of gyro 1</td>
<td align="center" valign="top">97.2</td></tr>
<tr>
<td align="left" valign="top">skewness of gyro 1</td>
<td align="center" valign="top">96.8</td>
<td align="left" valign="top">2nd DCT coefficient of gyro 2</td>
<td align="center" valign="top">97.4</td></tr>
<tr>
<td align="left" valign="top">5th max peak of DFT of gyro 2</td>
<td align="center" valign="top">97.0</td>
<td align="left" valign="top"/>
<td align="center" valign="top"/></tr>
<tr>
<td align="left" valign="top">6th DCT coefficient of gyro 2</td>
<td align="center" valign="top">97.2</td>
<td align="left" valign="top"/>
<td align="center" valign="top"/></tr></tbody></table></table-wrap>
<table-wrap id="t3-sensors-09-08508" position="float">
<label>Table 3.</label>
<caption>
<p>Correct differentiation rates for different feature reduction methods and RRSS cross validation.</p></caption>
<table frame="box" rules="all">
<thead>
<tr>
<th align="left" valign="bottom" rowspan="2">method:</th>
<th colspan="5" align="center" valign="top">correct differentiation rate (%)</th></tr>
<tr>
<th align="center" valign="top">by inspection<break/>(14 features)</th>
<th align="center" valign="top">PCA to 14 features<break/>(6 features)</th>
<th align="center" valign="top">covariance matrix<break/>(14 features)</th>
<th align="center" valign="top">PCA to 101 features<break/>(8 features)</th>
<th align="center" valign="top">SFFS<break/>(6 features)</th></tr></thead>
<tbody>
<tr>
<td align="left" valign="top">BDM</td>
<td align="center" valign="top">97.5</td>
<td align="center" valign="top">97.7</td>
<td align="center" valign="top">96.2</td>
<td align="center" valign="top">98.0</td>
<td align="center" valign="top">97.3</td></tr>
<tr>
<td align="left" valign="top">LSM</td>
<td align="center" valign="top">97.0</td>
<td align="center" valign="top">96.9</td>
<td align="center" valign="top">91.8</td>
<td align="center" valign="top">88.5</td>
<td align="center" valign="top">94.6</td></tr>
<tr>
<td align="left" valign="top"><italic>k</italic>-NN (<italic>k</italic> = 1)</td>
<td align="center" valign="top">96.9</td>
<td align="center" valign="top">96.9</td>
<td align="center" valign="top">95.3</td>
<td align="center" valign="top">94.9</td>
<td align="center" valign="top">96.4</td></tr>
<tr>
<td align="left" valign="top">DTW-1</td>
<td align="center" valign="top">92.1</td>
<td align="center" valign="top">92.2</td>
<td align="center" valign="top">87.9</td>
<td align="center" valign="top">82.6</td>
<td align="center" valign="top">95.4</td></tr>
<tr>
<td align="left" valign="top">DTW-2</td>
<td align="center" valign="top">96.9</td>
<td align="center" valign="top">96.3</td>
<td align="center" valign="top">95.1</td>
<td align="center" valign="top">93.6</td>
<td align="center" valign="top">95.7</td></tr>
<tr>
<td align="left" valign="top">SVM</td>
<td align="center" valign="top">99.2</td>
<td align="center" valign="top">99.1</td>
<td align="center" valign="top">94.6</td>
<td align="center" valign="top">94.6</td>
<td align="center" valign="top">97.2</td></tr>
<tr>
<td align="left" valign="top">ANN</td>
<td align="center" valign="top">88.6</td>
<td align="center" valign="top">90.2</td>
<td align="center" valign="top">87.7</td>
<td align="center" valign="top">88.8</td>
<td align="center" valign="top">87.8</td></tr></tbody></table></table-wrap>
<table-wrap id="t4-sensors-09-08508" position="float">
<label>Table 4.</label>
<caption>
<p>Correct differentiation rates for different feature reduction methods and <italic>P</italic>-fold cross validation.</p></caption>
<table frame="box" rules="all">
<thead>
<tr>
<th align="left" valign="bottom" rowspan="2">method:</th>
<th colspan="5" align="center" valign="top">correct differentiation rate (%)</th></tr>
<tr>
<th align="center" valign="top">by inspection<break/>(14 features)</th>
<th align="center" valign="top">PCA to 14 features<break/>(6 features)</th>
<th align="center" valign="top">covariance matrix<break/>(14 features)</th>
<th align="center" valign="top">PCA to 101 features<break/>(8 features)</th>
<th align="center" valign="top">SFFS<break/>(6 features)</th></tr></thead>
<tbody>
<tr>
<td align="left" valign="top">BDM</td>
<td align="center" valign="top">98.9</td>
<td align="center" valign="top">98.5</td>
<td align="center" valign="top">98.1</td>
<td align="center" valign="top">99.1</td>
<td align="center" valign="top">98.1</td></tr>
<tr>
<td align="left" valign="top">LSM</td>
<td align="center" valign="top">97.3</td>
<td align="center" valign="top">97.5</td>
<td align="center" valign="top">92.1</td>
<td align="center" valign="top">89.5</td>
<td align="center" valign="top">94.6</td></tr>
<tr>
<td align="left" valign="top"><italic>k</italic>-NN (<italic>k</italic> = 1)</td>
<td align="center" valign="top">97.1</td>
<td align="center" valign="top">98.1</td>
<td align="center" valign="top">94.8</td>
<td align="center" valign="top">95.4</td>
<td align="center" valign="top">97.4</td></tr>
<tr>
<td align="left" valign="top">DTW-1</td>
<td align="center" valign="top">91.8</td>
<td align="center" valign="top">92.8</td>
<td align="center" valign="top">87.7</td>
<td align="center" valign="top">83.8</td>
<td align="center" valign="top">95.7</td></tr>
<tr>
<td align="left" valign="top">DTW-2</td>
<td align="center" valign="top">98.0</td>
<td align="center" valign="top">96.9</td>
<td align="center" valign="top">96.1</td>
<td align="center" valign="top">95.2</td>
<td align="center" valign="top">97.0</td></tr>
<tr>
<td align="left" valign="top">SVM</td>
<td align="center" valign="top">99.7</td>
<td align="center" valign="top">99.4</td>
<td align="center" valign="top">95.3</td>
<td align="center" valign="top">96.7</td>
<td align="center" valign="top">97.9</td></tr>
<tr>
<td align="left" valign="top">ANN</td>
<td align="center" valign="top">86.4</td>
<td align="center" valign="top">88.8</td>
<td align="center" valign="top">85.0</td>
<td align="center" valign="top">83.2</td>
<td align="center" valign="top">84.4</td></tr></tbody></table></table-wrap>
<table-wrap id="t5-sensors-09-08508" position="float">
<label>Table 5.</label>
<caption>
<p>Correct differentiation rates for different feature reduction methods and LOO cross validation.</p></caption>
<table frame="box" rules="all">
<thead>
<tr>
<th align="left" valign="bottom" rowspan="2">method:</th>
<th colspan="5" align="center" valign="middle">correct differentiation rate (%)</th></tr>
<tr>
<th align="center" valign="top">by inspection<break/>(14 features)</th>
<th align="center" valign="top">PCA to 14 features<break/>(6 features)</th>
<th align="center" valign="top">covariance matrix<break/>(14 features)</th>
<th align="center" valign="top">PCA to 101 features<break/>(8 features)</th>
<th align="center" valign="top">SFFS<break/>(6 features)</th></tr></thead>
<tbody>
<tr>
<td align="left" valign="top">BDM</td>
<td align="center" valign="top">99.1</td>
<td align="center" valign="top">99.3</td>
<td align="center" valign="top">98.2</td>
<td align="center" valign="top">99.1</td>
<td align="center" valign="top">98.2</td></tr>
<tr>
<td align="left" valign="top">LSM</td>
<td align="center" valign="top">97.1</td>
<td align="center" valign="top">97.3</td>
<td align="center" valign="top">92.0</td>
<td align="center" valign="top">90.4</td>
<td align="center" valign="top">94.2</td></tr>
<tr>
<td align="left" valign="top"><italic>k</italic>-NN (<italic>k</italic> = 1)</td>
<td align="center" valign="top">97.1</td>
<td align="center" valign="top">98.2</td>
<td align="center" valign="top">94.6</td>
<td align="center" valign="top">95.1</td>
<td align="center" valign="top">97.6</td></tr>
<tr>
<td align="left" valign="top">DTW-1</td>
<td align="center" valign="top">91.7</td>
<td align="center" valign="top">93.8</td>
<td align="center" valign="top">88.0</td>
<td align="center" valign="top">83.7</td>
<td align="center" valign="top">96.0</td></tr>
<tr>
<td align="left" valign="top">DTW-2</td>
<td align="center" valign="top">98.2</td>
<td align="center" valign="top">97.8</td>
<td align="center" valign="top">95.2</td>
<td align="center" valign="top">95.1</td>
<td align="center" valign="top">97.3</td></tr>
<tr>
<td align="left" valign="top">SVM</td>
<td align="center" valign="top">98.9</td>
<td align="center" valign="top">98.4</td>
<td align="center" valign="top">96.4</td>
<td align="center" valign="top">98.4</td>
<td align="center" valign="top">98.2</td></tr>
<tr>
<td align="left" valign="top">ANN</td>
<td align="center" valign="top">85.1</td>
<td align="center" valign="top">88.8</td>
<td align="center" valign="top">84.8</td>
<td align="center" valign="top">83.3</td>
<td align="center" valign="top">80.1</td></tr></tbody></table></table-wrap>
<table-wrap id="t6-sensors-09-08508" position="float">
<label>Table 6.</label>
<caption>
<p>Confusion matrix for BDM (LOO cross validation, 98.2%).</p></caption>
<table frame="box" rules="all">
<thead>
<tr>
<th colspan="2" align="center" valign="top" rowspan="2"/>
<th colspan="8" align="center" valign="middle"><bold>classified</bold></th></tr>
<tr>
<th align="center" valign="middle">M1</th>
<th align="center" valign="middle">M2</th>
<th align="center" valign="middle">M3</th>
<th align="center" valign="middle">M4</th>
<th align="center" valign="middle">M5</th>
<th align="center" valign="middle">M6</th>
<th align="center" valign="middle">M7</th>
<th align="center" valign="middle">M8</th></tr></thead>
<tbody>
<tr>
<td align="center" valign="middle" rowspan="8"><bold>true</bold></td>
<td align="center" valign="top">M1</td>
<td align="center" valign="top">56</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td></tr>
<tr>
<td align="center" valign="top">M2</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">55</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">1</td></tr>
<tr>
<td align="center" valign="top">M3</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">56</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td></tr>
<tr>
<td align="center" valign="top">M4</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">54</td>
<td align="center" valign="top">2</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td></tr>
<tr>
<td align="center" valign="top">M5</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">3</td>
<td align="center" valign="top">53</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td></tr>
<tr>
<td align="center" valign="top">M6</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">56</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td></tr>
<tr>
<td align="center" valign="top">M7</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">56</td>
<td align="center" valign="top">0</td></tr>
<tr>
<td align="center" valign="top">M8</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">2</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">54</td></tr></tbody></table></table-wrap>
<table-wrap id="t7-sensors-09-08508" position="float">
<label>Table 7.</label>
<caption>
<p>Confusion matrix for RBA (LOO cross validation, 95.1%).</p></caption>
<table frame="box" rules="all">
<thead>
<tr>
<th colspan="2" align="center" valign="top" rowspan="2"/>
<th colspan="8" align="center" valign="top"><bold>classified</bold></th></tr>
<tr>
<th align="center" valign="top">M1</th>
<th align="center" valign="top">M2</th>
<th align="center" valign="top">M3</th>
<th align="center" valign="top">M4</th>
<th align="center" valign="top">M5</th>
<th align="center" valign="top">M6</th>
<th align="center" valign="top">M7</th>
<th align="center" valign="top">M8</th></tr></thead>
<tbody>
<tr>
<td align="center" valign="middle" rowspan="8"><bold>true</bold></td>
<td align="center" valign="top">M1</td>
<td align="center" valign="top">56</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td></tr>
<tr>
<td align="center" valign="top">M2</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">56</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td></tr>
<tr>
<td align="center" valign="top">M3</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">49</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">7</td>
<td align="center" valign="top">0</td></tr>
<tr>
<td align="center" valign="top">M4</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">46</td>
<td align="center" valign="top">10</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td></tr>
<tr>
<td align="center" valign="top">M5</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">4</td>
<td align="center" valign="top">52</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td></tr>
<tr>
<td align="center" valign="top">M6</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">56</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td></tr>
<tr>
<td align="center" valign="top">M7</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">1</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">55</td>
<td align="center" valign="top">0</td></tr>
<tr>
<td align="center" valign="top">M8</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">56</td></tr></tbody></table></table-wrap>
<table-wrap id="t8-sensors-09-08508" position="float">
<label>Table 8.</label>
<caption>
<p>Confusion matrix for LSM (LOO cross validation, 94.2%).</p></caption>
<table frame="box" rules="all">
<thead>
<tr>
<th colspan="2" align="center" valign="top" rowspan="2"/>
<th colspan="8" align="center" valign="middle"><bold>classified</bold></th></tr>
<tr>
<th align="center" valign="top">M1</th>
<th align="center" valign="top">M2</th>
<th align="center" valign="top">M3</th>
<th align="center" valign="top">M4</th>
<th align="center" valign="top">M5</th>
<th align="center" valign="top">M6</th>
<th align="center" valign="top">M7</th>
<th align="center" valign="top">M8</th></tr></thead>
<tbody>
<tr>
<td align="center" valign="middle" rowspan="8"><bold>true</bold></td>
<td align="center" valign="top">M1</td>
<td align="center" valign="top">56</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td></tr>
<tr>
<td align="center" valign="top">M2</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">46</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">10</td></tr>
<tr>
<td align="center" valign="top">M3</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">54</td>
<td align="center" valign="top">2</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td></tr>
<tr>
<td align="center" valign="top">M4</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">50</td>
<td align="center" valign="top">6</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td></tr>
<tr>
<td align="center" valign="top">M5</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">3</td>
<td align="center" valign="top">53</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td></tr>
<tr>
<td align="center" valign="top">M6</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">56</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td></tr>
<tr>
<td align="center" valign="top">M7</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">56</td>
<td align="center" valign="top">0</td></tr>
<tr>
<td align="center" valign="top">M8</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">5</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">51</td></tr></tbody></table></table-wrap>
<table-wrap id="t9-sensors-09-08508" position="float">
<label>Table 9.</label>
<caption>
<p>Confusion matrix for the <italic>k</italic>-NN algorithm for <italic>k</italic> = 1 (LOO cross validation, 97.6%).</p></caption>
<table frame="box" rules="all">
<thead>
<tr>
<th colspan="2" align="center" valign="top" rowspan="2"/>
<th colspan="8" align="center" valign="middle"><bold>classified</bold></th></tr>
<tr>
<th align="center" valign="top">M1</th>
<th align="center" valign="top">M2</th>
<th align="center" valign="top">M3</th>
<th align="center" valign="top">M4</th>
<th align="center" valign="top">M5</th>
<th align="center" valign="top">M6</th>
<th align="center" valign="top">M7</th>
<th align="center" valign="top">M8</th></tr></thead>
<tbody>
<tr>
<td align="center" valign="middle" rowspan="8"><bold>true</bold></td>
<td align="center" valign="top">M1</td>
<td align="center" valign="top">56</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td></tr>
<tr>
<td align="center" valign="top">M2</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">52</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">4</td></tr>
<tr>
<td align="center" valign="top">M3</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">56</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td></tr>
<tr>
<td align="center" valign="top">M4</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">52</td>
<td align="center" valign="top">4</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td></tr>
<tr>
<td align="center" valign="top">M5</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">2</td>
<td align="center" valign="top">54</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td></tr>
<tr>
<td align="center" valign="top">M6</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">56</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td></tr>
<tr>
<td align="center" valign="top">M7</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">56</td>
<td align="center" valign="top">0</td></tr>
<tr>
<td align="center" valign="top">M8</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">1</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">55</td></tr></tbody></table></table-wrap>
<table-wrap id="t10-sensors-09-08508" position="float">
<label>Table 10.</label>
<caption>
<p>Confusion matrix for DTW-1 (LOO cross validation, 96.0%).</p></caption>
<table frame="box" rules="all">
<thead>
<tr>
<th colspan="2" align="center" valign="top" rowspan="2"/>
<th colspan="8" align="center" valign="middle"><bold>classified</bold></th></tr>
<tr>
<th align="center" valign="top">M1</th>
<th align="center" valign="top">M2</th>
<th align="center" valign="top">M3</th>
<th align="center" valign="top">M4</th>
<th align="center" valign="top">M5</th>
<th align="center" valign="top">M6</th>
<th align="center" valign="top">M7</th>
<th align="center" valign="top">M8</th></tr></thead>
<tbody>
<tr>
<td align="center" valign="middle" rowspan="8"><bold>true</bold></td>
<td align="center" valign="top">M1</td>
<td align="center" valign="top">56</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td></tr>
<tr>
<td align="center" valign="top">M2</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">49</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">2</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">5</td></tr>
<tr>
<td align="center" valign="top">M3</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">56</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td></tr>
<tr>
<td align="center" valign="top">M4</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">52</td>
<td align="center" valign="top">4</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td></tr>
<tr>
<td align="center" valign="top">M5</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">1</td>
<td align="center" valign="top">3</td>
<td align="center" valign="top">52</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td></tr>
<tr>
<td align="center" valign="top">M6</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">56</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td></tr>
<tr>
<td align="center" valign="top">M7</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">2</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">54</td>
<td align="center" valign="top">0</td></tr>
<tr>
<td align="center" valign="top">M8</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">1</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">55</td></tr></tbody></table></table-wrap>
<table-wrap id="t11-sensors-09-08508" position="float">
<label>Table 11.</label>
<caption>
<p>Confusion matrix for DTW-2 (LOO cross validation, 97.3%).</p></caption>
<table frame="box" rules="all">
<thead>
<tr>
<th colspan="2" align="center" valign="top" rowspan="2"/>
<th colspan="8" align="center" valign="middle"><bold>classified</bold></th></tr>
<tr>
<th align="center" valign="top">M1</th>
<th align="center" valign="top">M2</th>
<th align="center" valign="top">M3</th>
<th align="center" valign="top">M4</th>
<th align="center" valign="top">M5</th>
<th align="center" valign="top">M6</th>
<th align="center" valign="top">M7</th>
<th align="center" valign="top">M8</th></tr></thead>
<tbody>
<tr>
<td align="center" valign="middle" rowspan="8"><bold>true</bold></td>
<td align="center" valign="top">M1</td>
<td align="center" valign="top">56</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td></tr>
<tr>
<td align="center" valign="top">M2</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">54</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">2</td></tr>
<tr>
<td align="center" valign="top">M3</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">56</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td></tr>
<tr>
<td align="center" valign="top">M4</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">53</td>
<td align="center" valign="top">3</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td></tr>
<tr>
<td align="center" valign="top">M5</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">5</td>
<td align="center" valign="top">51</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td></tr>
<tr>
<td align="center" valign="top">M6</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">56</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td></tr>
<tr>
<td align="center" valign="top">M7</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">1</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">55</td>
<td align="center" valign="top">0</td></tr>
<tr>
<td align="center" valign="top">M8</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">1</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">55</td></tr></tbody></table></table-wrap>
<table-wrap id="t12-sensors-09-08508" position="float">
<label>Table 12.</label>
<caption>
<p>(a) Number of correctly and incorrectly classified feature vectors out of 56 for SVMs (LOO cross validation, 98.2%); (b) same for ANN (LOO cross validation, 80.1%).</p></caption>
<table frame="box" rules="all">
<thead>
<tr>
<th colspan="2" align="center" valign="top"/>
<th colspan="2" align="center" valign="top"><bold>(a)</bold></th></tr>
<tr>
<th colspan="2" align="center" valign="top" rowspan="2"/>
<th colspan="2" align="center" valign="top"><bold>classified</bold></th></tr>
<tr>
<th align="center" valign="middle">correct</th>
<th align="center" valign="middle">incorrect</th></tr></thead>
<tbody>
<tr>
<td align="center" valign="middle" rowspan="8"><bold>true</bold></td>
<td align="center" valign="top">M1</td>
<td align="center" valign="top">56</td>
<td align="center" valign="top">0</td></tr>
<tr>
<td align="center" valign="top">M2</td>
<td align="center" valign="top">54</td>
<td align="center" valign="top">2</td></tr>
<tr>
<td align="center" valign="top">M3</td>
<td align="center" valign="top">56</td>
<td align="center" valign="top">0</td></tr>
<tr>
<td align="center" valign="top">M4</td>
<td align="center" valign="top">53</td>
<td align="center" valign="top">3</td></tr>
<tr>
<td align="center" valign="top">M5</td>
<td align="center" valign="top">53</td>
<td align="center" valign="top">3</td></tr>
<tr>
<td align="center" valign="top">M6</td>
<td align="center" valign="top">56</td>
<td align="center" valign="top">0</td></tr>
<tr>
<td align="center" valign="top">M7</td>
<td align="center" valign="top">56</td>
<td align="center" valign="top">0</td></tr>
<tr>
<td align="center" valign="top">M8</td>
<td align="center" valign="top">56</td>
<td align="center" valign="top">0</td></tr></tbody></table>
<table frame="box" rules="all">
<thead>
<tr>
<th colspan="2" align="center" valign="top"/>
<th colspan="2" align="center" valign="top"><bold>(b)</bold></th></tr>
<tr>
<th colspan="2" align="center" valign="top" rowspan="2"/>
<th colspan="2" align="center" valign="top"><bold>classified</bold></th></tr>
<tr>
<th align="center" valign="top">correct</th>
<th align="center" valign="top">incorrect</th></tr></thead>
<tbody>
<tr>
<td align="center" valign="middle" rowspan="8"><bold>true</bold></td>
<td align="center" valign="top">M1</td>
<td align="center" valign="top">56</td>
<td align="center" valign="top">0</td></tr>
<tr>
<td align="center" valign="top">M2</td>
<td align="center" valign="top">20</td>
<td align="center" valign="top">36</td></tr>
<tr>
<td align="center" valign="top">M3</td>
<td align="center" valign="top">52</td>
<td align="center" valign="top">4</td></tr>
<tr>
<td align="center" valign="top">M4</td>
<td align="center" valign="top">21</td>
<td align="center" valign="top">35</td></tr>
<tr>
<td align="center" valign="top">M5</td>
<td align="center" valign="top">43</td>
<td align="center" valign="top">13</td></tr>
<tr>
<td align="center" valign="top">M6</td>
<td align="center" valign="top">56</td>
<td align="center" valign="top">0</td></tr>
<tr>
<td align="center" valign="top">M7</td>
<td align="center" valign="top">56</td>
<td align="center" valign="top">0</td></tr>
<tr>
<td align="center" valign="top">M8</td>
<td align="center" valign="top">55</td>
<td align="center" valign="top">1</td></tr></tbody></table></table-wrap>
<table-wrap id="t13-sensors-09-08508" position="float">
<label>Table 13.</label>
<caption>
<p>Pre-processing and training times and the storage requirements of the classification methods.</p></caption>
<table frame="box" rules="all">
<thead>
<tr>
<th align="left" valign="bottom" rowspan="2">method:</th>
<th colspan="3" align="center" valign="top">pre-processing/training time<break/>(msec)</th>
<th align="center" valign="middle" rowspan="2">storage requirements</th></tr>
<tr>
<th align="right" valign="top">RRSS</th>
<th align="right" valign="top"><italic>P</italic>-fold</th>
<th align="right" valign="top">LOO</th></tr></thead>
<tbody>
<tr>
<td align="left" valign="top">BDM</td>
<td align="right" valign="top">2.144</td>
<td align="right" valign="top">1.441</td>
<td align="right" valign="top">1.706</td>
<td align="center" valign="top">mean, covariance, CCPDF</td></tr>
<tr>
<td align="left" valign="top">RBA</td>
<td align="right" valign="top">–</td>
<td align="right" valign="top">–</td>
<td align="right" valign="top">–</td>
<td align="center" valign="top">rules</td></tr>
<tr>
<td align="left" valign="top">LSM</td>
<td align="right" valign="top">0.098</td>
<td align="right" valign="top">0.554</td>
<td align="right" valign="top">105.141</td>
<td align="center" valign="top">average of training vectors for each class</td></tr>
<tr>
<td align="left" valign="top"><italic>k</italic>-NN (<italic>k</italic> = 1)</td>
<td align="right" valign="top">–</td>
<td align="right" valign="top">–</td>
<td align="right" valign="top">–</td>
<td align="center" valign="top">all training vectors</td></tr>
<tr>
<td align="left" valign="top">DTW-1</td>
<td align="right" valign="top">0.098</td>
<td align="right" valign="top">0.554</td>
<td align="right" valign="top">105.141</td>
<td align="center" valign="top">average of training vectors for each class</td></tr>
<tr>
<td align="left" valign="top">DTW-2</td>
<td align="right" valign="top">–</td>
<td align="right" valign="top">–</td>
<td align="right" valign="top">–</td>
<td align="center" valign="top">all training vectors</td></tr>
<tr>
<td align="left" valign="top">SVM</td>
<td align="right" valign="top">72.933</td>
<td align="right" valign="top">1880.233</td>
<td align="right" valign="top">5843.133</td>
<td align="center" valign="top">SVM models</td></tr>
<tr>
<td align="left" valign="top">ANN</td>
<td align="right" valign="top">151940</td>
<td align="right" valign="top">145680</td>
<td align="right" valign="top">189100</td>
<td align="center" valign="top">network structure and connection weights</td></tr></tbody></table></table-wrap>
<table-wrap id="t14-sensors-09-08508" position="float">
<label>Table 14.</label>
<caption>
<p>The processing times required for classifying a single feature vector.</p></caption>
<table frame="box" rules="all">
<thead>
<tr>
<th align="left" valign="bottom" rowspan="2">method:</th>
<th colspan="3" align="right" valign="middle">classification time (msec)</th></tr>
<tr>
<th align="right" valign="top">RRSS</th>
<th align="right" valign="top"><italic>P</italic>-fold</th>
<th align="right" valign="top">LOO</th></tr></thead>
<tbody>
<tr>
<td align="left" valign="top">BDM</td>
<td align="right" valign="top">2.588</td>
<td align="right" valign="top">1.220</td>
<td align="right" valign="top">8.188</td></tr>
<tr>
<td align="left" valign="top">RBA</td>
<td align="right" valign="top">0.003</td>
<td align="right" valign="top">0.003</td>
<td align="right" valign="top">0.003</td></tr>
<tr>
<td align="left" valign="top">LSM</td>
<td align="right" valign="top">0.070</td>
<td align="right" valign="top">0.074</td>
<td align="right" valign="top">0.063</td></tr>
<tr>
<td align="left" valign="top"><italic>k</italic>-NN (<italic>k</italic> = 1)</td>
<td align="right" valign="top">0.095</td>
<td align="right" valign="top">0.452</td>
<td align="right" valign="top">24.033</td></tr>
<tr>
<td align="left" valign="top">DTW-1</td>
<td align="right" valign="top">1.775</td>
<td align="right" valign="top">1.937</td>
<td align="right" valign="top">2.000</td></tr>
<tr>
<td align="left" valign="top">DTW-2</td>
<td align="right" valign="top">49.640</td>
<td align="right" valign="top">94.014</td>
<td align="right" valign="top">107.400</td></tr>
<tr>
<td align="left" valign="top">SVM</td>
<td align="right" valign="top">0.009</td>
<td align="right" valign="top">0.016</td>
<td align="right" valign="top">0.132</td></tr>
<tr>
<td align="left" valign="top">ANN</td>
<td align="right" valign="top">0.882</td>
<td align="right" valign="top">2.547</td>
<td align="right" valign="top">1.391</td></tr></tbody></table></table-wrap></sec></back></article>
