实验二 矩阵和数组的操作
- 格式:pdf
- 大小:550.52 KB
- 文档页数:7
数据结构实验实验内容和目的:掌握几种基本的数据结构:集合、线性结构、树形结构等在求解实际问题中的应用,以及培养书写规范文档的技巧。
学习基本的查找和排序技术。
让我们在实际上机中具有编制相当规模的程序的能力。
养成一种良好的程序设计风格。
实验教材:数据结构题集(C语言版)清华大学出版社2007年实验项目:实验一、栈和循环队列㈠、实验内容:①栈掌握栈的特点(先进后出FILO)及基本操作,如入栈、出栈等,栈的顺序存储结构和链式存储结构,以便在实际问题背景下灵活应用。
本程序采用的是链栈结构,具有初始化一个栈、PUSH、POP、显示所有栈里的元素四个功能。
②循环队列掌握队列的特点(先进先出FIFO)及基本操作,如入队、出队等,学会循环队列的实现,以便在实际问题背景下灵活运用。
本程序具有初始化一个队列、入队、出队、显示队列的所有元素、队列长度五个功能。
㈡、实验代码①栈程序代码:#include <stdio.h>#include <malloc.h>#define Stack_Size 6#define ERROR 0#define OK 1typedef int SElemType;typedef struct SNode{SElemType data;struct SNode *next;}SNode,*LinkStack;int CreatTwo(LinkStack &head,int n){int i;SNode *p;head=(LinkStack)malloc(sizeof(SNode));head->next=NULL;printf("请输入数据(数字):\n");for(i=n;i>0;--i){p=(SNode *)malloc(sizeof(SNode));scanf("%d",&p->data);p->next=head->next;head->next=p;}return 1;}int menu_select(){int sn;for(;;){scanf("%d",&sn);if(sn<1||sn>6)printf("\n\t输入错误,请重新输入\n");elsebreak;}return sn;}int Push(LinkStack &top,SElemType e){SNode *q;q=(LinkStack)malloc(sizeof(SNode));if(!q){printf("溢出!\n");return(ERROR);}q->data=e;q->next=top->next;top->next=q;return(OK);}int Pop(LinkStack &top,SElemType &e){SNode *q;if(!top->next){printf("error!\n");return(ERROR);}e=top->next->data;q=top->next;top->next=q->next;free(q);return(OK);}void main(){ int e;LinkStack top;printf("1.初始化一个栈;\n2.PUSH;\n3.POP;\n4.显示所有栈里的元素;\n5.结束;\n");while(1){switch(menu_select()){case 1:if(CreatTwo(top,Stack_Size))printf("Success!\n");break; case 2:printf("Push:\n");scanf("%d",&e);if(Push(top,e))printf("Success!\n");break;case 3:if(Pop(top,e))printf("Success!\n");printf("%d\n",e);break;case 4:LinkStack p;printf("所有栈里的元素:\n");p=top;while(p->next){p=p->next;printf("%7d",p->data);}printf("\n");break;case 5:return;}}}运行结果:②循环队列程序代码:#include<stdlib.h>#include<stdio.h>#define OVERFLOW -1#define OK 1#define ERROR 0#define MAXSIZE 100typedef struct{int *elem;//队列存储空间int front;int rear;}SqQueue;//判断选择是否正确int menu_select(){int sn;for(;;){scanf("%d",&sn);if(sn<1||sn>6)printf("\n\t输入错误,请重新输入\n");elsebreak;}return sn;}//参数(传出)SqQueue &Q,循环队列(空)int InitQueue(SqQueue &Q){Q.elem=(int *)malloc(MAXSIZE*sizeof(int));if(!Q.elem)exit(OVERFLOW);Q.front=Q.rear=-1;for(int i=0;i<MAXSIZE;i++)Q.elem[i]=-1;return OK;}//返回Q的元素个数int QueueLength(SqQueue Q){return (Q.rear-Q.front+MAXSIZE)%MAXSIZE;}//显示队列的元素void Display(SqQueue Q){for(int i=0;i<=QueueLength(Q);i++)if(Q.elem[i]!=-1)printf("%d ",Q.elem[i]);printf("\n");}//入队int EnQueue(SqQueue &Q,int e){Q.rear=(Q.rear+1)%MAXSIZE;if(Q.rear==Q.front)return ERROR;Q.elem[Q.rear]=e;return OK;}//出队int DeQueue(SqQueue &Q,int &e){if(Q.front==Q.rear)return ERROR;e=Q.elem[Q.front+1];Q.elem[Q.front+1]=-1;Q.front=(Q.front+1)%MAXSIZE;return OK;}void main(){SqQueue Q;InitQueue(Q);int elem,e;printf("请输入队列元素(以0结束):\n");scanf("%d",&elem);while(elem!=0){EnQueue(Q,elem);scanf("%d",&elem);}printf("队列为:\n");Display(Q);printf("1.初始化一个队列;\n2.入队;\n3.出队;\n4.显示队列的所有元素;\n5.队列长度:\n6.结束;\n");while(1){switch(menu_select()){case 1:printf("请输入队列元素(以0结束):\n");scanf("%d",&elem);while(elem!=0){EnQueue(Q,elem);scanf("%d",&elem);}printf("队列为:\n");Display(Q);fflush(stdin);break;case 2:scanf("%d",&elem);EnQueue(Q,elem);printf("队列为:\n");Display(Q);fflush(stdin);break;case 3:DeQueue(Q,elem);printf("队列为:\n");Display(Q);break;case 4:printf("\n队列的所有元素:\n");Display(Q);break;case 5:printf("%d\n",QueueLength(Q));break;case 6:return;}}}运行结果:实验二、数组㈠、实验内容:数组一般不做插入或删除操作,也就是说,一旦建立了数组,则结构中的数据元素个数和元素之间的关系就不再发生变动。
北京工业大学Matlab实验报告**: ***学号: ************: **实验二、Matlab 的基本计算(一)实验目的1.掌握建立矩阵的方法。
2.掌握Matlab 各种表达式的书写规则以及常用函数的使用。
3.能用Matlab 进行基本的数组、矩阵运算。
4.掌握矩阵分析的方法以及能用矩阵运算或求逆法解线性方程组。
5.掌握Matlab 中的关系运算与逻辑运算。
(二)实验环境1.计算机2.MATLAB7.0集成环境(三)实验内容及要求1、熟练操作MATLAB7.0运行环境;2、自主编写程序,必要时参考相关资料;3、实验前应写出程序大致框架或完整的程序代码;4、完成实验报告。
(四)实验程序设计1.利用diag 等函数产生下列矩阵。
⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡-=032570800a ⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=804050702b2.利用reshape 函数将1题中的a 和b 变换成行向量。
3.产生一个均匀分布在(-5,5)之间的随机矩阵(10×2),要求精确到小数点后一位。
4.已知:⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡-=76538773443412A ⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡--=731203321B求下列表达式的值:(1) B A K *611+=和I B A K +-=12(其中I 为单位矩阵)(2) B A K *21=和B A K *.22=(3) 331^A K =和3.32^A K =(4) B A K /41=和A B K \42=(5) ],[51B A K =和]2:);],3,1([[52^B A K = 5.下面是一个线性方程组:⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡52.067.095.03216/15/14/15/14/13/14/13/12/1x x x(1)求方程的解(矩阵除法和求逆法)(2)将方程右边向量元素3b 改为0.53,再求解,并比较3b 的变化和解的相对变化。
MATLAB全部实验及答案实验一、MATLAB基本操作实验内容及步骤1、命令窗口的简单使用(1)简单矩阵的输入(2)求[12+2×(7-4)]÷32的算术运算结果2、有关向量、矩阵或数组的一些运算(1)设A=15;B=20;求C=A+B与c=a+b?(2)设A=[1 2 3;4 5 6;7 8 9],B=[9 8 7;6 5 4;3 2 1];求A*B与A.*B?A*B就是线代里面的矩阵相乘 A.*B是对应位置的元素相乘(3)设a=10,b=20;求i=a/b=0.5与j=a\b=2?(4)设a=[1 -2 3;4 5 -4;5 -6 7]请设计出程序,分别找出小于0的矩阵元素及其位置(单下标、全下标的形式),并将其单下标转换成全下标。
clear,clca=[1 -2 3;4 5 -4;5 -6 7];[x,y]=find(a<0);c=[];for i=1:length(x)c(i,1)=a(x(i),y(i));c(i,2)=x(i);c(i,3)=y(i);c(i,4)=(y(i)-1)*size(a,2)+x(i);endc(5)在MATLAB命令行窗口运行A=[1,2;3,4]+i*[5,6;7,8];看结果如何?如果改成运行A=[1,2;3,4]+i[5,6;7,8],结果又如何?前面那个是虚数矩阵,后面那个出错(6)请写出完成下列计算的指令:a=[1 2 3;3 4 2;5 2 3],求a^2=?,a.^2=?a^2= 22 16 1625 26 2326 24 28a.^2=1 4 99 16 425 4 9(7)有一段指令如下,请思考并说明运行结果及其原因clearX=[1 2;8 9;3 6];X( : ) 转化为列向量(8)使用三元组方法,创建下列稀疏矩阵2 0 8 00 0 0 10 4 0 06 0 0 0方法一:clear,clcdata=[2 8 1 4 6];ir=[1 1 2 3 4 ];jc=[1 3 4 2 1];s=sparse(ir,jc,data,4,4);full(s)方法二:不用三元组法clear,clca=zeros(4,4);a(1,[1,3])=[2,8];a(2,4)=1;a(3,2)=4;a(4,1)=6;a(9) 写出下列指令的运行结果>> A = [ 1 2 3 ]; B = [ 4 5 6 ];>> C = 3.^A>> D = A.^B3、 已知⎪⎭⎫ ⎝⎛+⋅=-334sin 234πt e y t 若需要计算t ∈[-1,1],取间隔为0.01,试计算出相对应的y 值。
第1篇一、实验目的1. 理解数值计算的基本概念和常用算法;2. 掌握Python编程语言进行数值计算的基本操作;3. 熟悉科学计算库NumPy和SciPy的使用;4. 分析算法的数值稳定性和误差分析。
二、实验内容1. 实验环境操作系统:Windows 10编程语言:Python 3.8科学计算库:NumPy 1.19.2,SciPy 1.5.02. 实验步骤(1)Python编程基础1)变量与数据类型2)运算符与表达式3)控制流4)函数与模块(2)NumPy库1)数组的创建与操作2)数组运算3)矩阵运算(3)SciPy库1)求解线性方程组2)插值与拟合3)数值积分(4)误差分析1)舍入误差2)截断误差3)数值稳定性三、实验结果与分析1. 实验一:Python编程基础(1)变量与数据类型通过实验,掌握了Python中变量与数据类型的定义方法,包括整数、浮点数、字符串、列表、元组、字典和集合等。
(2)运算符与表达式实验验证了Python中的算术运算、关系运算、逻辑运算等运算符,并学习了如何使用表达式进行计算。
(3)控制流实验学习了if-else、for、while等控制流语句,掌握了条件判断、循环控制等编程技巧。
(4)函数与模块实验介绍了Python中函数的定义、调用、参数传递和返回值,并学习了如何使用模块进行代码复用。
2. 实验二:NumPy库(1)数组的创建与操作通过实验,掌握了NumPy数组的基本操作,包括创建数组、索引、切片、排序等。
(2)数组运算实验验证了NumPy数组在数学运算方面的优势,包括加、减、乘、除、幂运算等。
(3)矩阵运算实验学习了NumPy中矩阵的创建、操作和运算,包括矩阵乘法、求逆、行列式等。
3. 实验三:SciPy库(1)求解线性方程组实验使用了SciPy库中的线性代数模块,通过高斯消元法、LU分解等方法求解线性方程组。
(2)插值与拟合实验使用了SciPy库中的插值和拟合模块,实现了对数据的插值和拟合,并分析了拟合效果。
JA V A实验报告系(教研室):专业:年级:实验课程:Java语言程序设计姓名:学号:实验室号:计算机号:实验时间:指导教师签字:成绩:实验2一、实验目的1.掌握声明二维数组变量,创建二维数组对象,使用二维数组解决实际问题。
2.使用构造方法创建对象,通过对象引用变量访问对象,。
3.封装数据域以便于类的维护。
二、实验要求1.(7.6)编写两个矩阵相乘的方法。
方法头如下:public static double[][] multiplyMatrix(double[][] a, double[][] b)为了是矩阵a能够和矩阵b相乘,矩阵a的列数必须与矩阵b的行数相同。
假设矩阵c是相乘的结果,而a的列数是n,那么每个元素c ij=a i1* b1j + a i2 * b2j+ …+ a in * b nj。
例如,对于两个3×3的矩阵a和b,c有:编写一个测试程序,提示用户输入两个3*3的矩阵,然后显示他们的2.(8.1)创建一个名为Rectangle的类表示矩形,这个类包括:●两个名为width和height的double型数据域,它们分别表示矩形的宽和高。
width和height的默认值都为1。
●创建默认矩形的无参构造方法:Rectangle()。
●一个创建width和height为指定值的矩形的构造方法:Rectangle(double width, double height)。
●一个名为getWidth()的方法返回宽。
●一个名为getHeight()的方法返回高。
●一个名为getArea()的方法返回这个矩形的面积。
●一个名为getPerimeter()的方法返回周长。
实现这个类,编写一个测试程序,提示用户输入两个矩形,创建两个Rectangle对象,然后显示矩形的宽,高,面积和周长。
三、实验原理1.本题通过编写Matrix类实现题目要求。
Matrix类包含三个方法:存储矩阵的方法:public static double[][] inputMatrix()用于打印矩阵的方法:public static double[][] outputMatrix(double[][] x),利用两个for循环来实现输出二维数组。
附件二Matlab语言实验教学大纲一、制定本大纲的依据依据海洋技术专业的教学计划和MA TLAB语言教学大纲制订二、本实验课程的具体安排实验项目的设置及学时分配实验要求:填必修、选修。
实验类型:填演示、验证、综合、设计。
实验类别:基础、专业等三、本实验课在该课程体系中的地位与作用本实验是与专业基础课《MATLAB应用》不可分离的一门实践课程,通过上机实习,掌握MATLAB软件使用和编程方法,验证和深化书本知识,从而加强基础知识,掌握基本技能,提高MA TLAB软件的编程能力,并用MA TLAB软件解决实际问题,构建数学模型,进行系统仿真。
四、学生应达到的实验能力与标准1、熟悉MA TLAB运行环境,了解MATLAB的搜索路径、菜单栏和工具栏;熟悉矩阵的产生、操作和运算,利用数学函数和逻辑函数实现简单功能。
2、熟悉曲线和坐标轴的控制,标注的添加;了解高级图形的绘制及图形注释。
3、掌握函数文件和脚本文件的运行方法,函数中流程控制的设计,用户交互输入的方式和程序调试的步骤。
4、熟悉线性方程组的求法和矩阵函数;熟悉多项式函数和数据分析函数;熟悉插值函数;熟悉常微分方程的解题步骤。
5、能够利用所有的基本操作实现简单的系统设计。
五、讲授实验的基本理论与实验技术知识:实验一MATLAB基础知识1、实验的基本内容(1)观看DEMO程序(2)INTRO程序(3)HELP文件(4)矩阵输入方法练习2、实验的基本要求熟悉MATLAB的运行环境和基本功能3、实验的基本仪器设备和耗材(1)软件准备:MATLAB(2)硬件准备:PC机 256M内存,32M显卡(3)资料准备:MATLAB课堂练习数据实验二矩阵与数组1、实验的基本内容(1)练习矩阵输入方法(2)简单绘图功能2、实验的基本要求掌握矩阵输入方法,矩阵和数组的运算,了解简单绘图方法3、实验的基本仪器设备和耗材(1)软件准备:MATLAB(2)硬件准备:PC机 256M内存,32M显卡(3)资料准备:MATLAB课堂练习数据实验三基本操作命令1、实验的基本内容和要求通过练习,掌握20余个常用函数的使用方法2、实验的基本要求掌握系统函数、基本数学函数、理解特殊数学函数、矩阵函数3、实验的基本仪器设备和耗材(1)软件准备:MATLAB(2)硬件准备:PC机 256M内存,32M显卡(3)资料准备:MATLAB课堂练习数据实验四高级操作命令1、实验的基本内容(1)实验数据的分析(2)非线性方程的求根(3)数值积分2、实验的基本要求掌握用MATLAB进行数值计算的方法3、实验的基本仪器设备和耗材(1)软件准备:MATLAB(2)硬件准备:PC机 256M内存,32M显卡(3)资料准备:MATLAB课堂练习数据实验五绘图功能1、实验的基本内容图形操作练习2、实验的基本要求掌握二维、三维图形的绘制方法,理解通用图形函数,了解图形的高级操作3、实验的基本仪器设备和耗材(1)软件准备:MATLAB(2)硬件准备:PC机 256M内存,32M显卡实验六控制流语句1、实验的基本内容MATLAB编程练习2、实验的基本要求掌握MATLAB的编程语法3、实验的基本仪器设备和耗材(1)软件准备:MATLAB(2)硬件准备:PC机 256M内存,32M显卡实验七文件1、实验的基本内容数据文件输入与计算结果输出练习2、实验的基本要求掌握文本文件与二进制文件的读写3、实验的基本仪器设备和耗材(1)软件准备:MATLAB(2)硬件准备:PC机 256M内存,32M显卡(3)资料准备:MATLAB课堂练习数据六、实验的考核与成绩评定:上机测试:通过MATLAB的应用实例操作,考察MATLAB软件的基本操作和设计。
MATLAB基础教程实验指导书实验一:Desktop操作桌面基础一、实验目的及要求1、熟悉MATLAB系统的安装流程,掌握MATLAB的启动和退出。
2、掌握MATLAB系统的各命令窗口的功能,熟悉常用选项和工具栏的功能和用途。
3、熟悉简单程序的输入、运行、调试及结果的显示过程。
二、实验内容1、认识MATLAB集成环境:熟悉个操作窗口的功能和用途。
掌握File(文件)、Edit(编辑)、View(显示)、Web(网络)、Window(窗口)和Help(帮助) 等菜单命令的使用。
2、启动和退出MATLAB(1)启动MATLAB的M文件。
在启动MATLAB时,系统可自动执行主M文件matlabrc.m,在matlabrc.m的末尾还会检测是否存在startup.m,如存在则会自动执行它。
在网络系统中,matlabrc.m保留给系统管理员,而各个用户可利用startup.m进行初始设置。
(2)、终止或退出MATLAB。
quit命令可终止MATLAB,但不保存工作空间的内容。
为保存工作空间的内容,可使用save命令。
1、利用save、load命令,保存和恢复工作空间。
用clear命令可清空工作空间。
(1)、工作空间中的变量可以用save命令存储到磁盘文件中。
(2)、用load命令可将变量从磁盘文件读入MATLAB的工作空间。
(3)、用clear命令可清除工作空间中现存的变量。
4、MATLAB的所有图形工具窗体都可以嵌入MATLAB窗体(Dock),也可以从MATLAB窗体中弹出(Undock),例如在MATLAB默认的图形窗体环境下,单击命令行窗体左上角按钮,就可以将MATLAB命令行窗体弹出。
要求分别将命令行窗体(Command Window)、命令行历史窗体(Command History)、当前路径查看器(Current Directory)、工作空间浏览器(Workspace Browser)、帮助(Help)、MATLAB性能剖析工具(Profiler) 从MATLAB窗体中弹出和嵌入MATLAB窗体(Dock)。
实验报告课程名称:MATLAB上机实验实验项目:矩阵和数组的操作实验地点:专业班级:学号学生姓名:指导教师:年月日实验二矩阵和数组的操作一.实验环境计算机 MATLAB软件二.实验目的1.掌握矩阵和数组的一般操作,包括创建、保存、修改和调用等。
2.学习矩阵和数组的加减运算与乘法。
3.掌握对数组元素的寻访与赋值,会对数组进行一般的操作。
三.实验内容与步骤1.用三种方法创建一个3×3矩阵,然后利用矩阵编辑器,将其扩充为4×5矩阵,并保存,试着调用它。
2.建立一个等差数列,然后由它产生一个对角阵。
3.利用MATLAB的函数inv(A)求方阵的逆矩阵。
解:1.(1)>> A=[3,2,1;4,5,6;7,8,9]A =3 2 14 5 67 8 9(2)A=rand(3,3)A =0.9501 0.4860 0.45650.2311 0.8913 0.01850.6068 0.7621 0.82142.> a=linspace(0.1,5,5)a =0 0.3750 0.7500 1.1250 1.5000>> B=diag(a)B =0 0 0 0 00 0.3750 0 0 00 0 0.7500 0 00 0 0 1.1250 00 0 0 0 1.50003.>> A=[1,2;5,6]A =1 25 6>> B=inv(A)B =-1.5000 0.50001.2500 -0.2500四.练习题1.创建一个5×5矩阵,提取主对角线以上的部分。
>> A=rand(5,5)A =0.4447 0.1763 0.8936 0.1389 0.19880.6154 0.4057 0.0579 0.2028 0.01530.7919 0.9355 0.3529 0.1987 0.74680.9218 0.9169 0.8132 0.6038 0.44510.7382 0.4103 0.0099 0.2722 0.9318>> B=triu(A)B =0.4447 0.1763 0.8936 0.1389 0.19880 0.4057 0.0579 0.2028 0.01530 0 0.3529 0.1987 0.74680 0 0 0.6038 0.44510 0 0 0 0.93182.A=rand(3),B=magic(3),C=rand(3,4),计算A×B×C>> A=rand(3),B=magic(3),C=rand(3,4)A =0.4660 0.5252 0.83810.4186 0.2026 0.01960.8462 0.6721 0.6813B =8 1 63 5 74 9 2C =0.3795 0.7095 0.1897 0.30280.8318 0.4289 0.1934 0.54170.5028 0.3046 0.6822 0.1509>> D=A*B*CD =16.2278 13.1844 9.2577 9.61074.8656 4.7624 3.7848 2.692118.5715 15.9959 11.7862 10.76673.创建一个3×3矩阵,并求其转置,逆矩阵。
VBA中的数组与矩阵操作技巧VBA(Visual Basic for Applications)是一种用于编写宏和自定义函数的编程语言,广泛应用于Microsoft Office套件中的各种应用程序。
在VBA中,数组和矩阵是非常重要且常用的数据结构。
本文将介绍一些VBA中的数组与矩阵操作技巧,以帮助您更有效地处理和操作数据。
1. 定义和初始化数组在VBA中,您可以使用`Dim`语句来定义一个数组,并使用`Array`函数来初始化数组的值。
例如,以下代码创建了一个长度为5的整数数组并初始化了其中的值:```Dim arr(4) As Integerarr = Array(1, 2, 3, 4, 5)```您也可以使用`{}`来直接定义和初始化数组,如下所示:```Dim arr() As Integerarr = {1, 2, 3, 4, 5}```2. 访问和修改数组元素要访问数组中的特定元素,您可以使用索引。
在VBA中,数组的索引从0开始。
例如,要访问上述数组中的第三个元素,可以使用以下代码:```Dim value As Integervalue = arr(2)```要修改数组中的元素,只需将新值赋给相应的索引即可:```arr(2) = 10```3. 动态数组在某些情况下,您可能需要使用动态数组,即在运行时根据需要调整数组的大小。
在VBA中,您可以使用`ReDim`语句来重新调整数组的大小。
例如,以下代码创建了一个初始大小为3的字符串数组,并在后续将其扩展为大小为5的数组:```Dim arr() As StringReDim arr(2)arr(0) = "Apple"arr(1) = "Banana"arr(2) = "Orange"ReDim Preserve arr(4)arr(3) = "Grapes"arr(4) = "Mango"```请注意,`ReDim Preserve`语句在保留数组中的现有元素的同时改变数组的大小。
java实验报告--数组Java实验报告 - 数组引言:Java是一种广泛应用于软件开发的编程语言,其强大的数组功能使得它成为处理大量数据的理想选择。
本实验报告将探讨Java中数组的基本概念、使用方法以及一些常见的应用场景。
一、数组的定义与初始化在Java中,数组是一种用于存储多个相同类型元素的数据结构。
数组可以存储基本数据类型(如整数、浮点数等)或者对象。
声明一个数组需要指定元素的类型和数组的名称,然后使用关键字"new"来创建数组对象。
二、数组的访问与操作通过索引(index)可以访问数组中的元素,索引从0开始计数。
例如,对于一个长度为10的整数数组,可以使用arr[0]来访问第一个元素,arr[1]来访问第二个元素,以此类推。
数组的长度可以通过arr.length来获取。
三、数组的遍历与排序遍历数组是指逐个访问数组中的元素。
常用的遍历方法有使用for循环和foreach循环。
对于需要对数组进行排序的情况,可以使用Java提供的排序算法(如快速排序、冒泡排序等)或者使用Arrays类中的sort方法。
四、多维数组除了一维数组,Java还支持多维数组。
多维数组可以看作是数组的数组,可以用于存储表格、矩阵等结构化数据。
在声明多维数组时,需要指定每一维的长度。
五、数组的应用场景1. 数据存储与处理:数组可以用于存储和处理大量数据,如学生成绩、员工工资等。
通过数组,可以方便地进行数据的查找、排序和统计等操作。
2. 图像处理:图像可以用二维数组表示,每个元素代表一个像素点的颜色值。
通过对数组的操作,可以实现图像的旋转、缩放等功能。
3. 算法实现:许多算法的实现都需要使用数组,如查找算法、排序算法等。
数组的高效访问和操作使得算法的实现更加简洁和高效。
六、实验案例:数组的查找与统计为了更好地理解数组的应用,我们设计了一个实验案例:数组的查找与统计。
假设有一个整数数组,我们需要找到其中的最大值、最小值、平均值以及某个特定元素的出现次数。
实验二 矩阵和数组的操作
叶松庆
一.实验环境
计算机 MATLAB软件。
二.实验目的
1.掌握矩阵和数组的一般操作,包括创建、保存、修改和调用等。
2.学习矩阵和数组的加减运算与乘法。
3.掌握对数组中元素的寻访与赋值,会对数组进行一般的操作。
三.预备知识
1.常用的产生特殊矩阵的函数。
2.通过矩阵的结构变换,获得新矩阵。
3.数组(矩阵)操作
四.实验内容与步骤
1.用三种方法创建一个3×3矩阵,然后利用矩阵编辑器,将其扩充为4×5矩阵,并保存,试着调用它。
(1)直接输入法。
如在命令区输入A=[3,2,1;4,5,6;7,8,9]。
(2)直接利用MATLAB提供的函数创建一个3×3矩阵。
如在命令区输入rand(3,3)记得到一个3×3矩阵。
实验结果如图1所示。
(a)直接输入 (b)利用rand函数
图1 实验结果
(3)利用MATLAB提供的“Matrix Editor”完成输入。
步骤1 在命令区输入A=1
步骤2 用鼠标单击工具栏的工作区浏览器,MATLAB弹出变量浏览器,选中变量A,鼠标左键双击A,打开矩阵编辑器。
步骤3 在左下角的两个文本框中输入分别输入希望得到的矩阵行数和列数:3
行3列。
步骤4 要将上面的矩阵改为一个4×5矩阵,只需修改矩阵的行数和列数即可。
步骤5 在命令区输入save data A(data为我们给变量文件起的名称,系统会自动
沿设定好的路径—“.mat”格式存储文件),即可保存上面例子中创建的矩阵A。
步骤6 在命令区输入load data即可把保存在文件中的矩阵读到MATLAB的工作去的内存中来。
实验结果如图2所示。
(a)输入A
(b)数组编辑器
(c)载入变量A
图2 实验结果
2.建立一个等差数列,然后由它产生一个对角阵。
步骤1 在命令区输入a=linspace(0,1.5,5)产生一个等差数列。
步骤2 在命令区输入B=diag(a)产生一个对角阵。
实验结果如图3所示
图3 产生对角阵
3.利用MATLAB的函数inv(A)求方阵A的逆矩阵。
步骤1 在命令区输入A=[1,2;5,6]得到一个2×2的方阵。
步骤2 再输入B=inv(A)求出A的逆矩阵。
实验结果如图4所示。
图4 求逆矩阵
五.练习
1. 创建一个5×5矩阵,提取对角线以上部分。
实验结果如图5所示。
图5 提取上对角矩阵
2. A=rand(3), B=magic(3), C=rand(3,4),计A×B×C
实验结果如图6所示。
图6 矩阵乘积
3. 创建一个3×3矩阵,并求其转置,逆矩阵。
实验结果如图7所示。
图7 矩阵转置和求逆
4. 用两种方法求Ax=b的解(A为4阶随机矩阵,b为4阶列向量)。
实验结果如图8所示。
(a)用“\”符号运算求解(b)调用函数linsolve求解
图8 解线性方程
5. 创建一个四阶随机矩阵A,计算A3
实验结果如图9所示。
图9 矩阵幂的求解
6. 求100—999之间能被21整除的数的个数。
实验结果如图10所示。
图10 find等函数的调用
7. 设有矩阵A和B
[1] 求它们的乘积C=A×B。
[2] 将矩阵C的右下角3×2子矩阵付给D。
实验结果如图11 所示。
图11 矩阵乘积和提取
六.总结
通过以上实验学习,熟悉了MATLAB环境和基本操作。
MATLAB实验报告书
实验名称:矩阵和数组的操作
学院:信息工程学院
专业班级:通信工程0901
姓名:叶松庆
学号: 2009001335
指导教师:李鸿燕
2011年4月18日。