您好,欢迎来到九壹网。
搜索
您的当前位置:首页实验1

实验1

来源:九壹网
实验1:Matlab的有关知识与操作

一、实验目的

1、会安装、启动、退出Matlab系统

2、熟悉Matlab 软件环境,对向量、数组和矩阵处理的基本方法 3、会使用Matlab作图

4、会简单编程和 m 文件的使用

二、实验要求

熟悉Matlab系统的运行环境、掌握该系统的一些基本符号运算与数值计算,掌握Matlab函数的定义及Matlab的作图的一些基本命令;能地运用命令作图并学会循环、选择控制结构编程调试。

三、实验内容 1、启动方法:

a、点击开始菜单条的程序,再点击matlab菜单条中的matlab6.5 b、双击桌面上图标 2、退出

只需点击系统菜单条右上角的关闭按钮或点击系统菜单条的File菜单条中的Exit项。

3、matlab系统的输入、执行,可在Command Windows窗口中进行或在编辑窗口也能输入、运行程序,不过运行的结果仍出现在命令窗口。命令窗口按回车键运行,编辑窗口先选中程序,再右击鼠标选第一个命令。 4、主要命令和注意事项: 一)变量与函数

1)MATLAB中变量的命名规则是:

(1)变量名必须是不含空格的单个词; (2)变量名区分大小写;

(3)变量名最多不超过31个字符;

(4)变量名必须以字母打头,之后可以是任意字母、数字或下划线,变量名中不允许使用标点符号.

系统预定义的永久变量 Ans Eps Pi Inf NaN 生 i 或 j 虚数单位i=j=(-1)^(1/2) 系统预设的计算结果的变量名 容差变量,定义为1.0到最近的浮点数的距离 内建的π值 正无穷 ( 1/0) 非数(Not a Number),由Inf/inf或者0/0产 2)数学函数

一些常用的数学函数如下表所示: 函 数 sin(x) cos(x) tan(x) abs(x) min(x) sqrt(x) log(x) sign(x) 名 称 正弦函数 余弦函数 正切函数 绝对值 最小值 开平方 自然对数 符号函数 函 数 asin(x) acos(x) atan(x) max(x) sum(x) exp(x) 名 称 反正弦函数 反余弦函数 反正切函数 最大值 元素的总和 以e为底的指数 以10为底的对数 取整 log10(x) fix(x) 还有如: length(长度); mean(平均值); median(中间值);prod(乘积); sort(从小到大排序)round(四舍五入取整); floor(向-1方向取整); ceil(向+1方向取整); real(取实部); imag(取虚部);angle(取辐角);rats(有理逼近) 二)矩阵及其运算 1) 矩阵的建立

逗号或空格用于分隔某一行的元素,分号用于区分不同的行. 除了分号,在输入矩阵时,按Enter键也表示开始一新行. 输入矩阵时,严格要求所有行有相同的列.

例 m=[1 2 3 4 ;5 6 7 8;9 10 11 12] p=[1 2 3 4 5 6 7 8 9 10 11 12]

注:中括号括起的表明是矩阵,一般的表达多用小括号。 特殊矩阵的建立:

a=[ ] 产生一个空矩阵,空矩阵的大小为零. b=zeros(m,n) 产生一个m行、n列的零矩阵

c=ones(m,n) 产生一个m行、n列的元素全为1的矩阵 d=eye(m,n) 产生一个m行、n列的单位矩阵 rand(m,n) 生成m×n均匀分布的随机阵 randn(m,n) 生成m×n正态分布的随机矩阵

H=hilb(n) 生成n阶Hilbert矩阵,其中[H]i,j=1

ij1Magic(n) 产生维数维n×n的魔方阵(各个行、列及两对角线的元素

和相等)

2) 对矩阵元素的操作

A(:) 逐列提取A中的所有元素作为一个列向量。 A(i) 把A看作列向量A(:),提取其中第i个元素。 A(r, c) 提取A中第r行和第c列所定义的A的元素。 A(r, :) 提取A中第r行所有列所构成的A的子数组。 A(:, c) 提取A中第c列所有行所构成的A的子数组。 A(i1:i2, j1:j2) 提取矩阵A的第i1至i2行、第j1至j2列构成新矩阵 A(i2:-1:i1,:) 以逆序提取矩阵A的第i1至i2行,构成新矩阵 A(:, j2:-1:j1 ) 以逆序提取矩阵A的第j1至j2列,构成新矩阵 A(i1:i2,:)=[ ] 删除A的第i1至i2行,构成新矩阵 A(:, j1:j2)=[ ] 删除A的第j1至j2列,构成新矩阵

[A B];[A;B] 将矩阵A和B拼接成新矩阵,前者为左右拼接,行数要

相等,

后者为上下拼接,列数要相等。

3) 矩阵的运算

(1).四则运算

矩阵的加、减、乘运算符分别为“+,—,*” ,用法与数字运算几乎相同,但计算时要满足其数学要求(如:同型矩阵才可以加、减)。

在MATLAB中矩阵的除法有两种形式:左除“\\”和右除“/”。 若A是可逆矩阵,AX=B的解是A左除B,即X=A\\B; XA=B的解是A右除B,即X=B/A。 (2).与常数的运算

常数与矩阵的运算即是同该矩阵的每一元素进行运算。但需注意进行数除时,常数通常只能做除数。

(3).基本函数运算

矩阵的函数运算是矩阵运算中最实用的部分,常用的主要有以下几个:

det(a) 求矩阵a的行列式

eig(a) 求矩阵a的特征值与特征向量 inv(a)或a ^ (-1) 求矩阵a的逆矩阵 rank(a) 求矩阵a的秩

trace(a) 求矩阵a的迹(对角线元素之和) 三)数组及其运算 1) 数组的建立

x=[a b c d e f ] 创建包含指定元素的数组 x=a:b

创建从a开始,加1计数,到b结束的等差数组 x=a:k:b

创建从a开始,加k计数,b结束的等差数组 注:k=1时可以省略不写,如第二种创建方式 x=linspace(a,b,n)

创建从a开始,到b结束,有n个元素的等差数组 x=logspace(a,b,n)

创建从10a开始,到10b结束,有n个元素的等比数组 2) 数组元素的访问

(1) 访问一个元素: x(i)表示访问数组x的第i个元素. (2) 访问一块元素: x(a :b :c)表示访问数组x的从第a个元素开始,

以步长为b到第c个元素(但不超过c),b可以为负数,b缺损时为1.

(3) 直接使用元素编址序号. x([a b c d]) 表示提取数组x的第a、b、c、d个元素构成一个新的数组[x(a) x(b) x(c) x(d)]. 3) 数组的运算

数组的运算符为加(+)、减(-)、点乘(.*)、点除(./)、和点乘方运算 (.^) (1) 标量——数组运算

数组对标量的加、减、乘、除、乘方是数组的每个元素对该标量施加相应的加、减、乘、除、乘方运算.

设:a=[a1,a2,„,an], c=标量 则: a+c=[a1+c,a2+c,„,an+c] a.*c=[a1*c,a2*c,„,an*c]

a./c= [a1/c,a2/c,„,an/c] (右除) a.\\c= [c/a1,c/a2,„,c/an] (左除) a.^c= [a1^c,a2^c,„,an^c] c.^a= [c^a1,c^a2,„,c^an]

(2)数组——数组运算

当两个数组有相同维数时,加、减、乘、除、幂运算可按元素对元素方式进行的,不同大小或维数的数组是不能进行运算的. 设:a=[a1,a2,„,an], b=[b1,b2,„,bn]

则: a+b= [a1+b1,a2+b2,„,an+bn] a.*b= [a1*b1,a2*b2,„,an*bn] a./b= [a1/b1,a2/b2,„,an/bn] a.\\b=[b1/a1,b2/a2,„,bn/an] a.^b= [a1^b1,a2^b2,…,an^bn]

四)图形功能 1) 二维图形的绘制 plot(y) 当y为向量时,是以y的分量为纵坐标,以元素序号为横坐标,用直线依次连接数据点,绘制曲线。若y为实矩阵,则按列绘制每列对应的曲线,图中曲线数等于矩阵的列数。 >> y=[0 0.58 0.70 0.95 0.83 0.25]; >> plot(y) 生成的图形见图5-1,是以序号1,2,,6为横坐标、数组y的数值为纵坐标画出的折线。

plot(x,y) 若y和x为同维向量,则以x为横坐标,y为纵坐标绘制连线图。 >> x=linspace(0,2*pi,30); % 请同学讲解此语句的意思 >> y=sin(x); >> plot(x,y)

生成的图形见图5-2,是[0,2]上30个点连成的光滑的正弦曲线。

图5-1 图5-2 多重线

在同一个画面上可以画许多条曲线,只需多给出几个数组,例如

>> x=0:pi/15:2*pi; >> y1=sin(x); >> y2=cos(x); >> plot(x,y1,x,y2)

则可以画出图5-3。

多重线的另一种画法是利用hold命令。在已经画好的图形上,若设置hold on,MATLA将把新的plot命令产生的图形画在原来的图形上。而命令hold off 将结束这个过程。

例如:

>> x=linspace(0,2*pi,30); y=sin(x); plot(x,y)

先画好图5-2,然后用下述命令增加cos(x)的图形,也可得到图5-3。

>> hold on

>> z=cos(x); plot(x,z)

>> hold off %注意hold on与hold off的配对使用

10.80.60.40.20-0.2-0.4-0.6-0.8-101234567 图5-3 线型和颜色

线型 线方式: - 实线 :点线 -. 虚点线 - - 波折线。

数据点图标: . 圆点 +加号 * 星号 x x形 o 小圆 pentagram (五角星)。颜色: y黄; r红; g绿; b蓝; w白; k黑; m紫; c青. plot(x,y, 'color linestyle marker') 其中,color linestyle marker为一个字符串,由颜色、线型和数据点图标组成。 网格和标记 在一个图形上可以加网格、标题、x轴标记、y轴标记,用下列命令完成这些工作。

>> x=linspace(0,2*pi,30); y=sin(x); z=cos(x); >> plot(x,y,x,z)

>> grid %加网格

>> xlabel ('Independent Variable X') %加 x轴标记 >> ylabel ('Dependent Variables Y and Z') %加 y轴标记 >> title ('Sine and Cosine Curves') %加标题 它们产生图5-4:

Sine and Cosine Curves10.80.60.4Dependent Variables Y and Z0.20-0.2-0.4-0.6-0.8-101234Independent Variable X567 图5-4

也可以在图形的任何位置加上一个字符串,如用:

>> text (2.5,0.7,'sinx')

表示在坐标x=2.5, y=0.7处加上字符串sinx。

更方便的是用鼠标来确定字符串的位置,方法是输入命令: >> gtext ('cosx')

在图形窗口十字线的交点是字符串的位置,用鼠标点一下就可以将字符串放在那里。

坐标系的控制

axis([xmin xmax ymin ymax]) [ ]中分别给出x轴和y轴的最大值、最小值

axis equal 或 axis(‘equal’) x轴和y轴的单位长度相同 axis square 或 axis(‘square’) 图框呈方形

axis off 或 axis(‘off’) 清除坐标刻度 多幅图形

可以在同一个画面上建立几个坐标系, 用subplot (m,n,p) 命令;把一个画面分成m×n个图形区域, p代表当前的区域号,在每个区域中分别画一个图,如

>> x=linspace(0,2*pi,30); y=sin(x); z=cos(x); >> u=2*sin(x).*cos(x); v=sin(x)./cos(x);

>> subplot(2,2,1), plot(x,y), axis([0 2*pi -1 1]), title('sin(x)') %分成2×2个区域

>> subplot(2,2,2), plot(x,z), axis([0 2*pi -1 1]), title('cos(x)')

>> subplot(2,2,3), plot(x,u), axis([0 2*pi -1 1]), title('2sin(x)cos(x)')

>> subplot(2,2,4), plot(x,v), axis([0 2*pi -20 20]), title('sin(x)/cos(x)') 共得到4幅图形,见图5-6.

sin(x)11cos(x)0.50.500-0.5-0.5-10246-102462*sin(x)cos(x)120sin(x)/cos(x)0.51000-0.5-10-10246-200246 图5-6 2) 三维图形

三维曲线与等高线

plot3是空间曲线作图函数, 用法类似于plot。 例 作螺旋线 x=sint, y=cost, z=t 用以下程序实现:

>> t=0:pi/50:10*pi;

>> plot3 (sin(t),cos(t),t)

contour画出曲面等高线在XY平面的投影,contour3画出曲面在三维空间中的等高线,

如对上图的曲面, 在程序后接contour(X,Y,Z,10) 即可得到10条等高线。

Meshc(X,Y,Z)同时画出网状图与等高线,surfc(X,Y,Z)同时画出曲面图与等高线。

三维曲面

mesh和surf是三度空间立体绘图的基本命令,mesh可画出立体网状图,surf则可画出立体曲面图,两者产生的图形都会依高度而有不同颜色。

例 作曲面z=f(x,y)的图形

zsinx2y2xy22,7.5x7.5,7.5y7.5

用以下程序实现:

>>x= -7.5:0.5:7.5; y=x;

[X,Y]=meshgrid(x,y); % 3维图形的X,Y数组 R=sqrt(X.^2+Y.^2)+eps; % 加eps是防止出现0/0 Z=sin(R)./R;

mesh(X,Y,Z); % 3维网格表面

将mesh命令改为surf:

>>x= -7.5:0.5:7.5; y=x;

[X,Y]=meshgrid(x,y); R=sqrt(X.^2+Y.^2)+eps;

Z=sin(R)./R;

subplot(1,2,1); mesh(X,Y,Z);

subplot(1,2,2); surf(X,Y,Z); % 3维立体曲面图

其它

较有用的是给三维图形指定观察点的命令view(azi,ele),azi 是方位角, ele 是仰角.缺省时 azi=37.50,ele=300.

五) 程序设计 1)M文件及其调用

所谓M文件就是由MATLAB语言编写的可在MATLAB语言环境下运行程序源代码文件。这类文件的第一行必须是一特殊字符function开始,扩展名必须是.m 。

格式为:

function 因变量名=函数名(自变量名)

函数值的获得必须通过具体的运算实现,并赋给因变量.

M文件建立方法:

1. 在Matlab中,点:File->New->M-file 2. 在编辑窗口中输入程序内容

3. 点File->Save存盘, M文件名称必须与函数名一致,注意不要修改存盘的路径

例:定义函数 f(x1,x2)=100(x2-x12)2+(1-x1)2

function f=fun(x)

f=100*(x(2)-x(1)^2)^2+(1-x(1))^2

注:输出变量如果多于1个,则应该用方括号括起来;输入变量多于一个应该用逗号隔开。

function [mean,stdev]=stat(x)

[m,n]=size(x); % 取矩阵的行、列数

if m==1 % 判断是否是行向量,后面会说明if的用法

m=n; end

mean=sum(x)/m;

stdev=sqrt(sum(x.^2)/m-mean.^2); M文件的调用

定义好M文件后,我们就可以象调用Matlab自带的函数一样,直接使用函数fun.m,

例:计算 f(1,2), 只需在Matlab命令窗口键入命令:

x=[1 2]; y=fun(x) % 调用上面的M文件,此时x(1)=1,x(2)=2,最后的结果赋给y。

例:求数组的均值和方差

X=[2,4,-7,0,5,-1]; [xm,xd]=stat(x) %xm,xd分别对应上面定义的函数中

mean,stdev。

2) 程序设计语句 关系操作符 关系操作符 说明 < <= > >= = = ~= 逻辑运算符 逻辑操作符 & ︱ ~ 说明 与 或 非 小于 小于或等于 大于 大于或等于 等于 不等于 控制语句

(1) 循环语句 for循环:for v=s1:s2:s3 % s1:循环变量初值,s2:步长,s3:循环变量终值

执行语句 end

while循环:while 逻辑变量 % 执行循环的条件,逻辑变量为真时,循环继续

循环体语句 End

(2) 选择语句 形式一:

if 逻辑变量 %执行下面语句的条件 条件语句组 End

形式二:

if 逻辑变量

条件语句组1 %满足条件,执行语句组1 else

条件语句组2 %否则执行语句组2 End

形式三:

if逻辑变量1

条件语句组1 %当逻辑变量1为真,执行此语句组

elseif逻辑变量2 %否则判断逻辑变量2的真假,若真,执行条件语句组2

条件语句组2

elseif逻辑变量n

条件语句组n

else % 当所有的条件均不满足时,执行语句组n+1

条件语句组n+1

end

例 符号函数(fhfun.m)

1,x0sign0,x0

1,x0function f=fhfun(x) if x>0 f=1;

elseif x==0 f=0;

else

f=-1;

end

5、实验练习 编程求解下面各题

1、输入一个5×5对称阵a和5维向量x,求x'ax。

2、提取矩阵A=[1 2 3 4;4 5 3 6;6 7 8 9]的第六个元素a,删除A的最后一列生成新矩阵B,在B上提取新矩阵C=[2 3;5 3]。 3、用作图法求: (1):x28oglx

(2):4nisxx20 的近似解。

4、作曲面zx2y2的图形。

565、编写求阶乘的函数M文件,并用之计算c100。

26、a11,a22,ak2ak1ak2,求序列{an},直至an>1000时停止。

四、编写实验报告

按所拿到的实验报告纸,认真填写各项,并总结出心得体会。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 91gzw.com 版权所有 湘ICP备2023023988号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务