MATLAB程序设计实验

MATLAB程序设计实验
MATLAB程序设计实验

系立项建设

实验指导书

MATLAB程序设计与应用实验主编:王春、段守付

物理与电子信息工程系

目录

前言1

实验一熟悉MATLAB 环境2

实验二数值数组创建、应用及可视化6

实验三字符串数组的使用、简单脚本文件和函数的编写10实验四数据可视化方法17

实验五简单数据分析23

实验六 MATLAB 仿真初步27

实验七电路模型仿真应用30

实验八简单图形用户界面设计32

附录:MATLAB 主要函数指令表(按字母顺序索引)35

前言

美国MathWorks公司推出的MATLAB是一种集数值计算、符号、运算、可视化建模、仿真和图形处理等多种功能于一体的优秀编程、仿真工具,被誉为“巨人肩膀上的工具”、“演算纸式的编程语言”,是从事科学研究、工程计算的广大科技工作者、理工类高校师生确认为必须掌握的计算工具,是从理论通向实际的桥梁,也是最可信赖的科技资源之一。

为了配合学生上机实践,更好掌握MATLAB 的基本使用技能,了解MATLAB 的编程风格,以及将所学课程与MATLAB 实践相结合,特别编写了本实验讲义。其主要内容包括:MATLAB 入门及基本操作,数组、矩阵的使用及数据可视化方法,脚步文件及函数的编写,以及仿真、图形用户界面入门等。MATLAB 内容丰富,内嵌了许多功能函数。

为了方便课堂教学使用,也顾及查阅功能,在书后的索引中按照字母顺序对常见MATLAB 函数进行了分类,以备读者查阅需要。

本书编写由王春、段守付完成。

由于编者水平有限,书中难免存在不妥之处,恳请广大读者指正。同时,我们也会在适当时间进行修订和补充。

实验一熟悉MATLAB 环境

[实验目的]

1.熟悉MATLAB 主界面,并学会简单的菜单操作。

2.学会简单的矩阵输入与信号输入。

3.掌握部分绘图函数。

[实验原理]

MATLAB 是以复杂矩阵作为基本编程单元的一种程序设计语言。它提供了各种矩阵的运算与操作,并有较强的绘图功能。

用户第一次使用MATLAB 时,建议首先在屏幕上键入demo 命令,它将启动MATLAB 的演试程序,用户可在此演示程序中领略MATLAB 所提供的强大的运算与绘图功能。也可以键入help 进行进一步了解。MATLAB 启动界面如图所示:

操作界面主要的介绍如下:

指令窗(Command Window),在该窗可键入各种送给MATLAB 运作的指令、函数、表达

式,并显示除图形外的所以运算结果。

历史指令窗(Command History),该窗记录已经运行过的指令、函数、表达式;允许

用户对它们进行选择复制、重运行,以及产生M 文件。

工作空间浏览器(Workspace Browser),该窗口罗列出MATLAB 工作空间中所有的变量名、大小、字节数;并且在该窗中,可对变量进行观察、编辑、提取和保存。

其它还有当前目录浏览器( Current Directory Browser )、M 文件编辑/ 调试器(Editor/Debugger)以及帮助导航/浏览器(Help Navigator/Browser)等,但通常不随操

作界面的出现而启动。

利用File 菜单可方便对文件或窗口进行管理。其中File | New 的各子菜单,M-file (M 文件)、Figure(图形窗口)、或Model(SIMULINK 编辑界面)分别可创建对应文件或模块。Edit 菜单允许用户和Windows 的剪切板交互信息。

MATLAB 语言最基本的赋值语句结构为:变量名列表=表达式。表达式由操作符或其它字符,函数和变量名组成,表达式的结果为一个矩阵,显示在屏幕上,同时输送到一个变量中并存放于工作空间中以备调用。如果变量名和“=”省略,则ans 变量将自动建立,例如键入:1900/81,得到输出结果:ans =23.4568。MATLAB 中变量命名的原则要求必须以英文字母开头,文件夹名字中可以还包括、下划线和数字,不要使用其他的字符,更不要单纯使用数字或者中文名命名,有时在运行MATLAB 中一些莫名的错误可能就是不规范的命名引起的。这种规则包括将来为自己编写的脚本文件、函数文件命名以及为使用的变量命名也应遵循这个规则。

[实验内容]

一.用户工作目录和当前目录的建立和设置

1.为管理方便,每个用户在使用MATLAB 前,尽量为自己建立一个专门的工作目录,即“用户目录”,用来存放自己创建应用文件。例如首先打开资源管理器,在E 驱动器下可以根据自己喜好建立一个新文件夹,但应注意:该文件夹必须以英文开头,文件夹名字中可以包括字母、下划线和数字,不要使用其他的字符,更不要单纯使用数字或者中文名命名,有时在运行MATLAB 中一些莫名的错误可能就是不规范的命名引起的,这与MATLAB 中为变量和文件名命名原则是一致的。尽管MATLAB\work允许用户存放用户文件,但最好把它仅作为临时工作目录来使用。

2.为了用户运行方便,在开始工作前可把用户定义的目录设置为当前目录,方法是可直接在MATLAB 命令窗口桌面上方通过目录设置栏来实现。

3.把自己的工作目录加到MATLAB 搜索路径上,这样可以在任何情况下方便地调用自己的编写文件。MATLAB 工作时,基本搜索过程为:首先在工作空间,即MATLAB 内存中进行检查,看输入的指令是不是变量;如不是,则检查输入指令是不是内建函数(比如sin 函数等);如不是,则在当前目录上,检查是否有与输入指令相同的M文件存在;如还没有,则在MATLAB 定义的搜索路径其他目录中,检查是否有该M文件存在。设置方法是通过File 菜单下设置路径对话框进行。

二.熟悉简单的矩阵输

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];保存为B.M 文件,退出编辑环境。此时在工作环境中使用B 命令就可调出B 矩阵。

6. 再试着输入一些矩阵,矩阵中的元素可为任意数值表达式,但注意:

矩阵中各行各列的元素个数需分别相等,否则会给出出错信息。

7. 输入who 和whos 观察结果,了解其作用。

二.常用基本命令的使用

数据文件的存取训练:利用save 和load 指令可以方便地把当前工作空间的数据变量保存为数据文件。接题一,输入:save a 回车,表示把当前工作空间的所有变量保存为a.mat 文件。输入save a A C 回车,表示把当前内存中的变量A 、C 保存为a.mat 文件。类似的还有load 命令,实现保存数据变量的装载,执行clear 命令,然后运行load a 回车,观察工作空间的变化。save 、load 、clear 命令还有一些其他的应用格式,具体可参看帮助文件。三.基本序列运算

1. 数组的加减乘除和乘方运算

2. 输入A=[1 2 3],B=[4 5 6],求C=A+B ,D=A-B ,E=A.*B ,F=A./B ,G=A.^B,并用stem 画出A ,B ,C ,D ,E ,F ,G 。再输入一些数组,进行类似运算。

3. 在命令窗口用plot 指令粗略描绘下列各函数的波形(其中对于连续信号可取时间间隔

为0.001,可参看下面的a 的实例来实现,数学函数MATLAB 实现参见附录)a. t e t f --=3)( 30<

实现方法,在命令窗口执行一下指令,可简单描绘出函数曲线:

t=0:.001:3;

y=3-exp(-t);

plot(t,y)

b. t t e e t f 235)(--+= 30<

c. t e t f t π2sin )(-= 30<

d. at at t f /sin )(= ? 2π < t < 2π (π在MATLAB 中用pi 来实现)

f. k

e k

f =)( 50<≤k

三.M 脚本文件编写初步

用M 文件编辑器编写脚本文件重新描绘上面函数波形。

实验二数值数组创建、应用及可视化

[实验目的]

1.掌握二维数组的创建、寻访,区分数组运算与矩阵运算的区别。

2.掌握标准数组生成函数和数组构造技法。

3.进一步熟悉M 脚本文件编写的方法和技巧。

[实验原理]

数值数组和数组运算MATALB 核心内容,是MATLAB 最重要的一种内建数据类型。通常,

数组是由一组实数或复数排成的长方阵列(Array ),它可以是一维的“行”或“列”,可以

是二维的“矩形”,也可是三维的若同维矩形的堆叠,甚至是更高的任意维。而数组运算是指无论在数组上施加什么运算(加减乘除或函数),总认定那种运算对被运算数组中的每个元

素(Element)平等地时实施同样的操作。这使得计算程序简单、易读,使程序指令更接近教

科书上的数学计算公式,并提高了程序的向量化程度,提高计算效率,节省计算机开销。

一维数组的创建可采用逐个元素输入法,这是最简单,但又最通用的构造方法,如:x=[2 pi/2 sqrt(3) 3+5i];另外有规律的产生数组可以采用冒号生成法,通用格式是x =

a : inc : b,a 是数组的第一个元素,inc 是采样点之间的步长。若(b-a)是inc 的整数倍,则生成数组的最后一个元素是b,否则小于b。或者采用定数线性采样法,该法是在设定“总点数”下,均匀采样生成一维“行”数组。格式为x = linspace ( a ,

b , n ),a、

b 分别是生成数组的第一个各最后一个元素,n 是采样总点数,该指令生成(1×n)数组。

二维数组是由实数或复数排列成矩形而构成的。从数据结构上看,矩形和二维数组没有什么区别。当二维数组带有线性变换含义时,该二维数组就是矩阵。二维数组的创建也可采用直接输入法,或者利用构造M 文件创建和保存数组。

除此以外,还可以采用MATLAB 提供的标准函数生成我们需要的数组,诸如zeros、ones、

rand、eye、diag、magic 等,详请见附录。

一维数组元素的寻访和标识采用X(index)方法,只是要注意MATLAB 中第一个元素下

标index 是1,而不是C 语言中的0。二维数组元素的标识和寻访可分为“全下标”标识和“单下标”标识,“全下标”标识,即指出是“第几行,第几列”的元素,如A(3,5)表示二维数组A 的第三行第五列元素。该标识法的优点是几何概念清楚,引述简单,在MATLAB 的

寻址和赋值中最为常用。“单下标”标识,顾名思义就是只用一个下标来指明元素在数组中的位置,首先对二维数组的所有元素进行“一维编号”。“一维编号”是指:先设想把二维数组的所有列,按先左后右的次序、首尾相接排成“一维长列”,然后自上往下对元素未知进行编号,其优点是简洁、方便,特别是如果碰到对二维数组进行诸如for 循环操作时可以减少循环次数,提高编程效率。“全下标”标识和“单下标”标识可以通过sub2ind 和ind2sub

指令进行转换,详见帮助。另外,不论二维数组还是一维数组还可以采用“逻辑1”标识,这种方法常用于寻找数组中所有大于或小于某值的元素的问题中。比如X(abs(X)>3)可以找

出数组X 中所有绝对值大于3 的元素。另外还可以借助ones, zeros, rand, randn 和cat,

repmat, reshape 等函数直接或间接构作高维数组,详见附录或MATLAB 帮助。

Matlab 中的许多函数可以直接对任意维的数组直接运算,相当于对数组中的每个元素分别进行运算。比如Y=sin(X)可以直接得到与数组X 中每一个元素相对应的的正弦值,这

大大简化了编程。可以执行数组运算的常用函数已经列表于附录中,以供参考。但值得注意的是,虽然从外观形状和数据结构上看,二维数组和(数学中的)矩阵)没有区别,但矩阵作为一种变换或映射算子的体现,矩阵运算有着明确而严格的数学规则。数组运算是MATLAB

软件所定义的规则,其目的是为了数据管理方便、操作简单、指令形式自然和执行计算的有效。为了区别数组和矩阵运算,在易混淆的地方,数组运算在运算符前加一小黑点“.”以示区别,比如Y=A.*B,代表的示数组A 和数组B 对应元素相乘,而Y=A*B,则表示内维相同

的矩阵A 和B 的乘积。由此也可看出,在执行数组与数组的运算时,参与运算的数组必须同

维,运算所得结果也总与原数组同维。

本节只涉及数组可视化方法的简单实现。通常,对于离散数据可采用stem 命令或者使用plot 绘点的方法,而对于连续函数可直接采用plot 指令来实现。

[实验内容]

一.数组的创建和寻访

1.一维数组

在命令窗口执行下面指令,观察输出结果,体味数组创建和寻访方法,%号后面的为注释,不用输入。

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

x=rand(1,5) %产生(1×5) 的均布随机数组

x(3) %寻访数组x 的第三个元素。

x([1 2 5]) %寻访数组x 的第一、二、五个元素组成的子数组。

x(1:3) %寻访前三个元素组成的子数组

x(3:end) %寻访除前2 个元素外的全部其他元素。end 是最后一个元素的下标。

x(3:-1:1) %由前三个元素倒排构成的子数组

x(find(x>0.5)) %由大于0.5 的元素构成的子数组

x([1 2 3 4 4 3 2 1]) %对元素可以重复寻访,使所得数组长度允许大于原数组。

x(3) = 0 %把上例中的第三个元素重新赋值为0

x([1 4])=[1 1] %把当前x 数组的第一、四个元素都赋值为1

x[3]=[]; %空数组的赋值操作

2.二维数组

(1)在命令窗口执行下面指令,观察输出结果

a=2.7358; b=33/79; %这两条指令分别给变量 a ,b 赋值。

C=[1,2*a+i*b,b*sqrt(a);sin(pi/4),a+5*b,3.5+i] %这指令用于创建二维数

%组C

M_r=[1,2,3;4,5,6],M_i=[11,12,13;14,15,16] %创建复数数组的另一种方法

CN=M_r+i*M_i %由实部、虚部数组构成复数数组

(2)利用M 文件创建和保存下面的数组(分号后面是一个空格后加3 个小数点,表示换行续写)

AM=[101,102,103,104,105,106,107,108,109;...

201,202,203,204,205,206,207,208,209;...

301,302,303,304,305,306,307,308,309];

(3)仿照问题1 中方法找出数组??

??

??----=5311342024A A 中所有绝对值大于3 的 元素。

(4)在命令窗口执行下面指令,体会二维数组的子数组寻访和赋值 A=zeros(2,4) %创建(2 × 4) 的全零数组

A(:)=1:8 %全元素赋值方式

s=[2 3 5]; %产生单下标数组行数组

A(s) %由“单下标行数组”寻访产生A 元素组成的行数组Sa=[10 20 30]’ %Sa 是长度为3 的“列数组”

A(s)=Sa %单下标方式赋值

A(:,[2 3])=ones(2) %双下标赋值方式:把A 的第2、3 列元素全赋为1(5)运行指令

rand(‘state ’,11),A=rand(3,10000);B=(A>0.5);C=2*B-1;首先预测(C*C ’)/100 的运行结果,然后再在机器上验证。(本方法提供了产

生通信等仿真中常需若干独立的双随机码的方法原型。)

(6)在命令窗口执行下面指令,体味数组运算与矩阵运算的区别

clear ;A=zeros(2,3);

A(:)=1:6; %全元素赋值法

A=A*(1+i) %运用标量与数组乘产生复数矩阵

A_A=A.' %数组转置,即非共轭转置,其中单引号实现转置功能

A_M=A' %矩阵转置,即共轭转置

二.编写如图所示波形的MATLAB 脚本文件,图中虚线为正弦波,要求它分别在2

1-及22处削顶。

图1

可能用到的额外指令: find、hold on、hold off、 legend,具体使用方法使用help +指令名来解答。

实验三字符串数组的使用、简单脚本文件和函数的编写

[实验目的]

1.掌握字符串数组的创建和构造方法及常用字符串函数的使用。

2.熟练掌握MATLAB 控制流的使用方法。

3.熟悉M 脚本文件、函数文件的编写方法和技巧。

[实验原理]

与数值数组相比,串数组在MATLAB 中的重要性较小,但不可缺少。如果没有串数组及

相应的操作,那么数据可视化、图形用户界面的制作将会遇到困难。字符串与数值数组是两种不同的数据类,它们的创建方式也不同。字符串的创建方式是:将待建的字符放在“单引号对”中。注意,“单引号对”必须是在英文状态下输入,其作用是MATLAB 识别送来内容

“身份”所必需的,如A=’This is an example!’;就创建了一个字符串A。注意创建带单引号的字符串时,每个单引号符用“连续2 个单引号符”标识。字符串的标识同数值数组同,而且也可以使用size 指令观察串数组的大小。串数组的ASCII 码可以通过指令abs 和

double 来获取,而用char 指令可以把ASCII 码变为串数组,另外,MATLAB 可以很好的支持中文字符串数组。对于复杂串数组的创建,一是可以直接创建,但是要保证同一串数组的各行字符数相等,即保证各行等长,不推荐,太繁琐。二是可以利用串操作函数创建多行数组,比如char, str2mat, strvcat 等,具体操作自己通过帮助体会。另外还可以通过转化函数产生数码字符长,比如A_str=int2str(A) 就是把整数数组A 转换成串数组,如果是非整数将被四舍五入后再转换,类似的函数还有num2str(把非整数数组转换为串数组,常用于图形中数据点的标识)、mat2str(把数值数组转换成输入形态的串数组,常与eval 指令配用)。

假如想灵活运用MATLAB 去解决实际问题,想充分调动MATLAB——科学技术资源,想理

解MATLAB 版本升级所依仗的基础,那么掌握M 脚本文件合函数的编写规则将十分有用。

用户通过本次实验,感受抽象概念的内涵、各指令间的协调,从感知上领悟MATLAB 编

程的优越和要领。

编写M 脚本文件的步骤:

点击MATLAB 指令窗工具条上的New File图标,就可打开如上图所示的MATLAB 文件编辑调试器MATLAB Editor/Debugger。其窗口名为untitled ,用户即可在空白窗口中编写程序。

点击编辑调试器工具条图标,在弹出的Windows 标准风格的“保存为”对话框中,选择保存文件夹,键入新编文件名(如newfile.m),点动【保存】键,就完成了文件

保存。

运行可有两种方法,一种是直接点击编辑调试工具条图标,即可直接运行;或者使newfile.m 所在目录成为当前目录,或让该目录处在MATLAB 的搜索路径上,然后在命令窗口键入指令newfile+回车,便可得到运行结果。

调试程序方法有多种,常见的是设置断点的方法,将光标移到程序欲执行到的位置,点击编辑调试工具条图标,保存后运行,程序将停止在该语句位置并弹出编辑器界面等待用户下一步运行的指令,只有再次点击按钮,才继续向下执行。相应的按下按钮,表示清除所有断点。如果不设置断点,也可以在程序中加入pause 指令,使得程序在此处暂停,只有用户按任意键程序才依次向下执行。则在pause 指令的前面位置我们可以通过交互的方式得到我们想要的信息,以检测程序的正确性。

编写MATLAB 脚本文件或函数文件时要区分开与C 语言格式的不同。MATALB 使用变量前不需要声明数据类型,对于所有的数值型数据MATLAB 均以Double 型存储。另外编程时尽量使用MATLAB 向量(数组)编程方式,可大大提高编程效率,尽量避免过多使用for 循环等

语句。

MATLAB 提供了五种控制流的结构:for 循环结构,while 循环结构,if-else-end 分支结构,以及switch-case 结果、try-catch 结构。这些控制指令用法与其他语言十分类似,

这里只给出简要说明。

For 循环: while 循环结构

if-else-end 结构

单分支(常用) 双分支(常用) 多分支(常被swith-case 取代)

上面几条控制语句中,for 循环结构中x 称为循环变量,组命令(commands)被称为循环体,循环体被重复执行的次数是确定的,该次数由for 指令后面的数组array 的列数决定。换言之,循环变量依次取数组的各列,对于每个变量值,循环体被执行一次。

while 循环是首先检测expression 的值,如其值为逻辑真(非0),则执行组命令,当

组命令执行完毕,继续检测表达式的值,仍为真,循环执行组命令,一旦表达式值为假,就 结束循环。一般情况下,表达式的值是标量值,但MATLAB 允许其为一个数组,此时只有该数组所有元素均为真时,MATLAB 才会执行循环体。若表达式为空数组,则不执行循环体。if 指令判决和break 指令的配合使用,可以强制中止for 循环或while 循环。switch-case 结构 try-catch 结构 switch 指令后面的表达式应为一个标量或者为一个字符串。对于标量形式的表达式,比较这样进行:表达式==检测值i 。对于字符串,MATLAB 将调用函数strcmp 来实现比较:strcmp(表达式,检测值i).

try-catch 结构,只有当MATLAB 在执行组命令1 时出现错误后,组命令2 才会被执行。当执行组命令2 时又出错,MATLAB 将中止该结构。

实验二 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

实验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程序设计与应用课后实验六八九

实验六 高层绘图操作 %第一题: 程序代码如下: 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程序设计实验报告

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 程序设计 实验目的: 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程序设计及经典例题解析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程序设计实例

矩量法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程序设计例题及答案

1.编写程序:计算1/3+2/5+3/7+……+10/21 法一: s=0; for i=1:10 s=s+i/(2*i+1); end s s = 4.4096 法二: sum((1:10)./(3:2:21)) ans = 4.4096 2.编写程序:计算1~100中即能被3整除,又能被7整除的所有数之和。 s=0; for i=1:100 if mod(i,3)==0&&mod(i,7)==0 s=s+i; end,end s s = 210 3.画出y=n!的图(1<=n<=10),阶乘的函数自己编写,禁用MATLAB自带的阶乘函数。 x=1:10; for i=1:10 try y(i)=y(i-1)*i; catch y(i)=1; end,end plot(x,y)

12345678910 0.511.522.533.54x 10 6 4.一个数恰好等于它的因子之和,这个数就称为完数。例如,6的因子为1,2,3,而6=1+2+3,因此6就是一个完数。编程找出2000以内的所有完数。 g=[]; for n=2:2000 s=0; for r=1:n-1 if mod(n,r)==0 s=s+r; end end if s==n g=[g n]; end end g g =6 28 496

5.编写一个函数,模拟numel函数的功能,函数中调用size函数。 function y=numelnumel(x) m=size(x); y=m(1)*m(2); numelnumel([1 2 3;4 5 6]) ans = 6 6. 编写一个函数,模拟length函数的功能,函数中调用size函数。 function y=lengthlength(x) m=size(x); y=max(m(1),m(2)); lengthlength([1 2 3;4 5 6]) ans = 3 7.求矩阵rand(5)的所有元素和及各行平均值,各列平均值。 s=rand(5); sum=sum(sum(s)) mean2=mean(s,2) mean1=mean(s) sum = 13.8469

实验二 MATLAB程序设计

实验二 MATLAB 程序设计 一、 实验目的 1.掌握利用if 语句实现选择结构的方法。 2.掌握利用switch 语句实现多分支选择结构的方法。 3.掌握利用for 语句实现循环结构的方法。 4.掌握利用while 语句实现循环结构的方法。 5.掌握MATLAB 函数的编写及调试方法。 二、 实验的设备及条件 计算机一台(带有以上的软件环境)。 M 文件的编写: 启动MATLAB 后,点击File|New|M-File ,启动MATLAB 的程序编辑及调试器(Editor/Debugger ),编辑以下程序,点击File|Save 保存程序,注意文件名最好用英文字符。点击Debug|Run 运行程序,在命令窗口查看运行结果,程序如有错误则改正 三、 实验内容 1.编写求解方程02=++c bx ax 的根的函数(这个方程不一定为一元二次方程,因c b a 、、的不同取值而定),这里应根据c b a 、、的不同取值分别处理,有输入参数提示,当0~,0,0===c b a 时应提示“为恒不等式!”。并输入几组典型值加以检验。 (提示:提示输入使用input 函数) 2.输入一个百分制成绩,要求输出成绩等级A+、A 、B 、C 、D 、E 。其中100分为A+,90分~99分为A ,80分~89分为B ,70分~79分为C ,60分~69分为D ,60分以下为E 。 要求:(1)用switch 语句实现。 (2)输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出错信息。 (提示:注意单元矩阵的用法) 3.数论中一个有趣的题目:任意一个正整数,若为偶数,则用2除之,若为奇数,则与3相乘再加上1。重复此过程,最终得到的结果为1。如: 21 21 421 运行下面的程序,按程序提示输入n=1,2,3,5,7等数来验证这一结论。 请为关键的Matlab 语句填写上相关注释,说明其含义或功能。 4. y 的值。 5. (Root Mean Square)的计算公式为:

matlab程序设计实例

MATLAB 程序设计方法及若干程序实例 樊双喜 (河南大学数学与 信息科学学院开封475004) 摘要本文通过对 MATLAB 程序设计中的若干典型问题做简要的分析和总结,并在此基础上着重讨论了有关算法设计、程序的调试与测试、算法与程序的优化以及循环控制等方面的问题.还通过对一些程序实例做具体解析,来方便读者进行编程训练并掌握一些有关MATLAB 程序设计方面的基本概念、基本方法以及某些问题的处理技巧等.此外,在文章的最后还给出了几个常用数学方法的算法程序, 供读者参考使用.希望能对初学者进行 MATLAB 编程训练提供一些可供参考的材料,并起到一定的指导和激励作用,进而为MATLAB 编程入门打下好的基础. 关键字算法设计;程序调试与测试;程序优化;循环控制 1 算法与程序 1.1 算法与程序的关系算法被称为程序的灵魂,因此在介绍程序之前应先了 解什么是算法.所谓算 法就是对特定问题求解步骤的一种描述.对于一个较复杂的计算或是数据处理的问题,通常是先设计出在理论上可行的算法,即程序的操作步骤,然后再按照算法逐步翻译成相应的程序语言,即计算机可识别的语言. 所谓程序设计,就是使用在计算机上可执行的程序代码来有效的描述用于解决特定问题算法的过程.简单来说,程序就是指令的集合.结构化程序设计由于采用了模块分化与功能分解,自顶向下,即分而治之的方法,因而可将一个较复杂的问题分解为若干子问题,逐步求精.算法是操作的过程,而程序结构和程序流程则是算法的具体体现. 1.2MATLAB 语言的特点 MATLAB 语言简洁紧凑,使用方便灵活,库函数极其丰富,其语法规则与科技人员的思维和书写习惯相近,便于操作.MATLAB 程序书写形式自由,利用其丰富

MATLAB程序设计与应用(第二版)实验参考答案

MATLAB程序设计与应用(第二版)实验参考答案 %实验一MATLAB运算基础 %第一题ftp://192.168.0.143/ %(1) z1=2*sin(85*pi/180)/(1+exp(2))ftp://192.168.0.143/ %(2) x=[2,1+2i;-0.45,5]; z2=0.5*log(x+sqrt(1+x.^2))ftp://192.168.0.143/ %(3) a=-3.0:0.1:3.0;ftp://192.168.0.143/ z3=(exp(0.3*a)-exp(-0.3*a))/2.*sin(a+0.3)+log((0.3+a)/2) %(4) t=0:0.5:2.5; z4=t.^2.*(t>=0&t<1)+(t.^2-1).*(t>=1&t<2)+(t.^2-2*t+1).*(t>=2&t<3) %第二题 A=[12 34 -4;34 7 87;3 65 7]; B=[1 3 -1;2 0 3;3 -2 7]; A+6*B A-B+eye(size(A)) A*B A.*B A^3 A.^3 A/B B\A [A,B] [A([1,3],:);B^2] %第三题 A=[1 2 3 4 5;6 7 8 9 10;11 12 13 14 15;16 17 18 19 20;21 22 23 24 25] B=[3 0 16;17 -6 9;0 23 -4;9 7 0;4 13 11] C=A*B F=size(C) D=C(F(1)-2:F(1),F(2)-1:F(2)) whos %第四题 %(1): A=100:999; B=rem(A,21); C=length(find(B==0)) %(2): A='lsdhKSDLKklsdkl';

实验3 Matlab程序设计1实验报告

Tutorial3 实验报告 实验名称:Matlab 程序设计1 实验目的: 1、 掌握建立和执行脚本和函数文件的方法; 2、 掌握实现选择结构的方法; 3、 掌握实现循环结构的方法。 实验内容: 1. 从键盘输入一个4位整数,按如下规则加密后输出。加密规则:每位数字都加上7,然 后用和除以10的余数取代该数字;再把第一位与第三位交换,第二位与第四位交换 要求:函数实现 2. 求分段函数的值。 ,x x x x y x x x x x x x ?+- <≠-? =-+ ≤<≠≠??-- ?222 6035605231且且及其他 用if 语句实现,分别输出x=-5,-3,0,1,2,2.5,3,5时的y 值。 要求:脚本实现 3. 输入一个百分制成绩,要求输出成绩等级A 、B 、C 、D 、E ,其中90~100分为A ,80~89 分为B ,70~79分为C ,60~69分为D ,60分以下为E 。 要求: (1)分别用if 语句和swich 语句实现。 (2)函数实现 4. 硅谷公司员工的工资计算方法如下: (1) 工作时数超过120小时者,超过部分加发15%;

(2)工作时数低于60小时者,扣发700元; (3)其余按每小时84元计发。 试编程按输入的工号和该号员工的工时数,计算应发工资。 要求:函数实现 5.设计程序,完成两位数的加、减、乘、除四则运算。即:输入两个两位随机整数,再输 入一个运算符号,做相应的运算,并显示相应的结果。 要求:函数实现 6.产生20个两位随机整数,输出其中小于平均数的偶数。 要求:脚本实现 7.根据 111 1 3521 y n =++++ - ,求: (1)y<3时的最大n值。 (2)与(1)的n值对应的y值。 要求:脚本实现 8.写出下列程序的运行结果 s = 0; a = [12,13,14;15,16,17;18,19,20;21,22,23]; for k = a for j = 1:4 if rem(k(j),2)~=0 s = s +k(j); end end

实验二 MATLAB程序设计(含实验报告)

实验二 MATLAB 程序设计 一、 实验目的 1.掌握利用if 语句实现选择结构的方法。 2.掌握利用switch 语句实现多分支选择结构的方法。 3.掌握利用for 语句实现循环结构的方法。 4.掌握利用while 语句实现循环结构的方法。 5.掌握MATLAB 函数的编写及调试方法。 二、 实验的设备及条件 计算机一台(带有MATLAB7.0以上的软件环境)。 M 文件的编写: 启动MATLAB 后,点击File|New|M-File ,启动MATLAB 的程序编辑及调试器(Editor/Debugger ),编辑以下程序,点击File|Save 保存程序,注意文件名最好用英文字符。点击Debug|Run 运行程序,在命令窗口查看运行结果,程序如有错误则改正 三、 实验内容 1.编写求解方程02=++c bx ax 的根的函数(这个方程不一定为一元二次方程,因c b a 、、的不同取值而定),这里应根据c b a 、、的不同取值分别处理,有输入参数提示,当0~,0,0===c b a 时应提示“为恒不等式!”。并输入几组典型值加以检验。 (提示:提示输入使用input 函数) 2.输入一个百分制成绩,要求输出成绩等级A+、A 、B 、C 、D 、E 。其中100分为A+,90分~99分为A ,80分~89分为B ,70分~79分为C ,60分~69分为D ,60分以下为E 。 要求:(1)用switch 语句实现。 (2)输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出错信息。 (提示:注意单元矩阵的用法) 3.数论中一个有趣的题目:任意一个正整数,若为偶数,则用2除之,若为奇数,则与3相乘再加上1。重复此过程,最终得到的结果为1。如: 2→1 3→10→5→16→8→4→2→1 6→3→10→5→16→8→4→2→1

matlab程序设计例题及答案

matlab程序设计例题及答案 1.编写程序:计算1/3+2/5+3/7+……+10/21 法一: s=0; for i=1:10 s=s+i/(2*i+1); end ss = 法二: sum((1:10)./(3:2:21)) ans = 2.编写程序:计算1~100中即能被3整除,又能被7整除的所有数之和。 s=0; for i=1:100 if mod(i,3)==0&&mod(i,7)==0 s=s+i; end,end ss = 210 3.画出y=n!的图,阶乘的函数自己编写,禁用MATLAB 自带的阶乘函数。 x=1:10; for i=1:10 try y(i)=y(i-1)*i; catch y(i)=1; end,end plot(x,y) 10612345678910 4.一个数恰好等于它的因子之和,这个数就称为完数。

例如,6的因子为1,2,3,而6=1+2+3,因此6就是一个完数。编程找出20XX以内的所有完数。 g=; for n=2:20XX s=0; for r=1:n-1 if mod(n,r)==0 s=s+r; end end if s==n g=[g n]; end end g g =6 28 496 5.编写一个函数,模拟numel函数的功能,函数中调用size函数。 function y=numelnumel(x) m=size(x); y=m(1)*m(2); numelnumel([1 2 3;4 5 6]) ans = 6 6. 编写一个函数,模拟length函数的功能,函数中调用size函数。 function y=lengthlength(x) m=size(x); y=max(m(1),m(2)); lengthlength([1 2 3;4 5 6]) ans = 3

MATLAB程序设计实验报告

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

矩量法matlab程序设计实例

矩量法matlab 程序设计实例: Hallen 方程求对称振子天线 一、条件和计算目标 已知: 对称振子天线长为L ,半径为a ,且天线长度与波长的关系为 λ5.0=L ,λ<<<

matlab编程实例100例

1-32是:图形应用篇 33-66是:界面设计篇 67-84是:图形处理篇 85-100是:数值分析篇 实例1:三角函数曲线(1) function shili01 h0=figure('toolbar','none',... 'position',[198 56 350 300],... 'name','实例01'); h1=axes('parent',h0,... 'visible','off'); x=-pi:0.05:pi; y=sin(x); plot(x,y); xlabel('自变量X'); ylabel('函数值Y'); title('SIN( )函数曲线'); grid on 实例2:三角函数曲线(2) function shili02 h0=figure('toolbar','none',... 'position',[200 150 450 350],... 'name','实例02'); x=-pi:0.05:pi; y=sin(x)+cos(x); plot(x,y,'-*r','linewidth',1); grid on xlabel('自变量X'); ylabel('函数值Y'); title('三角函数'); 实例3:图形的叠加 function shili03 h0=figure('toolbar','none',...

'position',[200 150 450 350],... 'name','实例03'); x=-pi:0.05:pi; y1=sin(x); y2=cos(x); plot(x,y1,... '-*r',... x,y2,... '--og'); grid on xlabel('自变量X'); ylabel('函数值Y'); title('三角函数'); 实例4:双y轴图形的绘制 function shili04 h0=figure('toolbar','none',... 'position',[200 150 450 250],... 'name','实例04'); x=0:900;a=1000;b=0.005; y1=2*x; y2=cos(b*x); [haxes,hline1,hline2]=plotyy(x,y1,x,y2,'semilogy','plot'); axes(haxes(1)) ylabel('semilog plot'); axes(haxes(2)) ylabel('linear plot'); 实例5:单个轴窗口显示多个图形 function shili05 h0=figure('toolbar','none',... 'position',[200 150 450 250],... 'name','实例05'); t=0:pi/10:2*pi; [x,y]=meshgrid(t); subplot(2,2,1) plot(sin(t),cos(t)) axis equal subplot(2,2,2) z=sin(x)-cos(y); plot(t,z) axis([0 2*pi -2 2])

实验五MATLAB 程序设计

实验五MATLAB 程序设计 一、实验目的 掌握 MATLAB程序设计的主要方法,熟练编写 MATLAB函数。 二、实验内容 (1)M文件的编辑。 (2) 程序流程控制结构。 (3) 子函数调用和参数传递。 (4) 局部变量和全局变量。 三、实验步骤 1. M文件的编辑 2. 程序流程控制结构 1) for循环结构 2) while 循环结构 3) i f-else-end分支结构 4) switch-case结构 3. 子函数和参数传递 4. 局部变量和全局变量 四、实验内容 s=0; for n=1:100 s=s+n; end s s = 5050 function s=exp2(x) s=0; for n=1:x s=s+n; end >>clear >>s=exp2(100) s = 5050 for n=1:10 n end n = 1

n = 2 n = 3 n = 4 n = 5 n = 6 n = 7 n = 8 n = 9 n = 10 n=10:-1:5 for i=n i end n = 10 9 8 7 6 5 i = 10 i = 9 i = 8 i = 7 i = 6 i = 5 clear,clc; x=1; while 1 x=x*2 end x = Inf .......................

练习:(1) 请把exp2.m 函数文件用while 循环改写。 (2) 用π /4≈1-1/3+1/5-1/7+…公式求π的近似值,直到最后一项的绝对值小于10-6 为止,试编写其M脚本文件。 q=input('输入一个自然数:m='); s=0;x=1; while x<=q s=s+x; x=x+1; end S s=1; k=1; n=1; while(k*(-1)^(n+1)>10^(-6)) k=k*(1-2*n)/(1+2*n); s=s+k; n=n+1; end s*4 s=0; n=1; while (abs((-1)^(n-1)/(2*n-1))>10^(-6)) m=(-1)^(n-1)/(2*n-1); s=s+m; n=n+1; end 4*s n=input('n='); if isempty(n) error('please input n') end switch mod(n,2) case 1 A='奇数' case 0 A='偶数' end n=4 A = 偶数

matlab的程序设计实例解析

MATLAB程序设计方法及若干程序实例 樊双喜 (河南大学数学与信息科学学院开封475004) 摘要本文通过对 MATLAB 程序设计中的若干典型问题做简要的分析和总结,并在此基础上着重讨论了有关算法设计、程序的调试与测试、算法与程序的优化以及循环控制等方面的问题.还通过对一些程序实例做具体解析,来方便读者进行编程训练并掌握一些有关 MATLAB 程序设计方面的基本概念、基本方法以及某些问题的处理技巧等.此外,在文章的最后还给出了几个常用数学方法的算法程序, 供读者参考使用.希望能对初学者进行 MATLAB 编程训练提供一些可供参考的材料,并起到一定的指导和激励作用,进而为MATLAB编程入门打下好的基础. 关键字算法设计;程序调试与测试;程序优化;循环控制 1 算法与程序 1.1 算法与程序的关系 算法被称为程序的灵魂,因此在介绍程序之前应先了解什么是算法.所谓算 法就是对特定问题求解步骤的一种描述.对于一个较复杂的计算或是数据处理的问题,通常是先设计出在理论上可行的算法,即程序的操作步骤,然后再按照算法 逐步翻译成相应的程序语言,即计算机可识别的语言. 所谓程序设计,就是使用在计算机上可执行的程序代码来有效的描述用于 解决特定问题算法的过程.简单来说,程序就是指令的集合.结构化程序设计由于 采用了模块分化与功能分解,自顶向下,即分而治之的方法,因而可将一个较复杂 的问题分解为若干子问题,逐步求精.算法是操作的过程,而程序结构和程序流程 则是算法的具体体现. 1.2 MATLAB语言的特点 MATLAB 语言简洁紧凑,使用方便灵活,库函数极其丰富,其语法规则与科技 人员的思维和书写习惯相近,便于操作.MATLAB 程序书写形式自由,利用其丰富

相关文档
最新文档