当前位置:文档之家› MATLAB程序设计实验指导书

MATLAB程序设计实验指导书

MATLAB程序设计实验指导书
MATLAB程序设计实验指导书

MATLAB程序设计实验指导书MATLAB是集数值计算、符号运算及图形处理等强大功能于一体的科学计算

语言。作为强大的科学计算平台,它几乎能满足所有的计算需求。在美国及其他发达国家的理工科院校里,MATLAB已经作为一门必修的课程;在科研院所、大型公司或企业的工程计算部门,MATLAB也是最普遍的计算工具之一。有鉴于此,我院开设了《MATLAB程序设计》这门课程,它需要一定的理论基础,同时又具有很强的实践性。如何加强理论课程的学习、加深学生对本课程中的基本理论知识及基本方法的理解,如何培养学生实践动手能力是教学的当务之急。而MATLAB程序设计实验课程就是一种重要的教学手段和途径。

实验将MATLAB程序设计的基本方法灵活地运用在数学、电路等课程中,重点突出,内容丰富。同时,注重理论分析与实际动手相结合,以理论指导实践,以实践验证基本原理,旨在提高学生分析问题、解决问题的能力及动手能力,使学生进一步巩固基本理论知识,建立比较全面的MATLAB程序设计的概念。

实验注意事项

1、实验系统接通电源前请确保电源插座接地良好。

2、完成实验后请确保关闭电脑电源及插座电源。

实验一 矩阵及其运算

一、实验目的

1、熟悉MATLAB 工作环境

2、掌握矩阵和数组的创建、寻访和运算 二、实验内容

验证欧姆定律:i

u

r ,其中i u r , ,分别是电阻(欧姆)、电压(伏特)、电流

(安培)。已知u=[0.89, 1.20, 3.09, 4.27, 3.62, 7.71, 8.99, 7.92, 9.70, 10.41],i=[0.028, 0.040, 0.100, 0.145, 0.118, 0.258, 0.299, 0.257, 0.308, 0.345]。 三、实验器材

PC 机 (装有 MA TLAB 软件 ) 1台 四、实验原理 4.1 Desktop 简介

MATLAB R2006a 版的Desktop 操作桌面,是一个高度集成的MATLAB 工作界面。其默认形式,如图1-1所示。

图1-1 Desktop 操作桌面的默认外貌

该桌面的上层铺放着三个最常用的界面:指令窗(Command Window )、当前目录(Current Directory )浏览器、历史指令(Command History )窗。在当前目录窗的下面还铺放一个MATLAB 内存工作空间(Workspace )浏览器。 ● 指令窗

该窗是进行各种MATLAB 操作的最主要窗口。在该窗内,可键入各种送给MATLAB 运作的指令、函数、表达式;显示除图形外的所有运算结果;运行错误时,给出相关的出错提示。 ● 历史指令窗

该窗记录已经运作过的指令、函数、表达式,及它们运行的日期、时间。该窗中的所有指令、文字都允许复制、重运行及用于产生M 文件。 ● 当前目录浏览器

在该浏览器中,展示着子目录、M 文件、MA T 文件和MDL 文件等。对该界

面上的M文件,可直接进行复制、编辑和运行;界面上的MA T数据文件,可直接送入MATLAB工作内存。此外,对该界面上的子目录,可进行Windows平台的各种标准操作。

工作空间浏览器

该浏览器默认地位于当前目录浏览器的后台。该窗口罗列出MATLAB工作空间中所有的变量名、大小、字节数;在该窗中,可对变量进行观察、图示、编辑、提取和保存。

捷径(Start)键

引出通往本MATLAB所包含的各种组件、模块库、图形用户界面、帮助分类目录、演示算例等的捷径,以及向用户提供自建快捷操作的环境。

4.2 数值数组的创建和寻访

4.2.1 一维数组的创建

1、递增/减型一维数组的创建

1)“冒号”生成法

x=a:inc:b

a是数组的第一个元素;inc是采样点之间的间隔,即步长,inc可以缺省,省略时,默认其取值为1;若(b-a)是inc的整数倍,则所生成数组的最后一个元素等于b,否则小于b。

2)线性或对数定点法

x=linspace(a,b,n) 以a、b为左右端点,产生线性等间隔的(1×n)行数组

x=logspace(a,b,n) 以a、b为左右端点,产生对数等间隔的(1×n)行数组2、其他类型一维数组的创建

1)逐个元素输入法

这是最简单,但又最通用的构造方法。

2)运用MATLAB函数生成法

MATLAB提供许多生成特殊数组的函数,表1-1列出了最常用函数。

例1-1一维数组的常用创建方法举例。

a1=1:6

a2=1:-0.1:0

a1 =

1 2 3 4 5 6

a2 =

Columns 1 through 6

1.0000 0.9000 0.8000 0.7000 0.6000 0.5000

Columns 7 through 11

0.4000 0.3000 0.2000 0.1000 0

b1=linspace(0,pi,4)

b1 =

0 1.0472 2.0944 3.1416

rand('state',0) %把伪随机发生器置为0状态

c1=rand(1,5)

c1=

0.9501 0.2311 0.6068 0.4860 0.8913

4.2.2 二维数组的创建

1、小规模数组的直接输入法

对于较小数组,从键盘上直接输入最简便。二维数组必须有以下3个要素:1)整个输入数组必须以方括号“[ ]”为其首尾;

2)数组的行与行之间必须用分号“;”或回车键隔离;

3)数组元素必须由逗号“,”或空格分隔。

2、中规模数组的数组编辑器创建法

当数组规模较大,元素数据比较冗长时,就不宜采用指令窗直接输入法,此时借助数组编辑器比较方便。

图1-2 工作空间变量数组编辑器

3、中规模数组的M文件创建法

对于经常需要调用的数组,当数组规模较大而复杂时,可以为它专门建立一个M文件。下面通过例子来说明这种M文件的创建过程。

例1-2创建和保存数组AM的MyMatrix.m 文件。

(1)打开文件编辑调试器,并在空白填写框中输入所需数组(见图1-3)。(2)最好在文件的首行编写文件名和简短说明,以便查阅(见图1-3)。(3)保存此文件,并且文件起名为MyMatrix.m 。

(4)以后只要在MATLAB指令窗中,运行MyMatrix.m文件,数组AM 就会自动生成于MATLAB内存中。

图1-3 利用M 文件创建数组

4.2.3 二维数组元素的标识和寻访

二维数组元素及子数组的标识和寻访具有典型性,它既适用于一维数组,又不难推广到高维数组。对二维数组子数组进行标识和寻访的最常见格式见表1-2。

4.3 数组/矩阵运算

4.3.1 数组/矩阵运算符

MATLAB 的数组运算和矩阵运算的运算符及其数学意义列于表1-3中,ij a 和ij b 分别是数组(或矩阵)A 和B 的第),(j i 个元素。

4.3.2 矩阵的标量特征参数

MATLAB中用来计算矩阵特征参数的指令如下:

rank(A) 求矩阵A的秩

trace(A) 求矩阵A的迹

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

例1-3矩阵标量特征参数计算示例。

A=reshape(1:9,3,3);

r=rank(A)

d3=det(A)

d2=det(A(1:2,1:2)) %求矩阵左上角(2*2)子行列式

t=trace(A)

r =

2

d3 =

d2 =

-3

t =

15

4.3.3 矩阵的变换和特征值分解

[R,ci]=rref(A) 借助初等变换把A变换成行阶梯矩阵R;ci是行向量,

其元素指明A的哪几列是“基”

X=null(A) A矩阵零空间的全部正交基,满足AX=0

[V,D]=eig(A) A矩阵的特征值、特征向量分解,使A V=VD

例1-4简单实阵的特征值分解。

A=[1,-3;2,2/3];

[V,D]=eig(A)

V =

0.7746 0.7746

0.0430 - 0.6310i 0.0430 + 0.6310i

D =

0.8333 + 2.4438i 0

0 0.8333 - 2.4438i

五、实验步骤

1、熟悉MATLAB工作环境

2、创建数组/矩阵,实现其运算

六、实验思考题

1、输入C=1:2:20,则C(i)表示什么?其中i=1,2,3, (10)

2、输入A=[7 1 5;2 5 6;3 1 5],B=[1 1 1; 2 2 2; 3 3 3],执行下列指令并说出其含义:

A(2,3)、A(:,2)、A(3,:)、A(:,1:2:3)、A(:,3).*B(:,2)、A(:,3)*B(2,:)、A*B、A.*B、A^2、A.^2、B/A、B./A

实验二 符号计算

一、实验目的

掌握符号对象的创建及符号计算 二、实验内容

1、计算行列式22224444

1 1 1 1 a b c d

a b c d

a b c d 的值。

2、求符号矩阵????

??????=333231232221

131211

a a a a a a a a a A 的行列式值和逆,所得结果采用“子表达

式置换”简洁化。

3、计算二重积分dydx y x x )(1

1222

2+??。

三、实验器材

PC 机 (装有 MA TLAB 软件 ) 1台 四、实验原理

4.1 生成符号对象的基本规则

1)任何基本符号对象(数字、参数、变量、表达式)都必须借助专门的符号函数指令sym 或syms 定义;

2)任何包含符号对象的表达式或方程,将继承符号对象的属性。 4.2 符号计算中的算符

1)基本运算符 算符“+”、“-”、“*”、“\”、“/”、“^”分别表示符号矩阵运算法则的加、减、乘、左除、右除、求幂运算;

算符“.*”、“.\”(或“./”)、“.^”分别表示数组对应元素间的乘、除、求幂; 算符“′”、“.′”分别实现矩阵的共轭转置、非共轭转置。 2)关系运算符

在符号对象的比较中,只有是否“等于”的概念。 算符“= =”、“~=”分别对算符两边的对象进行“相等”、“不等”的比较,当事实为“真”时,比较结果用1表示;事实为“假”时,比较结果用0表示。 4.3 符号表达式中的置换操作

1)子表达式置换操作

[RS,ssub]=subexpr(S,ssub) 运用符号变量ssub 置换子表达式,并重写S 为RS

2)通用置换指令

RES=subs(ES,old,new) 用new 置换ES 中的old 后产生RES

RES=subs(ES,new) 用new 置换ES 中的自由变量后产生RES 4.4 符号积分

求积分指令的格式如下:

intf=int(f,v) 给出f 对指定变量v 的(不带积分常数的)不定积分 intf=int(f,v ,a,b) 给出f 对指定变量v 在区间[a,b]上的定积分

例2-1 求dx x

x

x +?

11。

clear

syms x

f=sqrt((1+x)/x)/x; s=int(f,x);

s=simple(simple(s)) s =

log(1/2+x+((1+x)*x)^(1/2))-2*((1+x)*x)^(1/2)/x

4.5 符号矩阵分析

最常用的矩阵分析指令如下: det(A) 行列式|A|

[V ,D]=eig(A) 特征值分解,使AV=VD inv(A) 矩阵逆A -1

poly(A) 矩阵的特征多项式 rank(A) 矩阵秩

例2-2 求矩阵A a

a a a =?????

?11122122的行列式、逆和特征根。

syms a11 a12 a21 a22 A=[a11,a12;a21,a22]; DA=det(A) IA=inv(A) EA=eig(A) DA =

a11*a22-a12*a21 IA =

[ a22/(a11*a22-a12*a21), -a12/(a11*a22-a12*a21)] [ -a21/(a11*a22-a12*a21), a11/(a11*a22-a12*a21)] EA =

1/2*a11+1/2*a22+1/2*(a11^2-2*a11*a22+a22^2+4*a12*a21)^(1/2) 1/2*a11+1/2*a22-1/2*(a11^2-2*a11*a22+a22^2+4*a12*a21)^(1/2)

4.6 一般代数方程组的解

求方程组eq1, eq2, …, eqn 关于指定变量v1, v2,…, vn 的解的指令格式如下: S=solve(‘eq1’, ‘eq2’, …, ‘eqn ’, ‘v1’, ‘v2’,…, ‘vn ’) (推荐) S=solve(eq1, eq2, …, eqn, v1, v2,…, vn)

例2-3 求方程组uy vz w ^20++=,y z w ++=0关于z y ,的解。 S=solve('u*y^2+v*z+w=0','y+z+w=0','y','z') disp('S.y'),disp(S.y),disp('S.z'),disp(S.z) S =

y: [2x1 sym] z: [2x1 sym] S.y

-1/2/u*(-2*u*w-v+(4*u*w*v+v^2-4*u*w)^(1/2))-w -1/2/u*(-2*u*w-v-(4*u*w*v+v^2-4*u*w)^(1/2))-w S.z

1/2/u*(-2*u*w-v+(4*u*w*v+v^2-4*u*w)^(1/2)) 1/2/u*(-2*u*w-v-(4*u*w*v+v^2-4*u*w)^(1/2))

五、实验步骤

编程实现实验内容的要求,记录程序执行结果。 六、实验思考题

求方程2,122==+xy y x 的解。

实验三线性方程组的求解

一、实验目的

1、掌握线性方程组唯一解或特解的求解方法

2、掌握线性齐次方程组和非齐次线性方程组的通解求解方法

二、实验内容

1、求方程组

1234

1234

1234

31

3344

5980

x x x x

x x x x

x x x x

+--=

?

?

--+=

?

?+--=

?

的一个特解。

2、求方程组

1234

1234

1234

220

2220

430

x x x x

x x x x

x x x x

+++=

?

?

+--=

?

?---=

?

的通解。

3、求解方程组

1234

1234

1234

231 3532 2223

x x x x

x x x x

x x x x

-+-=

?

?

-+-=

?

?++-=

?

三、实验器材

PC机(装有MA TLAB软件)1台

四、实验原理

我们将线性方程组的求解分为两类:一类是方程组求唯一解或求特解,另一类是方程组求无穷解即通解。可以通过系数矩阵的秩来判断:

若系数矩阵的秩r = n(n 为方程组中未知变量的个数),则有唯一解;

若系数矩阵的秩r

线性方程组的无穷解= 对应齐次方程组的通解+非齐次方程组的一个特解;其特解的求法属于解的第一类问题,通解求法属第二类问题。

4.1 利用矩阵除法求线性方程组的特解(或一个解)

方程:AX=b

解法:X=A\b

例3-1求方程组

12

123

234

345

45

561

560

560

560

51

x x

x x x

x x x

x x x

x x

+=

?

?++=

??

++=

?

?++=

?

?+=

?

的特解。

解:建立M 文件LX0301.m:

A=[5 6 0 0 0;1 5 6 0 0;0 1 5 6 0;0 0 1 5 6;0 0 0 1 5]; B=[1 0 0 0 1]';

R_A=rank(A) %求秩

X=A\B %求特解

文件执行后结果如下:

R_A=

5

X=

2.2662

-1.7218

1.0571

-0.5940

0.3188

X就是方程组的解。

4.2 求线性齐次方程组的通解

在Matlab 中,函数null用来求解零空间,即满足A·X=0 的解空间,实际上是求出解空间的一组基(基础解系)。

格式:z=null %z的列向量为方程组的正交规范基,满足Z′ × Z = I z=null(A,’r’) % z的列向量是方程AX=0 的有理基

4.3求非齐次线性方程组的通解

非齐次线性方程组需要先判断方程组是否有解,若有解,再去求通解。因此,步骤为:

第一步:判断AX=b 是否有解,若有解则进行第二步;

第二步:求AX=b 的一个特解;

第三步:求AX=0 的通解;

第四步:AX=b的通解= AX=0的通解+ AX=b的一个特解。

五、实验步骤

根据实验内容的要求编写程序,求出各方程组的解。

六、实验思考题

求方程组

1234

1234

1234

31

3344

5980

x x x x

x x x x

x x x x

+--=

?

?

--+=

?

?+--=

?

的通解。

实验四 脚本文件和函数文件

一、实验目的

1、掌握常用的条件控制(if,switch )和循环控制(for,while )指令;

2、掌握脚本文件和函数文件的编写方法。 二、实验内容

1、编写程序,计算 1+3+5+7+…+(2n+1)的值。

2、已知函数???

??≤<≤--<=+-x e x x x x

y x 11111

3,编写能对任意一组输入x 值求相应y

值的程序。

三、实验器材

PC 机 (装有 MA TLAB 软件 ) 1台 四、实验原理

4.1 if-else-end 条件控制

if-else-end 指令为程序流提供了一种分支控制,它最常见的使用方式有: 1)单分支 if expr

commands end

当expr 给出“逻辑1”时,commands 指令组被执行。 2)双分支 if expr

commands1 else

commands2 end

3)多分支 if expr1

commands1 elseif expr2

commands2 …… else

commandsn end

4.2 switch-case 控制结构

若需要对不同的情形执行不同的操作,可用 switch 分支语句: switch expr

case value_1 commands1 case value_2 commands2 ……

case value_k commandsk otherwise

commands

end

若expr结果与value_i(i=1,2,…,k)相等,则执行commandsi(i=1,2,…,k);若所有case都不发生,则执行commands。

4.3 for循环和while循环

1)for循环

for 循环变量i=表达式1:表达式2:表达式3

循环体

end

说明:表达式1为循环初值,表达式2为步长(省略时默认为1),表达式3为循环终值;for语句允许嵌套。

例4-1 生成3 4阶的Hilbert矩阵。

程序:

for i=1:3

for j=1:4

H(i,j)=1/(i+j-1);

end

end

H

执行结果为:

H =

1.0000 0.5000 0.3333 0.2500

0.5000 0.3333 0.2500 0.2000

0.3333 0.2500 0.2000 0.1667

2)while循环

while expression

commands

end

4.4 建立M脚本文件

将多个可执行的系统命令,用文本编辑器编辑后存放在后缀为.m的文件中,若在MATLAB命令窗口中输入该M文件的文件名(不跟后缀.m),即可依次执行该文件中的多个命令。这个后缀为.m 的文件,也称为Matlab的脚本文件(Script File)。

注意:文件存放路径必须在Matlab能搜索的范围内。

4.5 建立函数文件

对于一些特殊用户函数,系统提供了一个用于创建用户函数的命令function,以备用户随时调用。

1、格式:

function [输出变量列表]=fun_name(输入变量列表)

用户自定义的函数体

2、函数文件名为:fun_name,注意:保存时文件名与函数名最好相同。

3、存储路径:最好在MATLAB的搜索路径上。

4、调用方法:输出变量=fun_name (输入变量)

例4-2 计算s=n!

在文本编辑器中输入: function s=pp(n) s=1;

for i=1:n s=s*i; end

将文件保存为pp.m ,并放在MATLAB 搜索路径上。此时,在MATLAB 命令窗口中输入:

s=pp(5) 可得结果: s = 120 五、实验步骤

编程实现实验内容的要求 六、实验思考题

编写分段函数() 012 1 120 x x f x x x ≤

=-≤≤???

其他的函数文件,存放于文件ff.m 中,并

计算出()3f -,12f ??

???

,f ,()f ∞的值。

实验五 二维/三维绘图

一、实验目的

1、掌握绘制二维曲线的基本指令、简单的图形标识、图形属性控制等;

2、熟悉三维曲面/网线图的基本指令。 二、实验内容

1、用图形表示连续调制波形)9sin()sin(t t y =及其包络线。

2、用曲面图表现函数22y x z +=。 三、实验器材

PC 机 (装有 MA TLAB 软件 ) 1台 四、实验原理

4.1 二维曲线和图形

MATLAB 提供了多种二维图形的绘制指令,其中,最重要、最基本的指令是plot 。

4.1.1 二维曲线绘制的基本指令plot

1. 基本调用格式plot(x,y ,'s')

该指令的输入量(x,y ,'s')称为平面绘线三元组,它们分别指定平面曲线的几何位置、点型、线型和色彩。

2. plot 的衍生调用格式

1)单色或多色绘制多条曲线 plot(X,Y ,'s') 用s 指定的点形线型色彩绘制多条曲线 plot(X,Y) 采用默认的色彩次序用细实线绘制多条曲线 2)多三元组绘制多条曲线

plot(X1,Y1,'s1',X2,Y2,'s2', ... ,Xn,Yn,'sn') 3)单输入量绘线 plot(Y)

3. plot 的属性可控调用格式

运用属性名(PropertyName )和属性值(PropertyV alue )可以对“线”对象的属性进行设置,使所绘曲线更具个性化:

plot(x, y , 's', 'PropertyName', PropertyV alue, …) 4.1.2 坐标控制和图形标识

1. 坐标轴的控制

常用的坐标控制指令如下: axis off 取消轴背景 axis on 使用轴背景

axis(V) 人工设定坐标范围。二维时,V=[x1,x2,y1,y2];三维时,

V=[x1,x2,y1,y2,z1,z2]

axis tight 把数据范围直接设为坐标范围 2. 图形标识指令

标识指令的最简捷使用格式如下: title(S) 书写图名 xlabel(S) 横坐标轴名 ylabel(S) 纵坐标轴名 3. 分割线 grid 是否画分格线的双向切换指令(使当前分格线状态翻转)

grid on 画出分格线 grid off 不画分格线 4.1.3 多次叠绘和多子图

1. 多次叠绘

hold on 使当前轴及图形保持而不被刷新,准备接受此后将绘制的新曲线 hold off 使当前轴及图形不再具备不被刷新的性质 hold 当前图形是否具备刷新性质的双向切换开关 2. 多子图

MATLAB 允许用户在同一个图形窗里布置几幅独立的子图。具体指令是: subplot(m,n,k) 使)(n m ?幅子图中的第k 幅成为当前图

4.2 三维曲线和曲面

1. 三维线图指令plot3

plot3(X,Y ,Z,'s') 用s 指定的点形线型色彩绘制曲线 plot3(X1,Y1,Z1,'s1',X2,Y2,Z2,'s2', ... ) 用s1, s2,…指定的点形线型色彩绘

制多类曲线

2. 绘制曲面/网线图的基本指令

[X,Y]=meshgrid(x,y) 生成x-y 平面上的自变量“格点”矩阵 surf(X,Y ,Z) 最常用的曲面图调用格式 mesh(X,Y ,Z) 最常用的网线图调用格式

五、实验步骤

1. 编程绘制图形;

2. 保存并打印图形。 六、实验思考题

已知椭圆的长、短轴a=4,b=2,用“小红点线”画椭圆???==t

b y t

a x sin cos 。

实验六 SIMULINK 仿真

一、实验目的

1、熟悉SIMULINK 工作环境;

2、学会使用SIMULINK 解决专业课程中的问题。 二、实验内容

在图7-1所示的电路中,已知H L 1=,F C 1=,Ω=5.01R ,Ω==132R R ,V V C 1)0(-=-,A i L 1)0(=-,

V V s 10=,开关K 在0=t 时闭合。试采用SIMULINK 的SimPowerSystems 模块库器件进行元件级仿真。

图7-1 二阶RLC 电路

三、实验器材

PC 机 (装有 MA TLAB 软件 ) 1台 四、实验原理

SIMULINK 是MATLAB 最重要的组件之一,它向用户提供一个动态系统建模、仿真和综合分析的集成环境。在这环境中,用户无须书写大量的程序,而只需通过简单直观的鼠标操作,选取适当的库模块,就可构造出复杂的仿真模型。

创建动态系统SIMULINK 模型一般步骤如下:

1、首先写出描写系统动力学的全部方程,包括微分方程、差分方程、代数方程等。

2、打开SIMULINK 模块库,引出SIMULINK 工作环境。

3、为待建模型开启空白模型窗。

4、根据理论数学模型,在SIMULINK 模块库中选择所需的模块,并将其复制到空白模型窗。

5、假如模块结构不符合数学模型要求,那么在勾画信号线之前,必须先设置模块中影响结构的参数。

6、根据理论数学模型,借助鼠标勾画各模块间的信号连线,使之成为系统。

7、再根据理论数学模型,从系统角度出发,对各模块的非结构参数进行设置。

8、根据经验或采用默认方法,对仿真解算器和仿真终止时间进行设置。 9、给新建模型起适当的名字加以保存。

10、运行SIMULINK 模块模型,并根据情况进行适当调试。 11、保存调试好的SIMULINK 模型,以供仿真研究使用。

就仿真模型逼近被仿真系统的真实程度而言,这样所建立的SIMULINK 模型属于功能级仿真模型。这种模型所使用的模块与真实的物理器件之间不存在一一对应的关系;这种模型的构建以抽象了的数学模型为基础。较早的SIMULINK ,就是进行功能级仿真的软件环境。但最近发布的几个SIMULINK 版本,已经在

某些专业领域把仿真推进到了元器件级。 五、实验步骤

按实验内容题目的要求,进行仿真:

1、根据电路的结构、器件的类型从SimPowerSystems 库中调用器件模块至模型窗;

2、设置模块参数;

3、勾画元器件间的连接,对元器件和连线进行适当的排列,以获得一个排列整齐、便于观察阅读的仿真模型;

4、营造SimPowerSystems 仿真环境的模块;

5、选定仿真模型形式;

6、设定模型初始状态;

7、保存文件,运行仿真。 六、实验思考题

已知某连续系统的微分方程为x x x 1002-'-='',且05.0)0(=x ,0)0(='x 。试创建该系统的SIMULINK 模型,并进行仿真运行。

Matlab实验指导书

实验一 Matlab使用方法和程序设计 一、实验目的 1、掌握Matlab软件使用的基本方法; 2、熟悉Matlab的数据表示、基本运算和程序控制语句; 3、熟悉Matlab绘图命令及基本绘图控制; 4、熟悉Matlab程序设计的基本方法。 二、实验内容 1、帮助命令 2、矩阵运算 (1)矩阵的乘法和乘方 已知A=[1 2;3 4]:B=[5 5;7 8]:求A^2*B ( 2 )矩阵除法 已知A=[1 2 3:4 5 6:7 8 9]:B=[1 0 0:0 2 0:0 0 3],求矩阵左除A\B,右除A/B。 ( 3 )矩阵的转置及共轭转置 已知A=[5+i,2-i,1;6*i,4,9-i],求该复数矩阵的转置A',共轭转置A.' ( 4 )使用冒号选出指定元素 已知:A=[1 2 3:4 5 6:7 8 9];求A中第3列前2个元素;A中第2、3行元素。 ( 5 )方括号[] 用magic函数生成一个4阶魔术矩阵,删除该矩阵的第四列 3、多项式 (1)求多项式P(x)=x3-2x-4的根 ( 2 )已知A=[1.2 3 5 0.9;5 1.7 5 6;3 9 0 1;1 2 3 4].,构造多项式,并计算多项式值为20的解。 4、基本绘图命令 ( 1 ) 绘制余弦曲线 ] 2,0[ ), cos(π ∈ =t t y 。 ( 2 ) 在同一坐标系中绘制曲线 ] 2,0[ ), 5.0 sin( ), 25 .0 cos( yπ ∈ - = - =t t y t 5、基本绘图控制 绘制 ] 4,0[π 区间上的y=10sint曲线,并要求: (1)线形为点划线,颜色为红色,数据点标记为加号; (2)坐标轴控制:显示范围,刻度线,比例,网络线; (3)标注控制:坐标轴名称,标题,相应文本。 6、基本程序设计 (1)编写命令文件:计算1+2+....+n<2000时的最大n值; (2)编写函数文件:分别用n和which循环结构编写程序,求2的0到n次幂的和. n=input('输入正数n:') ji=1: for i=1:n; ji=ji+2^i: end ji input('输入正数n:') ji-1:i-1: While i<=n ji=ji+2^i; i=i+1; end ji (3)如果想对一个变量x赋值,当从键盘输入y或Y时,x自动赋为1;当从键盘输入n或N时,x自 动赋为0;输入其他字符时终止程序。 k=input('shuruX:'.'s'): if k=='y' k=='Y' x=1 ; else k=='n' k=='N' x=0; else ruturn end >> n=input('输入正数n:') 输入正数n:20 n =20

实验二 Matlab程序设计基本方法1

实验二Matlab程序设计基本方法 覃照乘自092 电气工程学院 一、实验目的: 1、熟悉MATLAB 程序编辑与设计环境 2、掌握各种编程语句语法规则及程序设计方法 3、函数文件的编写和设计 4、了解和熟悉跨空间变量传递和赋值 二、实验基本知识: ◆for循环结构 语法:for i=初值:增量:终值 语句1 …… 语句n end 说明:1.i=初值:终值,则增量为1。 2.初值、增量、终值可正可负,可以是整数,也可以是小数,只须符合数学逻辑。 ◆while 循环结构 语法:while 逻辑表达式 循环体语句 end 说明:1、whiIe结构依据逻辑表达式的值判断是否执行循环体语勾。若表达式的值为真,执行循环体语句一次、在反复执行时,每次都要进行判断。若表达 式的值为假,则程序执行end之后的语句。 2、为了避免因逻辑上的失误,而陷入死循环,建议在循环体语句的适当位 置加break语句、以便程序能正常执行。(执行循环体的次数不确定; 每一次执行循环体后,一定会改变while后面所跟关系式的值。) 3、while循环也可以嵌套、其结构如下:

while逻辑表达式1 循环体语句1 while逻辑表达式2 循环体语句2 end 循环体语句3 end ◆if-else-end分支结构 if 表达式1 语句1 else if 表达式2(可选) 语句2 else(可选) 语句3 end end 说明:1.if结构是一个条件分支语句,若满足表达式的条件,则往下执行;若不满足,则跳出if结构。 2.else if表达式2与else为可选项,这两条语句可依据具体情况取舍。 3.注意:每一个if都对应一个end,即有几个if,记就应有几个end。 ◆switch-case结构 语法:switch表达式 case常量表达式1 语句组1 case常量表达式2 语句组2 …… otherwise 语句组n end

MATLAB实验指导书

实验一MATLAB 工作环境熟悉及简单命令的执行 一、 实验目的:熟悉MATLAB 的工作环境,学会使用MATLAB 进行一些简单的运算。 二、 实验内容:MATLAB 的启动和退出,熟悉MATLAB 的桌面(Desktop ),包括菜单 (Menu )、工具条(T oolbar )、命令窗口(Command Window)、历史命令窗口、工作 空间(Workspace)等;完成一些基本的矩阵操作;学习使用在线帮助系统。 三、实验步骤: 1、启动MATLAB ,熟悉MATLAB 的桌面。 2、在命令窗口执行命令完成以下运算,观察workspace 的变化,记录运算结果。 (1)(365-52?2-70)÷3; (2)area=pi*2.5^2; (3)已知x=3,y=4,在MATLAB 中求z : ()23 2y x y x z -= ; (4)将下面的矩阵赋值给变量m1,在workspace 中察看m1在内存中占用的字节数。 m1=???? ? ???? ???11514412679810115133216 执行以下命令 >>m1( 2 , 3 ) >>m1( 11 ) >>m1( : , 3 ) >>m1( 2 : 3 , 1 : 3 ) >>m1( 1 ,4 ) + m1( 2 ,3 ) + m1( 3 ,2 ) + m1( 4 ,1) (5)执行命令>>help abs 查看函数abs 的用法及用途,计算abs( 3 + 4i ); (6)执行命令 >>x=0:0.1:6*pi; >>y=5*sin(x); >>plot(x,y) (7)运行MATLAB 的演示程序,>>demo ,以便对MATLAB 有一个总体了解。 四、思考题 1、以下变量名是否合法?为什么? (1)x2; (2)3col ; (3)_row ; (4)for ;

matlab实验2MATLAB基础知识

实验2 MATLAB基础知识 一、实验目的 1.熟悉MATLAB的数据类型 2.熟悉MATLAB的基本矩阵操作 3.熟悉MATLAB的运算符 4.熟悉MATLAB的字符串处理 二、实验内容 1.创建结构体DataTypes,属性包含MATLAB支持的所有数据类型,并通过赋值构 造结构体二维数组。 DataTypes.char=char([65]); DataTypes.string='hello'; DataTypes.int=100; DataTypes.single=1.560 DataTypes = char: 'A' string: 'hello' int: 100 single: 1.5600 >> DataTypes(2).char=char([66]); DataTypes(2).string='kugou'; DataTypes(2).int=200; DataTypes(2).single=3.14 DataTypes = 1x2 struct array with fields: char string int single 2.用满矩阵和稀疏矩阵存储方式分别构造下述矩阵。 A=

答: A = 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 B = A = 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 A = 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 A = 0 1 0 0 1 1 0 0 0 0 1 0 0 0 0 1 A = 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 1

实验3MATLAB程序设计

1,编写M 函数实现求一个数是否为素数,再编写一主程序(脚本文件),要求通过键盘输入一个整数,然后调用判断素数函数,从而确定它是否素数。 x=input('请输入一个整数x:'); if myprime(x) disp('您输入的整数x是一个素数。') else disp('您输入的数x不是一个素数。') end function y=myprime(x) y=1; for i=2:fix(sqrt(x)) if mod(x,i)==0 y=0; end end 2,编写M 函数统计一数值中零的个数,然后编写脚本文件,实现统计从1—2007 中零的总个数。 function num=number0(a) %统计十进制数值中0的个数 sa=num2str(a);%将数值装化为字符串 num=length(find(sa=='0'));% ));%求取字符串中'0’的个数 y=0;

for a=1:2006 num=number0(a); y=num+y; end disp(y) 504 3,编写程序计算x∈[-3,3],字长0.01:并画出曲线x = -3:0.01:3; y=zeros(size(x)); for i = 1:length(x) if -3<= x(i)& x(i)<=-1 y(i)=(-x(i).^2-4*x(i)-3)/ 2; elseif -1<= x(i) & x(i)<=1 y(i)=-x(i).^2+1; elseif 1<=x(:,i)<=3 y(i)=(-x(i).^2+4*x(i)-3)/2; end end plot(x,y) -3-2-10123

matlab基础实验

实验一 MATLAB基础知识 一、实验目的 1.熟练掌握Matlab的启动与退出; 2. 熟悉Matalb的命令窗口,常用命令和帮助系统; 3. 熟悉Matalb的数据类型; 4. 熟悉Matlab的基本矩阵操作,运算符和字符串处理 二、实验设备 1.方正电脑 2.MATLAB软件 三、实验内容 1. 已知矩阵 A=[3 4 -1 1 -9 10;6 5 0 7 4 -16;1 -4 7 -1 6 -8;2 -4 5 -6 12 -8;-3 6 -7 8 -1 1;8 -4 9 1 3 0] 写出完成下列操作的命令: (1) 将矩阵A的第2-5行中第1,3,5列元素赋给矩阵B; (2) 删除矩阵A的第7号元素; (3) 将矩阵A的每个元素加上30; (4) 求矩阵A的大小和维数; (5) 将矩阵A的右下角3*2矩阵构成矩阵C; (6) 输出[-5,5]范围内的所有元素; 程序: A=[3 4 -1 1 -9 10;6 5 0 7 4 -16;1 -4 7 -1 6 -8;2 -4 5 -6 12 -8;-3 6 -7 8 -1 1;8 -4 9 1 3 0] %(1) B=A(2:5,[1 3 5]) %(2) A2=A; A2(7)=[] %(3) A3=A+30 %(4) length(A) size(A) %(5) C=A(end-2:end,end-1:end) %(6) A6=A.*(A>=-5 & A<=5) 结果: A =

3 4 -1 1 -9 10 6 5 0 7 4 -16 1 -4 7 -1 6 -8 2 -4 5 -6 12 -8 -3 6 -7 8 -1 1 8 -4 9 1 3 0 B = 6 0 4 1 7 6 2 5 12 -3 -7 -1 A2 = Columns 1 through 7 3 6 1 2 -3 8 5 Columns 8 through 14 -4 -4 6 -4 -1 0 7 Columns 15 through 21 5 -7 9 1 7 -1 - 6 Columns 22 through 28 8 1 -9 4 6 12 -1 Columns 29 through 35 3 10 -16 -8 -8 1 0 A3 = 33 34 29 31 21 40 36 35 30 37 34 14

刘卫国版MATLAB程序设计与应用课后实验六八九

实验六 高层绘图操作 %第一题: 程序代码如下: x=linspace(0,2*pi,101); y=(0.5+3*sin(x)./(1+x.^2)).*cos(x); plot(x,y) 01234567 -1 -0.5 0.5 1 1.5 %第二题: %(1) 程序代码如下: x=linspace(-2*pi,2*pi,100); y1=x.^2; y2=cos(2*x); y3=y1.*y2; plot(x,y1,'b-',x,y2,'r:',x,y3,'y--'); text(4,16,'\leftarrow y1=x^2'); text(6*pi/4,-1,'\downarrow y2=cos(2*x)'); text(-1.5*pi,-2.25*pi*pi,'\uparrow y3=y1*y2');

-8 -6 -4 -2 2 4 6 8 -30-20 -10 10 20 30 40 %(2) 程序代码如下: x=linspace(-2*pi,2*pi,100); y1=x.^2; y2=cos(2*x); y3=y1.*y2; subplot(1,3,1);%分区 plot(x,y1); title('y1=x^2');%设置标题 subplot(1,3,2); plot(x,y2); title('y2=cos(2*x)'); subplot(1,3,3); plot(x,y3); title('y3=x^2*cos(2*x)');

-10 10 0510 15202530 35 40y1=x 2 -10 10 -1-0.8 -0.6 -0.4-0.200.20.4 0.6 0.8 1y2=cos(2*x) -10 10 -30-20 -10 10 20 30 40 y3=x 2*cos(2*x) %(3) 程序代码如下: x=linspace(-2*pi,2*pi,20); y1=x.^2; subplot(2,2,1);%分区 bar(x,y1); title('y1=x^2的条形图');%设置标题 subplot(2,2,2); stairs(x,y1); title('y1=x^2的阶梯图'); subplot(2,2,3); stem(x,y1); title('y1=x^2的杆图'); subplot(2,2,4); fill(x,y1,'r');%如果少了'r'则会出错 title('y1=x^2的填充图'); %其他的函数照样做。

MATLAB)课后实验答案[1]

实验一 MATLAB 运算基础 1. 先求下列表达式的值,然后显示MATLAB 工作空间的使用情况并保存全部变量。 (1) 0 12 2sin 851z e =+ (2) 21ln(2 z x =,其中2 120.45 5i x +??=? ?-?? (3) 0.30.330.3sin(0.3)ln , 3.0, 2.9,,2.9,3.022a a e e a z a a --+= ++=--L (4) 2242011 122123t t z t t t t t ?≤

4. 完成下列操作: (1) 求[100,999]之间能被21整除的数的个数。 (2) 建立一个字符串向量,删除其中的大写字母。解:(1) 结果: (2). 建立一个字符串向量例如: ch='ABC123d4e56Fg9';则要求结果是:

实验二 MATLAB 矩阵分析与处理 1. 设有分块矩阵33322322E R A O S ?????? =? ??? ,其中E 、R 、O 、S 分别为单位矩阵、随机矩阵、零矩阵和对角阵,试通过数值计算验证2 2 E R RS A O S +?? =???? 。 解: M 文件如下; 5. 下面是一个线性方程组: 1 231 1 12340.951110.673450.521114 5 6x x x ?? ??????????????=??? ??????????????????? (1) 求方程的解。 (2) 将方程右边向量元素b 3改为0.53再求解,并比较b 3的变化和解的相对变化。 (3) 计算系数矩阵A 的条件数并分析结论。 解: M 文件如下: 123d4e56g9

MATLAB程序设计实验报告

MATLAB 程序设计实验报告 一、实验目的 1. 通过实验熟悉MATLAB 仿真软件的使用方法; 2. 掌握用MATLAB 对连续信号时域分析、频域分析和s 域分析的方法,利用绘图命令绘制出典型信号的波形,了解这些信号的基本特征; 3. 掌握用MATLAB 对离散信号时域分析、频域分析和z 域分析的方法,利用绘图命令绘制出典型信号的波形,了解这些信号的基本特征; 4. 通过绘制信号运算结果的波形,了解这些信号运算对信号所起的作用。 二、实验设备 1. 计算机 : 2. MATLAB R2007a 仿真软件 三、实验原理 对系统的时域分析 信号的时域运算包括信号的相加、相乘,信号的时域变换包括信号的平移、反折、倒相及信号的尺度变换。 (1)信号的相加和相乘:已知信号)(1t f 和)(2t f ,信号相加和相乘记为 )()(1t f t f =)(2t f +;)()(1 t f t f =)(2t f *。 (2)信号的微分和积分:对于连续时间信号,其微分运算是用diff 函数来完成的,其语句格式为:diff(function,’variable’,n),其中function 表示需要进行求导运算的信号,或者被赋值的符号表达式;variable 为求导运算的独立变量;n 为求导的阶数,默认值为求一阶导数。连续信号的积分运算用int 函数来完成,语句格式为:diff(function,’variable’,a,b),其中function 表示需要进行被积信号,或者被赋值的符号表达式;variable 为求导运算的独立变量;a,b 为积分上、下限,a 和b 省略时为求不定积分。 (3)信号的平移、翻转和尺度变换 信号的平移包含信号的左移与右移,信号的翻转包含信号的倒相与折叠,平移和翻转信号不会改变信号)(t f 的面积和能量。信号的尺度变换是对信号)(t f 在时间轴上的变化,可使信号压缩或扩展。)(at f 将原波形压缩a 倍,)/(a t f 将原波形扩大a 倍。 ¥ 对系统频率特性的分析

MATLAB基础及应用实验指导书

MATLAB基础及应用实验指导书

MATLAB基础及应用课程实验指导书 实验一软件环境和基本操作熟悉 一、实验目的 ①熟悉MATLAB 主界面,并学会简单的菜单操作。 ②学会简单的矩阵输入与信号输入。 ③掌握部分绘图函数。 二、实验内容 熟悉MATLAB操作环境,通过简单操作熟悉MATLAB的基本使用方法。 三、实验要求与步骤 1、用户第一次使用MATLAB 时,建议首先在屏幕上键入demo 命令,它将启动MATLAB 的演试程序,用户可在此演示程序中领略MATLAB 所提供的强大的运算与绘图功能。也可以键入help 进行进一步了解。 MATLAB 启动界面如图所示: MATLAB 语言最基本的赋值语句结构为:变量名列表= 表达式。表达式由操作符或其它字符,函数和变量名组成,表达式的结果为一个矩阵,显示在屏幕上,同时输送到一个变量中并存放于工作空间中以备调用。如果变量名和“= ”省略,则ans 变量将自动建立,例如键入:1900/81 ,得到输出结果:ans =23.4568 。 MATLAB 中变量命名的原则要求必须以英文字母开头,文件夹名字中可以

还包括、下划线和数字,不要使用其他的字符,更不要单纯使用数字或者中文名命名,有时在运行MATLAB 中一些莫名的错误可能就是不规范的命名引起的。这种规则包括将来为自己编写的脚本文件、函数文件命名以及为使用的变量命名也应遵循这个规则。 2、用户工作目录和当前目录的建立和设置 1)为管理方便,每个用户在使用MATLAB 前,尽量为自己建立一个专门的工作目录,即“用户目录”,用来存放自己创建应用文件。例如首先打开资源管理器,在E 驱动器下可以根据自己喜好建立一个新文件夹,但应注意:该文件夹必须以英文开头,文件夹名字中可以包括字母、下划线和数字,不要使用其他的字符,更不要单纯使用数字或者中文名命名,有时在运行MATLAB 中一些莫名的错误可能就是不规范的命名引起的,这与MATLAB 中为变量和文件名命名原则是一致的。尽管MATLAB\work 允许用户存放用户文件,但最好把它仅作为临时工作目录来使用。 2)为了用户运行方便,在开始工作前可把用户定义的目录设置为当前目录,方法是可直接在MATLAB 命令窗口桌面上方通过目录设置栏来实现。 3)把自己的工作目录加到MATLAB 搜索路径上,这样可以在任何情况下方便地调用自己的编写文件。MATLAB 工作时,基本搜索过程为:首先在工作空间,即MATLAB 内存中进行检查,看输入的指令是不是变量;如不是,则检查输入指令是不是内建函数(比如sin 函数等);如不是,则在当前目录上,检查是否有与输入指令相同的M 文件存在;如还没有,则在MATLAB 定义的搜索路径其他目录中,检查是否有该M 文件存在。设置方法是通过File 菜单下设置路径对话框进行。 3、熟悉简单的矩阵输入 1)从屏幕上输入矩阵A=[1 2 3 ;4 5 6;7 8 9] 回车 A=[1,2,3;4,5,6;7,8,9] 回车 观察输出结果。 2)试用回车代替分号,观察输出结果。 3)输入size(A) ,观察结果。 4)输入矩阵B=[9,8,7;6,5,4;3,2,1];回车 输入矩阵C=[4,5,6;7,8,9;1,2,3];回车,然后分别键入 A B C 回车观察结果。 5)选择File | new 菜单中的M-file ,输入B=[9,8,7;6,5,4;3,2,1] ;保存为

Matlab程序设计实验报告

实验七Matlab 程序设计 实验目的: 1、掌握建立和执行M 文件的方法; 2、掌握实现选择结构的方法; 3、掌握实现循环结构的方法。 实验内容: 1. 编写用 5 次多项式拟合函数y=sin(x), x [0, 2 ]的脚本M 文件,要求绘图观察拟合的效果。 function shiyan1 x=0:0.5:2*pi y=sin(x) p=polyfit(x,y,5) x1=0:0.2:2*pi y1=polyval(p,x1) plot(x,y, 'b' ,x1,y1, '*r' x =

Columns 1 through 9 0 0.5000 1.0000 1.5000 2.0000 2.5000 3.0000 3.5000 4.0000 Columns 10 through 13 4.5000 5.0000 5.5000 6.0000 y = Columns 1 through 9 0 0.4794 0.8415 0.9975 0.9093 0.5985 0.1411 -0.3508 -0.7568 Columns 10 through 13 -0.9775 -0.9589 -0.7055 -0.2794 p = -0.0056 0.0881 -0.3967 0.2671 0.8902 0.0029 x1 = Columns 1 through 10 0 0.2000 0.4000 0.6000 0.8000 1.0000 1.2000 1.4000 1.6000 1.8000 Columns 11 through 20

2. 2.2000 2.4000 2.6000 2.8000 3.0000 3.2000 3.4000 3.6000 1.8001 Columns 21 through 30 4.0 4.2000 4.4000 4.6000 4.8000 5.0000 5.2000 5.4000 5.6000 5.8000 Columns 31 through 32 6.0 6.2000 y1 = Columns 1 through 10 0.29 0.1886 0.3786 0.5585 0.7172 0.8461 0.9391 0.9926 1.0048 0.9761 Columns 11 through 20 0.9083 0.8048 0.6701 0.5098 0.3301 0.1381 -0.0590 -0.2538 -0.4389 -0.6073 Columns 21 through 30 -0.7524 -0.8685 -0.9505 -0.9949 -0.9991 -0.9626 -0.8863 -0.7732 -0.6288 -0.4606 Columns 31 through 32

matlab实验4MATLAB基本编程

实验4 MATLAB 基本编程 一、实验目的 1. 熟悉MATLAB 的脚本编写 2. 熟悉MATLAB 的函数编写 3. 熟悉MATLAB 的变量使用 4. 熟悉MATLAB 的程序控制结构 二、实验内容 1. 分别选用if 或switch 结构实现下述函数表示。 -1 x ≤-a f(x)= x/a -a ≤<--≤<≤<--≤=d x d x c d x d c c x b b x a a x a b a x x f 0)(11)(10)(

昆明理工大学MATLAB实验指导书(第二次实验)

************************ MATLAB上机指导书 ************************ 昆明理工大学机电学院 彭用新 2015年3月

实验三符号计算 一、操作部分:在命令窗口执行命令完成以下运算,记录运算结果。 1.findsym:帮助我们获取系统定义的自变量 f= sym('sin(a*x+b*y)'); findsym(f) 2.numden(获取分子分母), sym2poly,(获取多项式时系数)poly2sym(根据多项式系 数获得符号表达式) [n,d]=numden(sym('x*x+y')+sym('y^2')) p=sym('2*x^3+3*x^2+4'); sym2poly(p) x=[2,3,0,4]; poly2sym(x) 3. collect :合并同类项;expand:展开多项式;horner: 分解成嵌套形式;factor:因式 分解;simplify: 对表达式化简 syms x y; collect(x^2*y+y*x-x^2-2*x) collect((x+y)*(x^2+y^2+1), y) syms x y; expand((x-2)*(x-4)) syms x;horner(x^3-6*x^2+11*x-6) syms x;factor(x^3-6*x^2+11*x-6) syms x;simplify((x^2+5*x+6)/(x+2)) 4. finverse :求得符号函数的反函数。 syms x y; finverse(1/tan(x)) f= x^2+y; finverse(f,y) finverse(f) https://www.doczj.com/doc/6d2882392.html,pose 求符号函数的复合函数 syms x y; f = 1/(1 + x^2); g = sin(y); compose(f,g) 6. subs :表达式替换。 syms a b;subs(a+b,a,4)

MATLAB程序设计及经典例题解析3

MATLAB程序设计 用MATLAB语言编写的程序,称为M文件。M文件可以根据调用方式的不同分为两类:命令文件(Script File)和函数文件(Function File)。 例3-1 分别建立命令文件和函数文件,将华氏温度f转换为摄氏温度c。 程序1:首先建立命令文件并以文件名f2c.m存盘。 clear; %清除工作空间中的变量 f=input('Input Fahrenheit temperature:'); c=5*(f-32)/9 然后在MATLAB的命令窗口中输入f2c,将会执行该命令文件,执行情况为: Input Fahrenheit temperature:73 c =22.7778 程序2:首先建立函数文件f2c.m。 function c=f2c(f) c=5*(f-32)/9 然后在MATLAB的命令窗口调用该函数文件。 clear; y=input('Input Fahrenheit temperature:'); x=f2c(y) 输出情况为: Input Fahrenheit temperature:70 c =21.1111 x =21.1111 3.1.2 M文件的建立与打开 M文件是一个文本文件,它可以用任何编辑程序来建立和编辑,而一般常用且最为方便的是使用MATLAB提供的文本编辑器。

1.建立新的M文件 为建立新的M文件,启动MATLAB文本编辑器有3种方法: (1) 菜单操作。从MATLAB主窗口的File菜单中选择New菜单项,再选择M-file命令,屏幕上将出现MATLAB 文本编辑器窗口。 (2) 命令操作。在MATLAB命令窗口输入命令edit,启动MATLAB文本编辑器后,输入M文件的内容并存盘。 (3) 命令按钮操作。单击MATLAB主窗口工具栏上的New M-File命令按钮,启动MATLAB文本编辑器后,输入M文件的内容并存盘。 2.打开已有的M文件 打开已有的M文件,也有3种方法: (1) 菜单操作。从MATLAB主窗口的File菜单中选择Open命令,则屏幕出现Open对话框,在Open对话框中选中所需打开的M文件。在文档窗口可以对打开的M文件进行编辑修改,编辑完成后,将M文件存盘。 (2) 命令操作。在MATLAB命令窗口输入命令:edit 文件名,则打开指定的M文件。 (3) 命令按钮操作。单击MATLAB主窗口工具栏上的Open File命令按钮,再从弹出的对话框中选择所需打开的M文件。 3.2 程序控制结构 3.2.1 顺序结构 1.数据的输入 从键盘输入数据,则可以使用input函数来进行,该函数的调用格式为: A=input(提示信息,选项); 其中提示信息为一个字符串,用于提示用户输入什么样的数据。 如果在input函数调用时采用's'选项,则允许用户输入一个字符串。例如,想输入一个人的姓名,可采用命令: xm=input('What''s your name?','s'); 2.数据的输出 MATLAB提供的命令窗口输出函数主要有disp函数,其调用格式为

D实验五 M文件和MATLAB程序设计

实验五M文件和MATLAB程序设计 一、实验目的 matlab作为一种高级计算机语言,不仅可以命令行方式完成操作,也具有数据结构、控制流、输入输出等能力,本次实验通过熟悉和掌握m文件的建立与使用方法,以及函数与控制程序流程语句的使用,使学生具备一定的编程和程序调试能力。 1.掌握M文件的使用方法。 2.掌握if语句和switch语句的使用 3. 掌握循环语句的使用 4. 通过练习理解MATLAB编程方法。 二、实验原理 1.m文件 用matlab语言编写的程序,称为m文件。M文件根据调用方式的不同分为两类,命令文件(Script file)和函数文件(Function file)。区别? 2.程序控制结构 1)顺序结构 2)选择结构 (1)if语句a) 单分支if语句b) 双分支if语句c) 多分支if语句 (2)switch 语句 (3)try语句 3)循环结构 (1)for 语句 (2)while语句 (3)break语句、continue语句、return使用,区别? 3.函数文件 function 输出形参表=函数名(输入形参表) 注释说明部分 函数体语句 注意事项? 三、实验要求 1.首先上机练习PPT中各种流程控制语句的有关实例。 2.然后上机练习下面的实验习题。 四、实验习题

1.数论中一个有趣的题目:任意一个正整数,若为偶数,则用2除之,若为奇数,则与3相乘再加上1。重复此过程,最终得到的结果为1。如: 2→1 3→10→5→16→8→4→2→1 6→3→10→5→16→8→4→2→1 运行下面的程序,按程序提示输入n=1,2,3,5,7,8,9等数来验证这一结论。 %classic "3n+1" problem from number theory. while 1 n=input('Enter n,negative quits:'); if n<=0 break end a=n; while n>1 if rem(n,2)==0 n=n/2; else n=3*n+1; end a=[a,n]; end a end Enter n,negative quits: 2. 编程求满足∑=>m i i 11000020的最小m 值。 a=0; i=1; while (a<100000) a=a+pow2(i); i=i+1; end m=i-1 3. 编写一个函数,计算下面函数的值,给出x 的值,调用该函数后,返回y 的值。 function [y]=myfun1(x)

实验一 Matlab基本操作(2016)

实验一 MATLAB 基本操作 一、实验目的 1. 学习和掌握MA TLAB 的基本操作方法 2. 掌握命令窗口的使用 3. 熟悉MATLAB 的数据表示、基本运算 二、实验内容和要求 1. 实验内容 1) 练习MATLAB7.0或以上版本 2) 练习矩阵运算与数组运算 2. 实验要求 1) 每位学生独立完成,交实验报告 2) 禁止玩游戏! 三、实验主要软件平台 装有MATLAB7.0或以上的PC 机一台 四、实验方法、步骤及结果测试 1. 实验方法:上机练习。 2. 实验步骤: 1) 开启PC ,进入MA TLAB 。 2) 使用帮助命令,查找sqrt 函数的使用方法 答: help sqrt 3) 矩阵、数组运算 a) 已知 ??????????=987654321A ,???? ??????=963852741B ,求)2()(A B B A -?+ 答: A=[1, 2, 3; 4, 5, 6; 7, 8, 9]; B=[1, 4, 7; 2, 5, 8; 3, 6, 9]; (A+B)*(2*B-A) b) 已知?? ????-=33.1x ,??????=π24y ,求T xy ,y x T c) 已知??????????=987654321A ,???? ??????=300020001B ,求A/B, A\B. d) 已知???? ??????=987654321A ,求:(1) A 中第三列前两个元素;(2) A 中所有第二行元素;(3) A 中四个角上的元素;(4) 交换A 的第1、3列。(5) 交换A 的第1、2行。(6) 删除A 的第3列。

e) 已知[]321=x ,[]654=y ,求:y x *.,y x /.,y x \.,y x .^, 2.^x ,x .^2。 f) 给出x=1,2,…,7时,x x sin 的值。 3)常用的数学函数 a )随机产生一个3x3的矩阵A ,求:(1) A 每一行的最大、最小值,以及最大、最小值所在的列;(2) A 每一列的最大、最小值,以及最大、最小值所在的行;(3) 整个矩阵的最大、最小值;(4) 每行元素之和;(5) 每列元素之和;(6) 每行元素之积;(7) 每列元素之积。 b) 随机产生两个10个元素的向量x ,y 。(1) 求x 的平均值、标准方差。(2) 求x ,y 的相关系数。(3)对x 排序,并记录排序后元素在原向量中的位置。 4) 字符串操作函数 建立一个字符串向量(如‘ABc123d4e56Fg9’),然后对该向量做如下处理: (1) 取第1~5个字符组成的子字符串。 (2) 将字符串倒过来重新排列。 (3) 将字符串中的小写字母变成相应的大写字母,其余字符不变。 (4) 统计字符串中小写字母的个数。

MATLAB实验指导书(学生定稿)

实验一 MATLAB语言平台及基本运算 一、实验目的 1、熟悉MATLAB基本的操作界面。 2、掌握MATLAB中变量、数组、向量等对象的生成方法。 3、掌握矩阵的生成和基本运算方法。 4、掌握MATLAB中的常用绘图命令使用方法 二、实验设备 计算机,MATLAB语言环境 三、实验指导原理 1、常见数学函数 如:输入 x=[-4.85 -2.3 -0.2 1.3 4.56 6.75],则 ceil(x)= -4 -2 0 2 5 7 fix(x) = -4 -2 0 1 4 6 floor(x) = -5 -3 -1 1 4 6 round(x) = -5 -2 0 1 5 7 系统的在线帮助 (1) help 命令: 1).当不知系统有何帮助内容时,可直接输入 help以寻求帮助: >> help(回车) 2).当想了解某一主题的内容时,如输入: >> help syntax (了解 Matlab 的语法规定) 3).当想了解某一具体的函数或命令的帮助信息时,如输入: >> help sqrt (了解函数 sqrt 的相关信息)

(2) lookfor 命令 现需要完成某一具体操作,不知有何命令或函数可以完成,如输入: >> lookfor line (查找与直线、线性问题有关的函数) 3、常量与变量 系统的变量命名规则:变量名区分字母大小写;变量名必须以字母打头,其后 可以是任意字母,数字,或下划线的组合。此外,系统内部预先定义了几个有特殊意义和用途的变量,见下表: (1)数值型向量(矩阵)的输入 1).任何矩阵(向量),可以直接按行方式输入每个元素:同一行中的元素用逗号(,)或者用空格符来分隔;行与行之间用分号(;)分隔。所有元素处于一方括号([ ]内;例1: >> Time = [11 12 1 2 3 4 5 6 7 8 9 10] >> X_Data = [2.32 3.43;4.37 5.98] 2).系统中提供了多个命令用于输入特殊的矩阵: 上面函数的具体用法,可以用帮助命令 help 得到。如:help zeros ZEROS Zeros array. ZEROS(N) is an N-by-N matrix of zeros. ZEROS(M,N) or ZEROS([M,N]) is an M-by-N matrix of zeros.等等 4、数组(矩阵)的点运算 运算符:+(加)、-(减)、./(右除)、.\(左除)、.^(乘方), 例4: >> g = [1 2 3 4];h = [4 3 2 1]; >> s1 = g + h, s2 = g.*h, s3 = g.^h, s4 = g.^2, s5 = 2.^h 5、矩阵的运算

矩量法matlab程序设计实例

矩量法m atla b程序设计实例: Ha llen 方程求对称振子天线 一、条件与计算目标 已知: 对称振子天线长为L,半径为a ,且天线长度与波长得关系为,,设,半径a=0、0000001,因此波数为。 目标: 用H all en 方程算出半波振子、全波振子以及不同值得对应参数值。 求:(1)电流分布 (2)E 面方向图 (二维),H 面方向图(二维),半波振子空间方向性图(三维) 二、对称振子放置图 图1 半波振子得电流 分布 半波振子天线平行于z 轴放置,在x轴与y轴上得分量都为零,坐标选取方式有两种形式,一般选取图1得空间放置方 式。图1给出了天线得电流分布情况,由图可知,当天线很细时,电流分布近似正弦分布。 三、Ha llen 方程 得解题思路 ()()()()2 1 ' ' ' ' 12,cos sin sin 'z z i z z z z i z k z G z z dz c kz c kz E k z z dz j ωμ'++=-?? 对于中心馈电得偶极子,Hallen 方程为 ()22'1222 ('),'cos sin sin ,2L L i L L V i z G z z dz c kz c kz k z z j η + -- ++= <<+? 脉冲函数展开与点选配,得到 ()1121 ,''cos sin sin ,1,2,,2n n N z i n m m m m z n V I G z z dz c kz c kz k z m N j η +''=++= =???∑? 上式可以写成 矩阵形式为 四、结果与分析 (1)电流分布

实验一:MATLAB软件入门(2015版)

实验一:MATLAB 软件入门 一、 实验目的及意义 [1] 熟悉MATLAB 软件的用户环境; [2] 了解MATLAB 软件的一般目的命令; [3] 掌握MATLAB 数组操作与运算函数; [4] 掌握MATLAB 软件的基本绘图命令; [5] 掌握MATLAB 语言的几种循环、条件和开关选择结构。 通过该实验的学习,使学生能灵活应用MATLAB 软件解决一些简单问题,能借助MATLAB 软件的绘图功能,对函数的特性进行探讨,广泛联想,大胆猜想,发现进而证实其中的规律。 二、实验内容 1.MATLAB 软件的数组操作及运算练习; 2.直接使用MATLAB 软件进行作图练习; 3.用MATLAB 语言编写命令M-文件和函数M-文件。 三、实验步骤 1. 在D 盘建立一个自己的文件夹; 2.开启软件平台——MATLAB ,将你建立的文件夹加入到MATLAB 的搜索路径中。 3.利用帮助了解函数max, min, sum, mean, sort, length ,rand, size 和diag 的功能和用法。 4.开启MATLAB 编辑窗口,键入你编写的M 文件(命令文件或函数文件); 5.保存文件(注意将文件存入你自己的文件夹)并运行; 6.若出现错误,修改、运行直到输出正确结果; 7.写出实验报告,并浅谈学习心得体会。 四、实验要求与任务 根据实验内容和步骤,完成以下具体实验,要求写出实验报告(实验目的→问题→算法与编程→计算结果或图形→心得体会) 1.设有分块矩阵??????=????223 22333S O R E A ,其中E,R,O,S 分别为单位阵、随机阵、零阵和对角阵,试通过数值计算验证??????+= 22S 0RS R E A 。 2.某零售店有9种商品的单件进价(元)、售价(元)及一周的销量如表1.1,问哪种商品的利润最大,哪种商品的利润最小;按收入由小到大,列出所有商品及其收入;求这一周该10种商品的总收入和总利润。 表1.1

相关主题
文本预览
相关文档 最新文档