electronics Article Singular Value Decomposition in Embedded Systems Based on ARM Cortex-M Architecture Michele Alessandrini †, Giorgio Biagetti † , Paolo Crippa *,† , Laura Falaschetti † , Lorenzo Manoni † and Claudio Turchetti † Department of Information Engineering, Università Politecnica delle Marche, Via Brecce Bianche 12, I-60131 Ancona, Italy;
[email protected] (M.A.);
[email protected] (G.B.);
[email protected] (L.F.);
[email protected] (L.M.);
[email protected] (C.T.) * Correspondence:
[email protected]; Tel.: +39-071-220-4541 † These authors contributed equally to this work. Abstract: Singular value decomposition (SVD) is a central mathematical tool for several emerging applications in embedded systems, such as multiple-input multiple-output (MIMO) systems, data an- alytics, sparse representation of signals. Since SVD algorithms reduce to solve an eigenvalue problem, that is computationally expensive, both specific hardware solutions and parallel implementations have been proposed to overcome this bottleneck. However, as those solutions require additional hardware resources that are not in general available in embedded systems, optimized algorithms are demanded in this context. The aim of this paper is to present an efficient implementation of the SVD algorithm on ARM Cortex-M. To this end, we proceed to (i) present a comprehensive treatment of the most common algorithms for SVD, providing a fairly complete and deep overview of these algorithms, with a common notation, (ii) implement them on an ARM Cortex-M4F microcontroller, in order to develop a library suitable for embedded systems without an operating system, (iii) find, through a comparative study of the proposed SVD algorithms, the best implementation suitable for a low-resource bare-metal embedded system, (iv) show a practical application to Kalman filtering of an inertial measurement unit (IMU), as an example of how SVD can improve the accuracy of existing algorithms and of its usefulness on a such low-resources system.