基于MATLAB的系统仿真实验指导书

基于MATLAB的系统仿真实验指导书
基于MATLAB的系统仿真实验指导书

基于MATLAB的系统仿真实验

实验指导书

说明

MATLAB是MATrix LABoratory的缩写,是一种基于矩阵的数学与工程计算系统,可以用作动态系统的建模与仿真。研究系统的结构和参数的变化对系统性能的影响可利用MATLAB强大的计算和作图功能,因此本实验采用MATLAB仿真研究连续控制系统和离散控制系统的性能分析过程。通过该实验提高学生对控制系统的分析与设计能力,加深对《自动控制原理》课程内容的理解。

该实验教学大纲中只安排了两个学时,本实验的内容比较多,要求同学们参考有关MATLAB应用的书籍利用课后时间完成。同时可以将MATLAB用于习题的验证和课程的学习中。

仿真实验

基于MATLAB 连续系统的仿真

一、 实验目的

在研究系统的结构和参数的变化对系统性能的影响时,采用解析和作图的方法比较麻烦,而且误差也大,用MATLAB 仿真实现则简单方便,精度高。本实验采用MATLAB 实现控制系统的数学描述、控制系统的时域分析及根轨迹和频率特性分析。通过该实验,加深学生对系统阶次,型号,参数与系统性能的关系的理解。 二、实验环境

在计算机Windows 环境下安装好MATLAB6.3以上版本后,双击MATLAB 图标或成“开始”菜单打开MATLAB ,即可进入MATLAB 集成环境。 三、实验原理

三、MATLAB 应用实例

1.拉氏变换和反变换

例 求22)(2

++=t t t f 的拉氏变换 解

键入 syms s t;

ft=t^2+2*t+2; st=laplace(ft,t,s)

运行结果为 st=

2/s^3+2/s^2+2/s

例 求)

2)(34(6

)(2

++++=

s s s s s F 的拉氏反变换 解

键入 syms s t;

Fs=(s+6)/(s^2+4*s+3)/(s+2); ft=ilaplace(Fs,s,t)

运行结果为 ft=

3/2*exp(-3*t)+5/2*exp(-t)-4*exp(-2*t)

2。求根运算

例 求多项式 43)(23++=s s s p 的根,再由根建多项式。 解

键入 p=[1 3 0 4]; r=root(p) 运行结果为 r=

-3.3553

0.1777+1.0773i 1.7777-1.0773i

键入 p=poly(r)

运行结果为 p=

1.0000 3.0000 0.0000 40000

例 实现多项式相乘:)4)(123(2+++s s s ,并求5-=s 时的值。 解

键入 p=[3 2 1]; q=[1 4]; n=conv(p,q) 运行结果为 n=

3 1

4 9 4 键入 vlaue=polyval(n,-5) 运行结果为 value=

-66

3.微分方程求解

例 解下列微分方程:

1)(2)(3)(32

2=++t y dt t dy dt

t y d 初始条件 0)0()0('==y y 解

键入 y=dsolve('3*D2y+3*Dy+2*y=1','y(0)=0,Dy(0)=0') 运行结果为 y=

1/2-1/2*exp(-1/2*t)*cos(1/6*15^(1/2)*t)-1/10*15^(1/2)*exp(-1/2*t)*sin(1/6*15^(1/2)*t)

4.传递函数

例 求如图所示系统的传递函数。

键入numg=[1];deng=[500 0 0]; numh=[1 1];denh=[1 2];

[num,den]=feedback(numg,deng,numh,denh,-1); printsys(num,den) 运行结果为 num/den=

s +2

------------------------------

500s^3 + 1000 s^2 + s+1

其中, 由函数 printsys(num,den) 打印出传递函数。

5。系统输出响应及性能分析

例 二阶系统闭环传递函数的标准形式为 2

2

22)()

()(n

n n s s s R s C s ωξωω++==Φ 若n ω确定,系统的瞬态响应和ξ的取值有关。下面用MATLAB 分析在不同的ξ值时,系统的单位阶跃响应。所用的MA TLAB 程序如下:

%n ω=1

t=0:0.1:12;num=[1];

zeta1=0;den1=[1 2*zeta1 1]; zeta3=0.3;den3=[1 2*zeta3 1]; zeta5=0.5;den5=[1 2*zeta5 1]; zeta7=0.7;den7=[1 2*zeta7 1]; zeta9=1.0;den9=[1 2*zeta9 1]; [y1,x,t]=step(num,den1,t); [y3,x,t]=step(num,den3,t); [y5,x,t]=step(num,den5,t); [y7,x,t]=step(num,den7,t); [y9,x,t]=step(num,den9,t); plot(t,y1,t,y3,t,y5,t,y7,t,y9,) grid on; 运行结果见图。

例 已知A

A

K s s K s 55.345)(2++=

Φ,分别计算K A =200时,系统的性能指标t p ,t s ,%σ。

解 MA TLAB 程序如下:

t=0:0.01:2; num=[1000];

den=[1 34.5 1000]; [y,x,t]=step(num,den,t); plot(t,y); %求超调量 maxy=max(y); yss=y(length(t));

pos=100*(maxy-yss)/yss; %求峰值时间 for i=1:1:201

if y(i)==maxy,n=i;end end

tp=(n-1)*0.01; %求调节时间 for i=1:1:201

if (y(i)<1.05 & y(i)>0.95),m=i;end break; end

ts=(m-1)*0.01;

计算结果为

t p =0.12s ,t s =0.17s ,%σ=12.93%

例 系统闭环特征方程为 0242)(2

3

=+++=s s s s q 用MA TLAB 判系统稳定性。 解

键入 den=[1 1 2 24]; roots(den) 运行结果为 ans=

-3.0000

1. 000+

2.6458i 1.0000-2.6458i

可见,系统有两个右根,故系统不稳定。 例 求出下列系统11)(1+=

s s G ,)1(1)(2+=s s s G ,)

1(14)(23++=s s s s G 单位阶跃 响应及稳态误差。 解

MATLAB 程序如下:

t=0:0.1:20;

[num1,den1]=cloop([1],[1 1]); [num2,den2]=cloop([1],[1 1 0]); [num3,den3]=cloop([4 1],[1 1 0 0]); y1=step(num1,den1,t); y2=step(num2,den2,t); y3=step(num3,den3,t); subplot(311); plot(t,y1);

subplot(312);plot(t,y2); subplot(313);plot(t,y3); er1=y1(length(t))-1; er2=y2(length(t))-1; er3=y3(length(t))-1;

运行结果见图。

在命令窗口可得

er1 = -0.5000 % 0型系统的稳态误差 er2 = 2.4294e-005 % Ⅰ型系统的稳态误差 er3 = -3.3525e-004 % Ⅱ型系统的稳态误差

例 用SIMULINK 对第七节中单闭环无静差调速系统进行仿真。 解 在SIMULINK 下建立系统仿真结构图如图3-46所示。

仿真的结果见图3-47。

6。绘制系统的根轨迹图

例 设一单位反馈系统如图4-31所示,试绘制该系统的根轨迹。

键入num=[1];

den=[1 3 2 0]; rlocus(num,den) 运行结果见图4-32。

例 已知系统前向通道传递函数为5)(+=

s K s G c ,)

8(1

)(0++=s s s s G ,反馈通道传递函数为2

1

)(+=

s s H ,试绘出系统闭环根轨迹图。

键入 Gc=tf(1,[1 5]);

Go=tf([1 1],[1 8 0]); H=tf(1,[1 2]); rlocus(Gc*Go*H);

v=[-10 10; –10 13];axis(v); grid on

运行结果见图4-33。

图4-33 例4-18系统根轨迹

7.绘制系统的频率特性图

例5 振荡环节传递函数的标准形式为

2

2

22)()

()(n

n n s s s R s C s ωζωω++==Φ 当n ω确定时,系统的频率特性与ζ的取值有关。用MATLAB 绘出1=n ω时,在不同ζ取值下,系统的Bode 图和Nyquist 图。 解 1)作Bode 图程序: num=[1];

zeta1=0.1;den1=[1 2*zeta1 1]; zeta3=0.3;den3=[1 2*zeta3 1];

zeta5=0.5;den5=[1 2*zeta5 1]; zeta7=0.7;den7=[1 2*zeta7 1]; zeta9=1.0;den9=[1 2*zeta9 1];

[mag1,phase1,w1]=bode(num,den1); [mag3,phase3,w3]=bode(num,den3); [mag5,phase5,w5]=bode(num,den5); [mag7,phase7,w7]=bode(num,den7); [mag9,phase9,w9]=bode(num,den9); subplot(211);

semilogx(w1,20*log10(mag1),w3,20*log10(mag3),…

w5,20*log10(mag5),w7,20*log10(mag7), w9,20*log10(mag9)); subplot(212);

semilogx(w1,phase1,w3,phase3,w5,phase5,w7,phase7,w9,phase9); 运行结果见图。

2)作Nyquist 图程序: num=[1];

zeta1=0.4;den1=[1 2*zeta1 1]; zeta6=0.6;den6=[1 2*zeta6 1]; zeta8=0.8;den8=[1 2*zeta8 1]; [re1,im1]=nyquist(num,den1); [re2,im2]=nyquist(num,den6);

[re3,im3]=nyquist(num,den8);

plot(re1,im1,re2,im2,re3,im3); 运行结果见图。

例 已知系统的开环传递函数)

12()

10()(++=s s s s G ,求开环对数频率特性曲线。

解 MATLAB 程序如下:

z=[-10];p=[0,-1/2];k=1/2; h=zpk(z,p,k); bode(h); grid

运行结果见图。

例 开环传递函数为)

100167.0)(10368.0)(1162.0(33

.2)()(+++=

s s s s H s G

作出开环伯德图,并求系统的稳定裕量。

解 命令窗口输入

h1=tf([2.33],[0.162 1]); h2=tf([1],[0.0368 1]); h3=tf([1],[0.00167 1]); h=h1*h2*h3;

[num,den]=tfdata(h);

[mag,phase,w]=bode(num,den); subplot(211);

semilogx(w,20*log10(mag));grid; subplot(212);

semilogx(w,phase);grid;

[gm,pm,wcg,wcp]=margin(mag,phase,w) 运行结果见图。

同时,在MATLAB 命令窗口中可以得到系统的稳定裕量:

gm = 53.9692 pm = 93.6601 wcg = 141.9068 wcp = 11.6305

若要生成带有裕量标记的伯德图,则可将程序中最后一条改为

margin(mag,phase,w); 此时,所得图形见图。

8.系统性能的校正

例 试用MA TLAB 对教材中例6-1中系统设计超前校正装置。 解 如例6-1中所述,校正前系统的开环传递函数为 )

15.0(20

)(+=

s s s G

编写MATLAB 程序如下: num=20;den=[0.5 1 0];

[gm,pm,wcg,wcp]=margin(num,den); %求校正前系统的相位裕量pm

dpm=50-pm+5; %根据性能指标要求确定m ? phi=dpm*pi/180;

a=(1+sin(phi))/(1-sin(phi)); %根据式(6-6)求α mm=–10*log10(a); %计算-10lg α幅值 [mu,pu,w]=bode(num,den);

mu_db=20*log10(mu); %在未校正系统的幅频特性上 wc=spline(mu_db,w,mm); %找到幅值为mm 处的频率 T=1/(wc*sqrt(a)); %根据式(6-11)求T p=a*T;

nk=[p,1];dk=[T,1]; %根据式(6-8)求校正装置 gc=tf(nk,dk);

printsys(nk,dk,'s');

可从命令窗口得到校正装置的传递函数为

0.2268 s + 1 ------------ 0.0563 s + 1

再输入下面的命令

h=tf(num,den);h1=tf(nk,dk); g=h*h1;

[gm1,pm1,wcg1,wcp1]=margin(g); 可以得到校正后系统的相位裕量

pm1 = 49.7706

满足设计要求。

例 试用MA TLAB 对教材中例6-2中的系统设计滞后校正装置。 解 如例6-2中所述,校正前系统的开环传递函数为

)

15.0)(1(5

)(++=

s s s s G

编写MATLAB 程序如下: num=5;

den=[0.5 1.5 1 0];

[gm,pm,wcg,wcp]=margin(num,den); %求校正前的相位裕量 dpm=-180+40+12; %求?

[mu,pu,w]=bode(num,den);

wc=spline(pu,w,dpm); %在校正前曲线上找到与?对应的频率wc mu_db=20*log10(mu); %将幅值转化成以dB 为单位 m_wc=spline(w,mu_db,wc); %求未校正系统在wc 处的幅值 beta=10^(-m_wc/20); %求β值

w2=0.2*wc; %求滞后校正网络的转折频率2ω T=1/(beta*w2); %求T

nk=[beta*T 1];dk=[T 1]; %求校正网络的分子和分母系数

h1=tf(nk,dk); printsys(nk,dk,'s');

可得校正装置的传递函数为

10.76 s + 1 ----------- 102.3 s + 1

再输入下面的命令 h=tf(num,den); g=h*h1;

[gm1,pm1,wcg1,wcp1]=margin(g); 可得校正后的相角裕量为

pm1 = 41.5141

四、实验内容

1. 设典型二阶系统的闭环传递函数为2

222)(n

n n

s s s ωξωω++=Φ, 改变系统的参数 n ωξ,,观察并记录输出响应曲线,并分析n ωξ,的变化对系统性能的影响和性能

指标的变化。

2. 设系统的闭环传递函数为42)()(2+++=

Φs s a s K s ,5

.023)

()(2

3++++=Φs s s a s K s 改变系统的参数a K ,,观察并记录输出响应曲线,并求系统的时域性能指标,分析参数的变化对系统性能的影响和性能指标的变化。

3. 绘制下列系统的根轨迹图,分析开环零极点对系统性能的影响。 (1)25.33)1()(2+++=

s s s K s G r (2) )

3)(1()(++=

s s s K s G r (3) )3)(2()

5()(+++=

s s s s K s G r (4) )

52)(5()2()(2

++++=s s s s s K s G r 4. 绘制下列系统的伯德图和乃奎斯特图,并求系统的频域指标相位裕量和幅值裕量, 根据乃奎斯特图分析系统的稳定性,根据仿真结果分析系统的结构和参数与系统性能 的关系。 (1) 1

2.001.01)(2

++=

s s s G (2) )17.0)(15.0(1

)(++=s s s s G

(3) )15.0)(1()12.0(10)(+++=

s s s s s G (4) )

12.001.0)(15.0(10

)(2

+++=s s s s s G 5. 设系统的开环传递函数)

18.0()(+=

s s K

s G ,采用超前校正,使校正后系统速度误

差系数100=v K ,相位裕量 45≥γ,用MATLAB 设计校正装置的参数。

第二部分 基于MATLAB 离散系统的仿真

一、 实验目的

本实验采用MATLAB 实现对离散控制系统的性能分析。通过该实验,加深学生对系统阶次,型号,参数与系统性能的关系的理解。 二、实验环境

在计算机Windows 环境下安装好MATLAB6.3以上版本后,双击MATLAB 图标或成“开始”菜单打开MATLAB ,即可进入MATLAB 集成环境。 三、MATLAB 应用实例 1.z 变换和z 反变换

例 求单位斜坡函数t t f =)(的z 变换 解 命令窗口中键入

syms t T; ztrans(t*T)

运行结果为

ans =

T*z/(z-1)^2

即有

2

)

1(-z Tz

求表达式F 的z 反变换可用 f=iztrans(F)

2. 连续环节的离散化 例:已知:)(,1,1

)(2z G s T s

s s G 求=+=

h=tf([1 ],[1 1 0]); hd=c2d(h,1) 运行结果为: Transfer function:

0.3679 z + 0.2642 ---------------------- z^2 - 1.368 z + 0.3679

Sampling time: 1 3.脉冲传递函数

例:368.0)(,1)(21

-=-=z z

z G z z z G ,试求两个环节串联的开环脉冲传递函数

用MA TLAB 编写程序如下: h1=tf([1 0],[1 -1],[]);

h2=tf([1 0],[1 -0.368],[]); h3=series(h1,h2) 运算结果: Transfer function: z^2 --------------------- z^2 - 1.368 z + 0.368

例:368.0)(,1)(21

-=-=z z

z G z z z G ,试求两个环节并联的开环脉冲传递函数。

用MA TLAB 编写程序如下: h1=tf([1 0],[1 -1],[]); h2=tf([1 0],[1 -0.368],[]); h3=parallel(h1,h2) 运行结果如下: Transfer function: 2 z^2 - 1.368 z --------------------- z^2 - 1.368 z + 0.368 例 设)(,1z G s T 求=。

键入MA TLAB 命令

sys=tf([1],[1 1 0]); c2d(sys,1) 运行结果为

Transfer function: 0.3679 z + 0.2642 --------------------------

z^2 - 1.368 z + 0.3679

4.系统的输出响应

例 如图所示的采样控制系统,设T=1s ,单位阶跃输入,求系统的动态响应。

求得系统的闭环脉冲传递函数为

368

.0736.0632.0)()(2

+-=z z z

z R z C 令输入形式为 )51,1(ones u =

MATLAB 程序如下:

num=[0.632,0];den=[1,-0.736,0.368]; u=ones(1,51);k=0:50; y=filter(num,den,u); plot(k,y),grid;

xlabel('k');ylabel('y(k)');

运行结果见图:

例 系统结构如图所示,求系统的单位阶跃响应。

令输入为)51,1(ones u =

MATLAB 程序如下:

g=tf([1],[1 1 0]); %对象传递函数

d=c2d(g,1); %用零阶保持器离散化 cd=d/(1+d); %求闭环传递函数

cd1=minreal(cd); %传递函数约去公因子 [num,den]=tfdata(cd1,'v'); %求得分子、分母系数 u=ones(1,51);k=0:50;

y=filter(num,den,u); plot(k,y),grid;

xlabel('k');ylabel('y(k)');

运行结果见图。

例 系统脉冲传递函数为

6322

.02644

.03678.0)()(2+-+=z z z z R z C 求离散单位阶跃响应。 MATLAB 命令窗口键入:

num=[0.3678 0.2644];

den=[1 –1 0.6322]; dstep(num,den) 结果见图。

例 设某单位反馈离散系统的开环传递函数为 368

.0368.1264

.0368.0)(2

+-+=z z z z G 运用SIMULINK 进行仿真分析。

在SIMULINK 环境下构建该系统的结构图如图所示:

仿真结果如图所示:

5.稳定性分析

例 设控制系统的特征方程为 0391*******)(23=-+-=z z z z D 运用MATLAB 判断系统的稳定性。 编写MATLAB 程序如下

p=[45 -117 119 -39]; %特征方程系数多项式

r=roots(p); %求特征方程根r x=[-1:0.01:1]'; y=sqrt(1-x.^2);

plot(x,y,x,-y); %绘制单位圆

hold,plot(r,'xr'); %以红色的“×”表示特征方程根 程序运行结果见图:

由图可见,特征方程有两个根在z 平面单位圆外,故系统为不稳定。 四、实验内容

1.根据下面给出的系统结构图,用MATLAB 的语言实现连续系统的离散化。求出系统的开环脉冲传递函数和闭环脉冲传递函数。

(1) T=1

(2)T=0.1

(3)

T=0.5

(4)

T=0.2

(5)T=1

2.根据给出的系统结构图,用MA TLAB 语言或SIMULINK 绘制出系统的单位阶跃响应曲线, 并分析零阶保持器对系统性能的影响。 (1)

(2)

(3)

(4) T=0.1

T=0.5T=0.2s

(5)

(6)

3.根据给出的系统结构图,用MATLAB 的语言实现系统的稳定性判断并分析零阶保持器

对系统稳定性的影响。

(1)

(2)

(3) (4)

T=1s

T=1s

T=1s

T=1s

T=0.5T=0.2s

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仿真实验报告

MATLAB 仿真实验报告 课题名称:MATLAB 仿真——图像处理 学院:机电与信息工程学院 专业:电子信息科学与技术 年级班级:2012级电子二班 一、实验目的 1、掌握MATLAB处理图像的相关操作,熟悉相关的函数以及基本的MATLAB语句。 2、掌握对多维图像处理的相关技能,理解多维图像的相关性质 3、熟悉Help 命令的使用,掌握对相关函数的查找,了解Demos下的MATLAB自带的原函数文件。 4、熟练掌握部分绘图函数的应用,能够处理多维图像。 二、实验条件

MATLAB调试环境以及相关图像处理的基本MATLAB语句,会使用Help命令进行相关函数查找 三、实验内容 1、nddemo.m函数文件的相关介绍 Manipulating Multidimensional Arrays MATLAB supports arrays with more than two dimensions. Multidimensional arrays can be numeric, character, cell, or structure arrays. Multidimensional arrays can be used to represent multivariate data. MATLAB provides a number of functions that directly support multidimensional arrays. Contents : ●Creating multi-dimensional arrays 创建多维数组 ●Finding the dimensions寻找尺寸 ●Accessing elements 访问元素 ●Manipulating multi-dimensional arrays操纵多维数组 ●Selecting 2D matrices from multi-dimensional arrays从多维数组中选择二维矩 阵 (1)、Creating multi-dimensional arrays Multidimensional arrays in MATLAB are created the same way as two-dimensional arrays. For example, first define the 3 by 3 matrix, and then add a third dimension. The CAT function is a useful tool for building multidimensional arrays. B = cat(DIM,A1,A2,...) builds a multidimensional array by concatenating(联系起来)A1, A2 ... along the dimension DIM. Calls to CAT can be nested(嵌套). (2)、Finding the dimensions SIZE and NDIMS return the size and number of dimensions of matrices. (3)、Accessing elements To access a single element of a multidimensional array, use integer subscripts(整数下标). (4)、Manipulating multi-dimensional arrays

实验二 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仿真实验全部

实验一 MATLAB 及仿真实验(控制系统的时域分析) 一、实验目的 学习利用MATLAB 进行控制系统时域分析,包括典型响应、判断系统稳定性和分析系统的动态特性; 二、预习要点 1、 系统的典型响应有哪些 2、 如何判断系统稳定性 3、 系统的动态性能指标有哪些 三、实验方法 (一) 四种典型响应 1、 阶跃响应: 阶跃响应常用格式: 1、)(sys step ;其中sys 可以为连续系统,也可为离散系统。 2、),(Tn sys step ;表示时间范围0---Tn 。 3、),(T sys step ;表示时间范围向量T 指定。 4、),(T sys step Y =;可详细了解某段时间的输入、输出情况。 2、 脉冲响应: 脉冲函数在数学上的精确定义:0 ,0)(1)(0 ?==?∞ t x f dx x f 其拉氏变换为:) ()()()(1)(s G s f s G s Y s f === 所以脉冲响应即为传函的反拉氏变换。 脉冲响应函数常用格式: ① )(sys impulse ; ② ); ,();,(T sys impulse Tn sys impulse ③ ),(T sys impulse Y = (二) 分析系统稳定性 有以下三种方法: 1、 利用pzmap 绘制连续系统的零极点图; 2、 利用tf2zp 求出系统零极点; 3、 利用roots 求分母多项式的根来确定系统的极点 (三) 系统的动态特性分析 Matlab 提供了求取连续系统的单位阶跃响应函数step 、单位脉冲响应函数impulse 、零输入响应函数initial 以及任意输入下的仿真函数lsim.

Matlab实验第一次实验答案

实验一Matlab使用方法和程序设计 一、实验目的 1、掌握Matlab软件使用的基本方法; 2、熟悉Matlab的数据表示、基本运算和程序控制语句 3、熟悉Matlab绘图命令及基本绘图控制 4、熟悉Matlab程序设计的基本方法 二、实验内容: 1、帮助命令 使用help命令,查找sqrt(开方)函数的使用方法; 解:sqrt Square root Syntax B = sqrt(X) Description B = sqrt(X) returns the square root of each element of the array X. For the elements of X that are negative or complex, sqrt(X) produces complex results. Remarks See sqrtm for the matrix square root. Examples sqrt((-2:2)') ans = 0 + 1.4142i 0 + 1.0000i

1.0000 1.4142 2、矩阵运算 (1)矩阵的乘法 已知A=[1 2;3 4]; B=[5 5;7 8]; 求A^2*B 解: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 解: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)矩阵的转置及共轭转置

实验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.实验目的 (1)熟练掌握MATLAB 的程序流程控制结构。 (2)掌握M 文件的结构,M 函数文件编写、使用。 (3)熟练掌握函数调用和参数传递。 2.实验仪器 (1)Matlab6.5应用软件安装版 一套 (3)PC 机 一台 3. 实验原理 依据MA TLAB 的编程的原理,编写M 函数文件,调用M 函数文件,完成曲线绘制。 4. 实验步骤 (1)利用for 、while 控制语句和sum 指令求和。 (2)使用MA TLAB 函数文件绘图。 (3)利用置换指令绘制脉冲响应曲线. (4)利用feval 指令实现指定的函数。 5. 实验报告内容(选做其中两题) (1)分别用for 和while 循环语句计算∑==630i i 2 K 的程序,再写出一种避免循环的计算程序。 (提示:可考虑利用MA TLAB 的sum (X,n )函数,实现沿数组X 的第n 维求和。)保存为M 文件. (2)将课本例4-8子函数编程及调用演示,三个子图上的圆和多边形绘制在同一坐标系中。并保存为M 文件。保存输出结果图。 (3)利用置换指令subs(X,new),例4-18中的脉冲响应在t=[0,18]的曲线。并保存为M 文件。保存输出结果图。 (4)试利用feval ()指令计算F(x)+F 2(x),其中F 可取‘sin ’、‘cos ’。(提示:先编写以个M 函数function y=trif(F,x)实现F(x)+F 2(x)的计算,在编写调用函数完成F 为‘sin ’、‘cos ’的计算),并保存为M 文件。(指定完成sin(pi/2)+sin(pi/2)^2; cos(pi/3)+cos(pi/3)^2)

刘卫国版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程序设计

2014秋2012级《MATLAB程序设计》实验报告班级:软件C121姓名:冯杨腾学号:125692 实验三 MATLAB程序设计 一、实验目的 1、掌握建立和执行M文件的方法。 2、掌握选择结构、多分支选择结构程序的编程方法。 3、掌握多种循环结构程序的编程方法。 4、掌握定义函数文件和调用函数文件的方法。 二、实验内容 1、MATLAB M文件的创建与使用。 (1)建立自己工作目录,如D:\MATLAB。在File菜单中,单击 Set Path菜单项,在弹出对话框中建立目标文件夹,:单击Add Folder按钮,将自己的工作目录D:\MATLAB添加到搜索目录 之中,按Save按钮保存,如图1。 图1 工作目录设置 (2)在M文件编辑器中编制命令行文件。在File菜单中,单击 New—>M-File,弹出M文件编辑器,如图2:

图2 编辑器 在编辑器中输入如下命令程序: %求小于2000且为2的整数次幂的正整数。 f(1)=2; k=1; while f(k)<1000 f(k+1)=f(k)*2; k=k+1; end f,k 调试后,将其以形式保存在D:\MATLAB中。 (3)命令行程序运行。进入命令窗口,键入test1,观察运行结果: f = Columns 1 through 9 2 4 8 16 32 64 128 256 512 Column 10 1024 k = 10 (4)按上述步骤,在在编辑器中输入如下函数文件:

function f=tt(n) %求小于任何正整数且为2的整数次幂的正整数。 %c=n(n) %n 可取任意正整数。 %2004年8月。 f(1)=2; k=1; while f(k)> test2(9) f = 2 4 8 ans = 2 4 8 2、编写一个函数M 文件,计算下面函数的值,给出标量x 的值,调用该函数后,返回y 的值。 sin , (), 036,3 x x y x x x x x ≤??=<≤??-+>? 选择一些数据测试编写的函数。 源程序 :

增量调制MATLAB仿真实验

增量调制MATLAB仿真实验

增量调制(DM)实验 一、实验目的 (1)进一步掌握MATLAB的应用。 (2)进一步掌握计算机仿真方法。 (3)学会用MATLAB软件进行增量调制(DM)仿真实验。 二、实验原理 增量调制是由PCM发展而来的模拟信号数字化的一种编码方式,它是PCM的一种特例。增量调制编码基本原理是指用一位编码,这一位码不是表示信号抽样值的大小,而是表示抽样幅度的增量特性,即采用一位二进制数码“1”或“0”来表示信号在抽样时刻的值相对于前一个抽样时刻的值是增大还是减小,增大则输出“1”码,减小则输出“0”码。输出的“1”,“0”只是表示信号相对于前一个时刻的增减,不表示信号的绝对值。 增量调制最主要的特点就是它所产生的二进制代码表示模拟信号前后两个抽样值的差别(增加、还是减少)而不是代表抽样值本身的大小,因此把它称为增量调制。在增量调制系统的发端调制后的二进制代码1和0只表示信号这一个抽样时刻相对于前一个抽样时刻是增加(用1码)还是减少(用0码)。收端译码器每收到一个1码,译码器的输出相对于前一个时刻的值上升一个量化阶,而收到一个0码,译码器的输出相对于前一个时刻的值下降一个量化阶。 增量调制(DM)是DPCM的一种简化形式。在增量调制方式下,采用1比特量化器,即用1位二进制码传输样值的增量信息,预测器是

一个单位延迟器,延迟一个采样时间间隔。预测滤波器的分子系数向量是[0,1],分母系数为1。当前样值与预测器输出的前一样值相比较,如果其差值大于零,则发1码,如果小于零则发0码。 三、实验内容 增量调制系统框图如图一所示,其中量化器是一个零值比较器,根据输入的电平极性,输出为 δ,预测器是一个单位延迟器,其输出为前一个采样时刻的解码样值,编码器也是一个零值比较器,若其输入为负值,则编码输出为0,否则输出为1。解码器将输入1,0符号转换为 δ,然后与预测值相加后得出解码样值输出,同时也作为预测器的输入 输入样值 e n e n =δsgn(e n ) 传输 n ) n n-1+δsgn(e n ) x n + - + + 预测输出 + n-1 + 预测输出 解码样值输出 x n-1 预测输入x n =x n-1+δsgn(e n ) 图一 增量调制原理框图 设输入信号为: x(t)=sin2π50t+0.5sin 2π150t 增量调制的采样间隔为1ms,量化阶距δ=0.4,单位延迟器初始值为0。建立仿真模型并求出前20个采样点使客商的编码输出序列以 解码 编码 二电平量化 单位延迟 单位 延迟

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 倍。 ¥ 对系统频率特性的分析

实验五 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等数来验证这一结论。 %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:3 a = 3 10 5 16 8 4 2 1 2. 编程求满足∑=>m i i 1100002的最小m 值。 a=0; i=1; while (a<10000) a=a+pow2(i); i=i+1; end m=i-1; m 13 3. 编写一个函数,计算下面函数的值,给出x 的值,调用该函数后,返回y 的值。 function [y]=myfun1(x) ?? ???>+-≤<≤=3,630, 0,sin )(x x x x x x x y 选择一些数据测试你编写的函数。 function y=myfun1(x) if x<=0 y=sin(x);

高频电子线路Matlab仿真实验

高频电子线路Matlab 仿真实验要求 1. 仿真题目 (1) 线性频谱搬移电路仿真 根据线性频谱搬移原理,仿真普通调幅波。 基本要求:载波频率为8kHz ,调制信号频率为400Hz ,调幅度为0.3;画出调制信号、载波信号、已调信号波形,以及对应的频谱图。 扩展要求1:根据你的学号更改相应参数和代码完成仿真上述仿真;载波频率改为学号的后5位,调制信号改为学号后3位,调幅度设为最后1位/10。(学号中为0的全部替换为1,例如学号2010101014,则载波为11114Hz ,调制信号频率为114,调幅度为0.4)。 扩展要求2:根据扩展要求1的条件,仿真设计相应滤波器,并获取DSB-SC 和SSB 的信号和频谱。 (2) 调频信号仿真 根据调频原理,仿真调频波。 基本要求:载波频率为30KHz ,调制信号为1KHz ,调频灵敏度32310f k π=??,仿真调制信号,瞬时角频率,瞬时相位偏移的波形。 扩展要求:调制信号改为1KHz 的方波,其它条件不变,完成上述仿真。 2. 说明 (1) 仿真的基本要求每位同学都要完成,并且记入实验基本成绩。 (2) 扩展要求可以选择完成。

1.0 >> ma = 0.3; >> omega_c = 2 * pi * 8000; >> omega = 2 * pi * 400; >> t = 0 : 5 / 400 / 1000 : 5 / 400; >> u_cm = 1; >> fc = cos(omega_c * t); >> fa = cos(omega * t); >> u_am = u_cm * (1 + fa).* fc; >> U_c =fft(fc,1024); >> U_o =fft(fa,1024); >> U_am =fft(u_am, 1024); >> figure(1); >> subplot(321);plot(t, fa, 'k');title('调制信号');grid;axis([0 2/400 -1.5 1.5]); >> subplot(323);plot(t, fc, 'k');title('高频载波');grid;axis([0 2/400 -1.5 1.5]); >> subplot(325);plot(t, u_am, 'k');title('已调信号');grid;axis([0 2/400 -3 3]); >> fs = 5000; >> w1 = (0:511)/512*(fs/2)/1000; >> subplot(322);plot(w1, abs([U_am(1:512)']),'k');title('调制信号频谱');grid;axis([0 0.7 0 500]); >> subplot(324);plot(w1, abs([U_c(1:512)']),'k');title('高频载波频谱');grid;axis([0 0.7 0 500]); >> subplot(326);plot(w1, abs([U_am(1:512)']),'k');title('已调信号频谱');grid;axis([0 0.7 0 500]); 1.1 >> ma = 0.8; >> omega_c = 2 * pi * 11138; >> omega = 2 * pi * 138; >> t = 0 : 5 / 400 / 1000 : 5 / 400; >> u_cm = 1; >> fc = cos(omega_c * t);

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程序设计含实验报告

实验二M A T L A B程序设计含实验报告 集团标准化工作小组 #Q8QGGQT-GX8G08Q8-GNQGJ8-MHHGN#

实验二 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 3105168421 63105168421 运行下面的程序,按程序提示输入n=1,2,3,5,7等数来验证这一结论。 请为关键的Matlab 语句填写上相关注释,说明其含义或功能。 4. y 5. (Root Mean Square)的计算(1(2)x=rand(1,200),得到的x 为200个(0,1)之间均匀分布的随机数。 6.根据2 2222 1......3121116n ++++=π,求π的近似值。当n 分别取100、1000、10000时,结果是多少 思考题:

昆明理工大学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.360docs.net/doc/9a15003565.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 编程方法及仿真实验

《现代机械工程基础实验》之机械工程控制基础综合实验报告 姓名 学号 班级 山东建筑大学机电工程学院 2012.06.04~06

第一部分 Matlab 编程方法及仿真实验 实验1. 三维曲面的绘制(略) 实验2. 系统零极点绘制例:求部分分式展开式和)(t g 一个线性定常系统的传递函数是 1 5422 3)(2 3 ++++= s s s s s G (1) 使用MATLAB 建立传递函数,并确定它的极点和零点,写出)(s G 的部分分式展开式并绘制 系统的脉冲响应。 实验结果:零点-0.6667 极点-0.8796 + 1.1414i -0.8796 - 1.1414i -0.2408 实验3. 系统的阶跃响应 例. )(s G 的阶跃响应 对例2中由(1)式给出的传递函数)(s G ,增加一个0=s 处的极点,使用impulse 命令绘制其拉普拉斯反变换式曲线,得到阶跃响应图。将该响应与对)(s G 使用step 命令所得到的响应比较,确定系统的DC 增益。利用初值定理和终值定理来校验结果。 实验结果:DC 增益= 2

实验4. 双输入反馈系统单位阶跃响应 考虑一个如图1所示的反馈系统,它既有参考输入也有干扰输入,其中对象和传感器的传递函数是 )12)(15.0(4)(++=s s s G p ,105.01 )(+=s s H 控制器是一个增益为80,有一个在3-=s 处的零点,极点/零点比15=α超前控制器。推导 两个独立的MATLAB 模型,其中一个模型的输入为)(s R ,另一个输入为)(s D 。使用这些模型确定闭环零点和极点,并在同一坐标系内绘制它们的阶跃响应。 D (s ) 图1 具有参考和干扰输入的反馈系统方框图 实验结果: 参考输入的CL 极点:-49.3658 -7.3336 + 7.9786i -7.3336 - 7.9786i -3.4670 参考输入的DC 增益:320 干扰输入的CL 零点:-45 干扰输入的CL 极点:-49.3658 -7.3336 + 7.9786i -7.3336 - 7.9786i -3.4670 干扰输入的DC 增益:4 -20

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)

相关文档
最新文档