系统辨识实验报告(共29页)

上传人:汽*** 文档编号:508892599 上传时间:2023-06-15 格式:DOC 页数:29 大小:213.50KB
返回 下载 相关 举报
系统辨识实验报告(共29页)_第1页
第1页 / 共29页
系统辨识实验报告(共29页)_第2页
第2页 / 共29页
系统辨识实验报告(共29页)_第3页
第3页 / 共29页
系统辨识实验报告(共29页)_第4页
第4页 / 共29页
系统辨识实验报告(共29页)_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《系统辨识实验报告(共29页)》由会员分享,可在线阅读,更多相关《系统辨识实验报告(共29页)(29页珍藏版)》请在金锄头文库上搜索。

1、精选优质文档-倾情为你奉上实验一 矩阵相乘与求逆一、 实验要求1) 请编出矩阵A和B相乘得到矩阵R的运算计算机程序,要求A和B的维数及数值可以通过键盘及数据文件输入,计算结果R可由屏幕及文件输出。2) 将题一的程序改为子程序。3) 查找有关的资料,读懂及调通矩阵求逆子程序,并改写为子程序。二、 实验过程1) 键盘输入矩阵A和B,屏幕上显示计算结果矩阵R。#include#include int main() int i,j,k,m,n,p,q; printf(请输入A矩阵的行数:); scanf(%d,&m); printf(请输入A矩阵的列数:); scanf(%d,&n); printf(

2、请输入B矩阵的行数:); scanf(%d,&p); printf(请输入B矩阵的列数:); scanf(%d,&q); if(n!=p) printf(请检查A矩阵的列数与B矩阵的行数是否一致!); else double *matrixA,*matrixB,*matrixC; matrixA=(double *)malloc(sizeof(double *)*m); matrixA0=(double *)malloc(sizeof(double)*m*n); matrixB=(double *)malloc(sizeof(double *)*p); matrixB0=(double *)m

3、alloc(sizeof(double)*p*q); matrixC=(double *)malloc(sizeof(double *)*m); matrixC0=(double *)malloc(sizeof(double)*m*q); for(i=1;im;i+) matrixAi=matrixAi-1+n; for(i=1;ip;i+) matrixBi=matrixBi-1+q; for(i=1;im;i+) matrixCi=matrixCi-1+q; printf(请输入A矩阵的数:n); for(i=0;im;i+) for(j=0;jn;j+) scanf(%lf,&matri

4、xAij); printf(n输入的A矩阵是:n); for(i=0;im;i+) for(j=0;jn;j+) printf(%7.3lft,matrixAij); printf(n); printf(请输入B矩阵的数:n); for(i=0;ip;i+) for(j=0;jq;j+) scanf(%lf,&matrixBij); printf(n输入的B矩阵是:n); for(i=0;ip;i+) for(j=0;jq;j+) printf(%7.3lft,matrixBij); printf(n); for(i=0;im;i+) for(j=0;jq;j+) matrixCij=0; f

5、or(i=0;im;i+) for(j=0;jq;j+) for(k=0;kn;k+) matrixCij=matrixCij+matrixAik*matrixBkj; printf(n矩阵A*B的结果是:n); for(i=0;im;i+) for(j=0;jq;j+) printf(%7.3lft,matrixCij); printf(n); free (matrixA); free (matrixB); free (matrixC); getchar(); getchar();运行的结果如下:2) 实现文本的矩阵输入与计算结果的输出,并将相乘改为子程序。#includestdio.hin

6、t main() void matrix_mutipl(double *matrixA,double *matrixB,double *matrixC,int m,int n,int q); char ch;int m=0,n=0,p=0,q=0,i=0,j=0,k=0;char infileA80,infileB80,outfile80;FILE *fpin1,*fpin2,*fpin3;double *matrixA,*matrixB,*matrixC;printf(Enter the infileA name:n); scanf(%s,infileA); if(fpin1=fopen(i

7、nfileA,r)=NULL) printf(Cant open file %sn,infileA); exit(0); do ch=fgetc(fpin1); if(ch=t) n+; if(ch=n) m+; while(!feof(fpin1); n=(n+m)/m; printf(输入的矩阵A行与列数分别为:%d,%dn,m,n); fclose(fpin1); fflush(stdin); matrixA=(double *)malloc(sizeof(double *)*m); matrixA0=(double *)malloc(sizeof(double)*m*n); for(i

8、=1;im;i+) matrixAi=matrixAi-1+n; for(i=0;im;i+) for(j=0;jn;j+) matrixAij=0; if(fpin1=fopen(infileA,r)=NULL) printf(Cant open file %sn,infileA); exit(0); do ch=fgetc(fpin1); while(!feof(fpin1)&(ch9); if (feof(fpin1) exit(0); ungetc(ch,fpin1); do i=k/n; j=k%n; fscanf(fpin1,%lf,&matrixAij); k+; while(!

9、feof(fpin1)&km*n); fclose(fpin1); printf(输入的A矩阵为:n); for(i=0;im;i+) for(j=0;jn;j+) printf(%lf,matrixAij); printf(t); printf(n); fflush(stdin); printf(Enter the infileB name:n); scanf(%s,infileB); if(fpin2=fopen(infileB,r)=NULL) printf(Cant open file %sn,infileB); exit(0); do ch=fgetc(fpin2); if(ch=t

10、) q+; if(ch=n) p+; while(!feof(fpin2); q=(p+q)/p; printf(输入的矩阵B行与列数分别为:%d,%dn,p,q); fclose(fpin2); fflush(stdin); matrixB=(double *)malloc(sizeof(double *)*p); matrixB0=(double *)malloc(sizeof(double)*p*q); for(i=1;ip;i+) matrixBi=matrixBi-1+q; for(i=0;ip;i+) for(j=0;jq;j+) matrixBij=0; if(fpin2=fopen(infileB,r)=NULL) printf(Cant open file %sn,infileB); exit(0); do ch=fgetc(fp

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号