您好,欢迎访问三七文档
系统辨识实验报告——C语言版目录实验一..............................................................................................................................................1实验分析...................................................................................................................................1实验代码...................................................................................................................................1运行结果...................................................................................................................................5实验二..............................................................................................................................................7实验分析...................................................................................................................................7实验代码...................................................................................................................................8运行结果.................................................................................................................................11实验三............................................................................................................................................12实验分析.................................................................................................................................12实验代码.................................................................................................................................12运行结果.................................................................................................................................17实验四............................................................................................................................................18实验分析.................................................................................................................................18实验代码.................................................................................................................................18运行结果.................................................................................................................................21实验总结.........................................................................................................................................23附录................................................................................................................................................24附录1:DU(M序列)..............................................................................................................24附录2:DV.............................................................................................................................24附录3:DY.............................................................................................................................271实验一1.请编出矩阵A与B相乘得到矩阵R的运算计算机程序。要求:(1)A和B的维数及数值可通过键盘及数据文件输入;(2)计算结果R可由屏幕及文件输出。2.将题1改写为子程序。3.查找有关的资料,读懂及调通矩阵求逆子程序,并改写为子程序。实验分析如下:1.两个矩阵相乘,无非就是三个维数:m,n,p。因为第一个矩阵的纵向维度必须要跟第二个矩阵的横向维度相同才可以相乘。通过键盘输入维数的话用scanf语句即可,通过文件输入维数的话可以先存在一个文件里三个数值,到时候直接用只读的方式读出来。2.改写成子程序也很简单,我一开始就是写的子程序,注意不要漏掉函数声明。3.矩阵求逆的程序我查阅了相关书籍,对照原理大体读懂了程序的编写,因为网上和书本上的程序还存在一定的问题,我反复调试后找到了问题并解决了,最终可以实现矩阵的求逆。实验代码如下:/***********************矩阵相乘*************************/#includestdio.hvoidMatrixMultiply(intm,intn,intp,longMatrix1[MAX][MAX],longMatrix2[MAX][MAX],longMatrixResult[MAX][MAX]);voidmain(){longMatrix1[MAX][MAX],Matrix2[MAX][MAX];longMatrixResult[MAX][MAX],Temp;inti,j,m,n,p;/*输入两个矩阵的的行列数m,n,p*/printf(\nPleaseinputmofMatrix1:\n);scanf(%d,&m);printf(PleaseinputnofMatrix1:\n);scanf(%d,&n);printf(PleaseinputpofMatrix2:\n);scanf(%d,&p);/*输入第一个矩阵的每个元素*/printf(\nPleaseinputelementsofMatrix1(%d*%d):\n,m,n);for(i=0;im;i++)for(j=0;jn;j++)2{scanf(%ld,&Temp);Matrix1[i][j]=Temp;}/*输入第二个矩阵的每个元素*/printf(\nPleaseinputelementsofMatrix2(%d*%d):\n,n,p);for(i=0;in;i++)for(j=0;jp;j++){scanf(%ld,&Temp);Matrix2[i][j]=Temp;}/*调用函数进行乘法运算,结果放在MatrixResult中*/MatrixMultiply(m,n,p,Matrix1,Matrix2,MatrixResult);/*打印输出结果矩阵*/printf(\nResultmatrix:\n);for(i=0;im;i++){for(j=0;jp;j++)printf(%ld,MatrixResult[i][j]);printf(\n);}}voidMatrixMultiply(intm,intn,intp,longMatrix1[MAX][MAX],longMatrix2[MAX][MAX],longMatrixResult[MAX][MAX])/*矩阵维数:mn*np=mp*/{inti,j,k;longSum;/*嵌套循环计算结果矩阵(m*p)的每个元素*/for(i=0;im;i++)for(j=0;jp;j++){/*按照矩阵乘法的规则计算结果矩阵的i*j元素*/Sum=0;for(k=0;kn;k++)Sum+=Matrix1[i][k]*Matrix2[k][j];MatrixResult[i][j]=Sum;}}/***********************矩阵求逆*************************/#includestdlib.h3#includemath.h#includestdio.h/*输入:待求逆的数组首地址,矩阵的维数输出:若为1,表示求逆成功,结果存在原矩阵中否则,表示求逆失败,输出err**notinv*/intinv(doublea[],intn){int*is,*js,i,j,k,l,u,v;doubled,p;is=(int*)malloc(n*sizeof(int));//记忆行交换信息空间js=(int*)malloc(n*sizeof(int));//记忆列交换信息空间for(k=0;k=n-1;k++)//全选主元{d=0.0;for(i=k;i=n-1;i++)for(j=k;j=n-1;j++){l=i*n+j;p=fabs(a[l]);if(pd){d=p;is[k]=i;js[k]=j;}}if(d+1.0==1.0){free(is);free(js);printf(err**notinv\n);return(0);}if(is[k]!=k)//行
本文标题:系统辨识实验报告
链接地址:https://www.777doc.com/doc-6047933 .html