Demo program for Array class and Matrix class.

Dependencies:   Array_Matrix mbed

Committer:
MikamiUitOpen
Date:
Sun May 22 06:17:14 2016 +0000
Revision:
0:90a30b7b0f2f
Child:
1:3df59f65bdcc
1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikamiUitOpen 0:90a30b7b0f2f 1 //------------------------------------------------------------
MikamiUitOpen 0:90a30b7b0f2f 2 // Demo program for Array class and Matrix class
MikamiUitOpen 0:90a30b7b0f2f 3 //
MikamiUitOpen 0:90a30b7b0f2f 4 // 2016/05/22, Copyright (c) 2016 MIKAMI, Naoki
MikamiUitOpen 0:90a30b7b0f2f 5 //------------------------------------------------------------
MikamiUitOpen 0:90a30b7b0f2f 6
MikamiUitOpen 0:90a30b7b0f2f 7 #define DEBUG_ARRAY_CHECK // Range check of index available
MikamiUitOpen 0:90a30b7b0f2f 8
MikamiUitOpen 0:90a30b7b0f2f 9 #include "Matrix.hpp"
MikamiUitOpen 0:90a30b7b0f2f 10 #include <string>
MikamiUitOpen 0:90a30b7b0f2f 11
MikamiUitOpen 0:90a30b7b0f2f 12 using namespace Mikami;
MikamiUitOpen 0:90a30b7b0f2f 13 void PrintMatrix(const char str[], const Matrix<int> &x);
MikamiUitOpen 0:90a30b7b0f2f 14
MikamiUitOpen 0:90a30b7b0f2f 15 void Square(Array<float> & x);
MikamiUitOpen 0:90a30b7b0f2f 16 void Sqrt(float x[], int N);
MikamiUitOpen 0:90a30b7b0f2f 17
MikamiUitOpen 0:90a30b7b0f2f 18 int main()
MikamiUitOpen 0:90a30b7b0f2f 19 {
MikamiUitOpen 0:90a30b7b0f2f 20 printf("\r\n14:58\r\n");
MikamiUitOpen 0:90a30b7b0f2f 21
MikamiUitOpen 0:90a30b7b0f2f 22 // Test of Array class
MikamiUitOpen 0:90a30b7b0f2f 23 Array<int> sn(10);
MikamiUitOpen 0:90a30b7b0f2f 24 sn[9] = 0;
MikamiUitOpen 0:90a30b7b0f2f 25
MikamiUitOpen 0:90a30b7b0f2f 26 //// Array<uint8_t> a1(100000); // Size error
MikamiUitOpen 0:90a30b7b0f2f 27 Array<uint8_t> a1(10000);
MikamiUitOpen 0:90a30b7b0f2f 28 printf("OK\r\n");
MikamiUitOpen 0:90a30b7b0f2f 29
MikamiUitOpen 0:90a30b7b0f2f 30 const int N1 = 10;
MikamiUitOpen 0:90a30b7b0f2f 31 Array<float> x1(N1), x2, x3;
MikamiUitOpen 0:90a30b7b0f2f 32 for (int n=0; n<N1; n++) x1[n] = n;
MikamiUitOpen 0:90a30b7b0f2f 33 x3 = x2 = x1;
MikamiUitOpen 0:90a30b7b0f2f 34
MikamiUitOpen 0:90a30b7b0f2f 35 Square(x2);
MikamiUitOpen 0:90a30b7b0f2f 36 Sqrt(x3, N1);
MikamiUitOpen 0:90a30b7b0f2f 37 for (int n=0; n<N1; n++)
MikamiUitOpen 0:90a30b7b0f2f 38 printf("%8.4f, %8.4f, %8.4f\r\n", x1[n], x2[n], x3[n]);
MikamiUitOpen 0:90a30b7b0f2f 39 printf("\r\n");
MikamiUitOpen 0:90a30b7b0f2f 40
MikamiUitOpen 0:90a30b7b0f2f 41 Array<string> str(5, "abc");
MikamiUitOpen 0:90a30b7b0f2f 42 for (int n=0; n<str.Length(); n++) printf("%s\r\n", str[n].c_str());
MikamiUitOpen 0:90a30b7b0f2f 43
MikamiUitOpen 0:90a30b7b0f2f 44 // Test of Matrix class
MikamiUitOpen 0:90a30b7b0f2f 45 Matrix<int> mat1(3, 2), mat2;
MikamiUitOpen 0:90a30b7b0f2f 46 for (int n2=0; n2<mat1.Cols(); n2++)
MikamiUitOpen 0:90a30b7b0f2f 47 for (int n1=0; n1<mat1.Rows(); n1++)
MikamiUitOpen 0:90a30b7b0f2f 48 mat1[n1][n2] = n2*mat1.Rows() + n1;
MikamiUitOpen 0:90a30b7b0f2f 49 mat2 = mat1;
MikamiUitOpen 0:90a30b7b0f2f 50
MikamiUitOpen 0:90a30b7b0f2f 51 PrintMatrix("mat2:", mat2);
MikamiUitOpen 0:90a30b7b0f2f 52
MikamiUitOpen 0:90a30b7b0f2f 53 Matrix<int> mat3(5, 2, 10);
MikamiUitOpen 0:90a30b7b0f2f 54 PrintMatrix("mat3: Initialized valeus", mat3);
MikamiUitOpen 0:90a30b7b0f2f 55
MikamiUitOpen 0:90a30b7b0f2f 56 mat3.Fill(5);
MikamiUitOpen 0:90a30b7b0f2f 57 PrintMatrix("mat3: Updated valeus", mat3);
MikamiUitOpen 0:90a30b7b0f2f 58
MikamiUitOpen 0:90a30b7b0f2f 59 while (true) {}
MikamiUitOpen 0:90a30b7b0f2f 60 }
MikamiUitOpen 0:90a30b7b0f2f 61
MikamiUitOpen 0:90a30b7b0f2f 62 void Square(Array<float> & x)
MikamiUitOpen 0:90a30b7b0f2f 63 { for (int n=0; n<x.Length(); n++) x[n] = x[n]*x[n]; }
MikamiUitOpen 0:90a30b7b0f2f 64
MikamiUitOpen 0:90a30b7b0f2f 65 void Sqrt(float x[], int N)
MikamiUitOpen 0:90a30b7b0f2f 66 { for (int n=0; n<N; n++) x[n] = sqrtf(x[n]); }
MikamiUitOpen 0:90a30b7b0f2f 67
MikamiUitOpen 0:90a30b7b0f2f 68 void PrintMatrix(const char str[], const Matrix<int> &x)
MikamiUitOpen 0:90a30b7b0f2f 69 {
MikamiUitOpen 0:90a30b7b0f2f 70 printf("%s\r\n", str);
MikamiUitOpen 0:90a30b7b0f2f 71 for (int n2=0; n2<x.Cols(); n2++)
MikamiUitOpen 0:90a30b7b0f2f 72 {
MikamiUitOpen 0:90a30b7b0f2f 73 for (int n1=0; n1<x.Rows(); n1++)
MikamiUitOpen 0:90a30b7b0f2f 74 printf("%3d", x[n1][n2]);
MikamiUitOpen 0:90a30b7b0f2f 75 printf("\r\n");
MikamiUitOpen 0:90a30b7b0f2f 76 }
MikamiUitOpen 0:90a30b7b0f2f 77 }