搜档网
当前位置:搜档网 › MATLAB仿真实验全部

MATLAB仿真实验全部

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

四、实验容

(一) 稳定性

1.系统传函为()272436

45232345234+++++++++=s s s s s s s s s s G ,试判断其稳定性

%Matlab 计算程序

num=[3 2 5 4 6];

den=[1 3 4 2 7 2];

G=tf(num,den);

pzmap(G);

p=roots(den)

2.用Matlab 求出2

53722)(2342++++++=s s s s s s s G 的极点。 %Matlab 计算程序

%求取极点

num=[1 2 2];

den=[1 7 3 5 2];

p=roots(den)

(二)阶跃响应

1. 二阶系统()10

2102++=s s s G 1)键入程序,观察并记录单位阶跃响应曲线

2)计算系统的闭环根、阻尼比、无阻尼振荡频率,并记录

3)记录实际测取的峰值大小、峰值时间及过渡过程时间,并填表:

由图1-3及其相关理论知识可填下表:3//πωπ==

d p t =1.0472

4)修改参数,分别实现1=ζ和2=ζ的响应曲线,并记录

5)修改参数,分别写出程序实现012

1w w n =和022w w n =的响应曲线,并记录 %Matlab 计算程序

第1)题:

4.52%(00.9)3.5

5%n s n t ζωζζω??=??=<

%单位阶跃响应曲线

clc

clear

num=[10];

den=[1 2 10];

step(num,den);

title('Step Response of G(s)=10/(s^2+2s+10)'); hold on

t=[0:0.001:6];

y1=1.02;

plot(t,y1)

第2)题:

%计算系统的闭环根、阻尼比、无阻尼振荡频率num=[10];den=[1 2 10];

G=tf(num,den);

[wn,z,p]=damp(G);

第4)题:

%kosi=1阶跃响应曲线

wn=sqrt(10);

kosi=1;

G=tf([wn*wn],[1 2*kosi*wn wn*wn]);

step(G);

title('Step Response of kosi=1');

%kosi=2的阶跃响应曲线

wn=sqrt(10);

kosi=2;

G=tf([wn*wn],[1 2*kosi*wn wn*wn]);

step(G);

title('Step Response of kosi=2');

第5)题:

%wn1=0.5w0的阶跃响应曲线

w0=sqrt(10);

kosi=1/sqrt(10);

wn1=0.5*w0;

G=tf([wn1*wn1],[1 2*kosi*wn1 wn1*wn1]); step(G);

title('Step Response of wn1=0.5w0');

%wn2=2w0的阶跃响应曲线

w0=sqrt(10);kosi=1/sqrt(10);wn2=2*w0;

G=tf([wn2*wn2],[1 2*kosi*wn2 wn2*wn2]); step(G);

title('Step Response of wn2=2w0');

2. 作出以下系统的阶跃响应,并与原系统响应曲线进行比较,作出相应的实验分析结果

(1)()10210221+++=

s s s s G ,有系统零点的情况 (2)()102105.0222++++=s s s s s G ,分子、分母多项式阶数相等

(3)()1025.0222+++=

s s s s s G ,分子多项式零次项为零 (4)()10222++=s s s

s G ,原响应的微分,微分系数为1/10

%各系统阶跃响应曲线比较

G0=tf([10],[1 2 10]);G1=tf([2 10],[1 2 10]);G2=tf([1 0.5 10],[1 2 10]); G3=tf([1 0.5 0],[1 2 10]);G4=tf([1 0 ],[1 2 10]);

step(G0,G1,G2,G3,G4);

grid on;

title('实验1.2 Step Response 曲线比较');

3. 单位阶跃响应:

25

425)()(2++=s s s R s C 求该系统单位阶跃响应曲线,并在所得图形上加网格线和标题

%单位阶跃响应

G=tf([25],[1 4 25]);

step(G);

grid on;

title('实验1.3 Step Response of G(s)=25/(s^2+4s+25)');

(三)系统动态特性分析

用Matlab 求二阶系统12012120)(2++=s s s G 和01

.0002.001.0)(2++=s s s G 的峰值时间p t 上升时间r t 调整时间s t 超调量%σ。

%G1阶跃响应

G1=tf([120],[1 12 120]);

step(G1);

grid on;

title(' Step Response of G1(s)=120/(s^2+12s+120)');

% G2单位阶跃响应

G2=tf([0.01],[1 0.002 0.01]);

step(G2);

grid on;

title(' Step Response of G2(s)=0.01/(s^2+10.002s+0.01)');、

实验二 MATLAB 及仿真实验(控制系统的根轨迹分析)

一 实验目的

1.利用计算机完成控制系统的根轨迹作图

2.了解控制系统根轨迹图的一般规律

3.利用根轨迹图进行系统分析

二 预习要点

1. 预习什么是系统根轨迹?

2. 闭环系统根轨迹绘制规则。

三 实验方法

(一) 方法:当系统中的开环增益k 从0到变化时,闭环特征方程的根在复平面上的一组曲线为根轨迹。设系统的开环传函为:)

()()(0s Q s N k s G =,则系统的闭环特征方程为:0)

()(1)(10=+=+s Q s N k s G 根轨迹即是描述上面方程的根,随k 变化在复平面的分布。

(二) MATLAB 画根轨迹的函数常用格式:利用Matlab 绘制控制系统的根轨迹主要用

pzmap ,rlocus ,rlocfind ,sgrid 函数。

1、零极点图绘制

? [p,z]=pzmap(a,b,c,d):返回状态空间描述系统的极点矢量和零点矢量,而不在屏

幕上绘制出零极点图。

? [p,z]=pzmap(num,den):返回传递函数描述系统的极点矢量和零点矢量,而不在屏

幕上绘制出零极点图。

? pzmap(a,b,c,d)或pzmap(num,den):不带输出参数项,则直接在s 复平面上绘制出

系统对应的零极点位置,极点用×表示,零点用o 表示。

? pzmap(p,z):根据系统已知的零极点列向量或行向量直接在s 复平面上绘制出对应

的零极点位置,极点用×表示,零点用o 表示。

2、根轨迹图绘制

? rlocus(a,b,c,d)或者rlocus(num,den):根据SISO 开环系统的状态空间描述模型

和传递函数模型,直接在屏幕上绘制出系统的根轨迹图。开环增益的值从零到无穷大变化。

? rlocus(a,b,c,d,k)或rlocus(num,den,k): 通过指定开环增益k 的变化围来绘制

系统的根轨迹图。

? r=rlocus(num,den,k) 或者[r,k]=rlocus(num,den) :不在屏幕上直接绘出系统的

根轨迹图,而根据开环增益变化矢量k ,返回闭环系统特征方程1+k*num(s)/den(s)=0的根r ,它有length(k)行,length(den)-1列,每行对应某个k 值时的所有闭环极点。或者同时返回k 与r 。

? 若给出传递函数描述系统的分子项num 为负,则利用rlocus 函数绘制的是系统的零

度根轨迹。(正反馈系统或非最小相位系统)

3、rlocfind()函数

? [k,p]=rlocfind(a,b,c,d)或者[k,p]=rlocfind(num,den)

它要求在屏幕上先已经绘制好有关的根轨迹图。然后,此命令将产生一个光标以用来选择希望的闭环极点。命令执行结果:k 为对应选择点处根轨迹开环增益;p 为此点处的系统闭环特征根。

? 不带输出参数项[k,p]时,同样可以执行,只是此时只将k 的值返回到缺省变量ans

中。

4、sgrid()函数

? sgrid :在现存的屏幕根轨迹或零极点图上绘制出自然振荡频率wn 、阻尼比矢量z

对应的格线。

? sgrid(‘new ’):是先清屏,再画格线。

? sgrid(z,wn):则绘制由用户指定的阻尼比矢量z 、自然振荡频率wn 的格线。

四 实验容

1. ()()()21++=s s s k s G g

要求:

A . 记录根轨迹的起点、终点与根轨迹的条数;

B . 确定根轨迹的分离点与相应的根轨迹增益;

C . 确定临界稳定时的根轨迹增益gL k

%Matlab 计算程序

z=[];p=[0 -1 -2];k=1;G=zpk(z,p,k);figure(1);pzmap(G)

figure(2);rlocus(G)

title('实验2.1所作曲线');

%求临界稳定时的根轨迹增益Kgl

z=[];p=[0 -1 -2];k=1;G=zpk(z,p,k);

rlocus(G)

title('实验2.1 临界稳定时的根轨迹增益Kgl');

[k,p]=rlocfind(G)

%求取根轨迹的分离点与相应的根轨迹增益

z=[];p=[0 -1 -2];k=1;G=zpk(z,p,k);

rlocus(G)

title('实验2.1 根轨迹的分离点与相应的根轨迹增益曲线图');

[k,p]=rlocfind(G)

2.()()

23)(++=s s s K s G g 要求:确定系统具有最大超调量时的根轨迹增益;

解:当Kg=5.5时,系统具有最大超调量%σ=3.89% ,

% Matlab 程序

num=5.5*[1 3];den=[1 2 0];G0=tf(num,den);G=feedback(G0,1,-1); step(G)

title('实验2.2 系统阶跃响应曲线');

3.绘制下列各系统根轨迹图。

%Matlab 计算程序

x1=[1 0];

x2=[1 4];

x3=[1 6];

x4=[1 4 1];

y1=conv(x1,x2);

y2=conv(x3,x4);

z=conv(y1,y2)

%绘制系统根轨迹图。

num=[1 2 4];den=[1 14 65 106 24 0];G0=tf(num,den);

G=feedback(G0,1,-1);rlocus(G)

title('实验2.3系统根轨迹图');

4.绘制下列各系统根轨迹图。开环传递函数:

(1))

6.3()2.0()()(2++=s s s k s H s G ; %Matlab 计算程序

G=tf([1 0.2],[1 3.6 0 0]);

rlocus(G)

title('实验2.4开环系统 G(s)H(s)=k(s+0.2)/[s^2(s+3.6)] 根轨迹图');

(2))106.0)(5.0()()(2+++=s s s s k

s H s G

%Matlab 计算程序

x1=[1 0];x2=[1 0.5];x3=[1 0.6 10];

y=conv(x1,x2);

z=conv(x3,y)

%绘制系统根轨迹图

G=tf([1],[ 1 1.1 10.3 5 0]);

rlocus(G)

title('实验2.4开环系统 G(s)H(s)=k/[s(s+0.5)(s^2+0.6s+10)] 根轨迹图');

5.试绘制下面系统根轨迹图

%Matlab计算程序

z=[1 4 16];r=roots(z)

%绘制系统根轨迹图:

z=-1;p=[0 1 -2.0000 + 3.4641i -2.0000 - 3.4641i];k=1;

G0=zpk(z,p,k);G=feedback(G0,1,-1);rlocus(G);

title('实验2.5所求系统根轨迹图');

实验三 MATLAB及仿真实验(控制系统的频域分析)

一实验目的

1. 利用计算机作出开环系统的波特图

2. 观察记录控制系统的开环频率特性

3. 控制系统的开环频率特性分析

二预习要点

1.预习Bode图和Nyquist图的画法;

2.映射定理的容;

3.Nyquist稳定性判据容。

三实验方法

1、奈奎斯特图(幅相频率特性图)

?对于频率特性函数G(jw),给出w从负无穷到正无穷的一系列数值,分别求出Im(G(jw))和Re(G(jw))。以Re(G(jw)) 为横坐标, Im(G(jw)) 为纵坐标绘制成为极坐标频率特性图。

MATLAB提供了函数nyquist()来绘制系统的极坐标图,其用法如下:

?nyquist(a,b,c,d):绘制出系统的一组Nyquist曲线,每条曲线相应于连续状态空间系统[a,b,c,d]的输入/输出组合对。其中频率围由函数自动选取,而且在响应快速变化的位置会自动采用更多取样点。

?nyquist(a,b,c,d,iu):可得到从系统第iu个输入到所有输出的极坐标图。

?nyquist(num,den):可绘制出以连续时间多项式传递函数表示的系统的极坐标图。

?nyquist(a,b,c,d,iu,w)或nyquist(num,den,w):可利用指定的角频率矢量绘制出系统的极坐标图。

?当不带返回参数时,直接在屏幕上绘制出系统的极坐标图(图上用箭头表示w的变化方向,负无穷到正无穷)。当带输出变量[re,im,w]引用函数时,可得到系统频率特性函数的实部re和虚部im及角频率点w矢量(为正的部分)。可以用plot(re,im)绘制出对应w从负无穷到零变化的部分。

2、对数频率特性图(波特图)

对数频率特性图包括了对数幅频特性图和对数相频特性图。横坐标为频率w ,采用对数分度,单位为弧度/秒;纵坐标均匀分度,分别为幅值函数20lgA(w),以dB 表示;相角,以度表示。

MATLAB 提供了函数bode()来绘制系统的波特图,其用法如下:

? bode(a,b,c,d,iu):可得到从系统第iu 个输入到所有输出的波特图。

bode(a,求取系统对数频率特性图(波特图):bode()

求取系统奈奎斯特图(幅相曲线图或极坐标图):nyquist() b,c,d):自动绘制出系统的一组Bode 图,它们是针对连续状态空间系统[a,b,c,d]的每个输入的Bode 图。其中频率围由函数自动选取,而且在响应快速变化的位置会自动采用更多取样点。

? bode(num,den):可绘制出以连续时间多项式传递函数表示的系统的波特图。

? bode(a,b,c,d,iu,w)或bode(num,den,w):可利用指定的角频率矢量绘制出系统的

波特图。

? 当带输出变量[mag,pha,w]或[mag,pha]引用函数时,可得到系统波特图相应的幅值

mag 、相角pha 及角频率点w 矢量或只是返回幅值与相角。相角以度为单位,幅值可转换为分贝单位:magdb=20×log10(mag)

四 实验容

1.用Matlab 作Bode 图. 要求: 画出对应Bode 图 , 并加标题.

(1)25

425)(2++=s s s G (2))

92.1()12.0(9)(22++++=s s s s s s G %Matlab 计算程序

sys=tf([25],[1 4 25]);figure(1);bode(sys);

title('实验3.1 Bode Diagram of G(s)=25/(s^2+4s+25)');

%Matlab 计算程序

sys=tf([9 1.8 9],[1 1.2 9 0]);

figure(1);

bode(sys);

grid on;

title('实验3.1 Bode Diagram of G(s)=9(s^2+0.2s+1)/[s (s^2+1.2s+9)]');

% Matlab 计算程序(扩大坐标的Bode 图)

sys=tf([9 1.8 9],[1 1.2 9 0]); w=logspace(-2,3,100);figure(1);bode(sys,w);grid on; title('实验3.1 Bode Diagram of G(s)=9(s^2+0.2s+1)/[s (s^2+1.2s+9)]');

2.用Matlab 作 Nyquist 图. 要求画对应Nyquist 图,并加网格和标题.

1

8.01)(2++=

s s s G %Matlab 计算程序

sys=tf([1],[1 0.8 1]);

figure(1);

nyquist(sys);

grid on;

title('实验3.2 Nyquist Plot of G(s)=1/(s^2+0.8s+1)');

3.典型二阶系统2222)(n

n n s s s G ?ξ??++=,试绘制ξ取不同值时的Bode 图。取]0.1:1.0:1.0[,6==ξ?n 。

Matlab 绘图

clear

close all

clc

wn=6;

kosi=[0.1:0.1:1.0];

%在对数空间上生成从10^(-1)到10^1共100个数据的横坐标

w=logspace(-1,1,100);

num=wn^2;

for kos=kosi

den=[1 2*kos*wn wn^2];

[mag,pha,w1]=bode(num,den,w);

% 注意mag 的单位不是分贝,若需要分贝表示

% 可以通过20*log10(mag)进行转换

subplot(211);

hold on ;

semilogx(w1,mag)

% 注意在所绘制的图形窗口会发现x 轴并没有取对数分度

subplot(212);

hold on ;

semilogx(w1,pha)

end

subplot(211)

grid on

title('bode plot')

xlabel('frequency(w)')

ylabel('amplitude')

text(6.2,5,'kosi=0.1')

text(2,0.5,'kosi=1.0')

subplot(212)

grid on

xlabel('frequency(w)')

ylabel('phase deg')

text(5,-20,'kosi=0.1')

text(2,-85,'kosi=1.0')

hold off

4.某开环传函为:)

2)(5(50)(-+=s s s G ,试绘制系统的Nyquist 曲线,并判断闭环系统稳定性,最后求出闭环系统的单位脉冲响应。

%绘制系统的Nyquist 曲线

z=[];

p=[-5 2];

k=50;

sys=zpk(z,p,k);

figure(1);

nyquist(sys);

grid on;

title('实验3.4 Nyquist Plot of G(s)=50/[(s+5)(s-2)]');

%闭环系统单位脉冲响应

z=[];p=[-5 2];k=50;sys=zpk(z,p,k);sys2=feedback(sys,1,-1);impulse(sys2) grid on;

title('实验3.4 闭环Impulse Response of G(s)=50/[(s+5)(s-2)]');

5.()???==++=1.0,5.0,1,21.0,121

22ζζT Ts s T s G

%作波特曲线图

kosi1=2;kosi2=1;kosi3=0.5;kosi4=0.1;

num=0.01;den1=[0.01 0.2*kosi1 1]; den2=[0.01 0.2*kosi2 1];

den3=[0.01 0.2*kosi3 1]; den4=[0.01 0.2*kosi4 1];

G1=tf(num,den1); G2=tf(num,den2);

G3=tf(num,den3); G4=tf(num,den4);

bode(G1,G2,G3,G4);grid on;

title('实验3.5 G(s) 波特曲线簇');

6.()()()11.0101.06

.31++=s s s s G ,要求:

(a) 作波特图

(b) 由稳定裕度命令计算系统的稳定裕度g L 和c γ,并确定系统的稳定性 (c) 在图上作近似折线特性,与原准确特性相比

(a)

%作波特图

G=zpk([],[0 -100 -10],31.6);bode(G);grid on;

title('实验3.6 G(s)=31.6/[s(0.01s+1)(0.1s+1) ] Bode 曲线图');

%计算系统的稳定裕度g L 和c γ

G=zpk([],[0 -100 -10],31.6);margin(G);grid on;

7.已知系统结构图如图所示 :

其中:(1)()1=s G c (2)()()11

+=s s s G c

要求:

(a )作波特图,并将曲线保持进行比较

(b )分别计算两个系统的稳定裕度值,然后作性能比较

(a )

%Matlab 计算程序

Gc1=tf([1],[1]);Gc2=tf([1],[1 1 0]);G=tf([1],[1 1 0]);G11=series(Gc1,G);G22=series(Gc2,G);

sys1=feedback(G11,1,-1);sys2=feedback(G22,1,-1);

bode(sys1,sys2);

grid on;title('波特图曲线比较');

现代信号处理Matlab仿真——例611

例6.11 利用卡尔曼滤波估计一个未知常数 题目: 设已知一个未知常数x 的噪声观测集合,已知噪声v(n)的均值为零, 方差为 ,v(n)与x 不相关,试用卡尔曼滤波估计该常数 题目分析: 回忆Kalman 递推估计公式 由于已知x 为一常数,即不随时间n 变化,因此可以得到: 状态方程: x(n)=x(n-1) 观测方程: y(n)=x(n)+v(n) 得到A(n)=1,C(n)=1, , 将A(n)=1,代入迭代公式 得到:P(n|n-1)=P(n-1|n-1) 用P(n-1)来表示P(n|n-1)和P(n-1|n-1),这是卡尔曼增益表达式变为 从而 2v σ1??(|1)(1)(1|1)(|1)(1)(1|1)(1)()()(|1)()[()(|1)()()]???(|)(|1)()[()()(|1)](|)[()()](|1)H w H H v x n n A n x n n P n n A n P n n A n Q n K n P n n C n C n P n n C n Q n x n n x n n K n y n C n x n n P n n I K n C n P n n --=----=----+=--+=-+--=--2()v v Q n σ=()0w Q n =(|1)(1)(1|1)(1)()H w P n n A n P n n A n Q n -=----+21 ()(|1)[(|1)]v K n P n n P n n σ-=--+22(1)()[1()](1)(1)v v P n P n K n P n P n σσ-=--=-+

Matlab上机实验答案

Matlab上机实验答案 实验一 MATLAB运算基础 1. 先求下列表达式的值,然后显示MATLAB工作空间的使用情况并保存全部变量。 >> z1=2*sin(85*pi/180)/(1+exp(2)) z1 = >> x=[2 1+2i; 5]; >> z2=1/2*log(x+sqrt(1+x^2)) z2 = - + + -

>> a=::; >> z3=(exp.*a)-exp.*a))./2.*sin(a++log(+a)./2) (>> z33=(exp*a)-exp*a))/2.*sin(a++log(+a)/2)可以验证z3==z33,是否都为1) z3 = Columns 1 through 5 + + + + + Columns 6 through 10 + + + + + Columns 11 through 15 + + + + + Columns 16 through 20 + + + + +

Columns 21 through 25 + + + + + Columns 26 through 30 + + + + + Columns 31 through 35 + + + + + Columns 36 through 40 + + + + + Columns 41 through 45 + + + + + Columns 46 through 50

+ + + + + Columns 51 through 55 + + + + + Columns 56 through 60 + + + + + Column 61 + (4) 2 2 4 2 01 112 2123 t t z t t t t t ?≤< ? =-≤< ? ?-+≤< ? ,其中t=0:: >> t=0::; >> z4=(t>=0&t<1).*(t.^2)+(t>=1&t<2).*(t.^2-1)+(t>=2&t<3).*(t.^ 2-2.*t+1) z4 =

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仿真实例-卫星轨迹

卫星轨迹 一.问题提出 设卫星在空中运行的运动方程为: 其中是k 重力系数(k=401408km3/s)。卫星轨道采用极坐标表示,通过仿真,研究发射速度对卫星轨道的影响。实验将作出卫星在地球表面(r=6400KM ,θ=0)分别以v=8KM/s,v=10KM/s,v=12KM/s 发射时,卫星绕地球运行的轨迹。 二.问题分析 1.卫星运动方程一个二阶微分方程组,应用Matlab 的常微分方程求解命令ode45求解时,首先需要将二阶微分方程组转换成一阶微分方程组。若设,则有: 2.建立极坐标如上图所示,初值分别为:卫星径向初始位置,即地球半径:y(1,1)=6400;卫星初始角度位置:y(2,1)=0;卫星初始径向线速度:y(3,1)=0;卫星初始周向角速度:y(4,1)=v/6400。 3.将上述一阶微分方程及其初值带入常微分方程求解命令ode45求解,可得到一定时间间隔的卫星的径向坐标值y(1)向量;周向角度坐标值y(2)向量;径向线速度y(3)向量;周向角速度y(4)向量。 4.通过以上步骤所求得的是极坐标下的解,若需要在直角坐标系下绘制卫星的运动轨迹,还需要进行坐标变换,将径向坐标值y(1)向量;周向角度坐标值y(2)向量通过以下方程转换为直角坐标下的横纵坐标值X,Y 。 5.卫星发射速度速度的不同将导致卫星的运动轨迹不同,实验将绘制卫星分别以v=8KM/s ,v=10KM/s ,v=12KM/s 的初速度发射的运动轨迹。 三.Matlab 程序及注释 1.主程序 v=input('请输入卫星发射速度单位Km/s :\nv=');%卫星发射速度输入。 axis([-264007000-1000042400]);%定制图形输出坐标范围。 %为了直观表达卫星轨迹,以下语句将绘制三维地球。 [x1,y1,z1]=sphere(15);%绘制单位球。 x1=x1*6400;y1=y1*6400;???????-=+-=dt d dt dr r dt d dt d r r k dt r d θ θθ2)(2 22222θ==)2(,)1(y r y ?????????????**-=**+*-===)1(/)4()3(2)4()4()4()1()1()1()3()4()2() 3()1(y y y dt dy y y y y y k dt dy y dt dy y dt dy ???*=*=)] 2(sin[)1(Y )]2(cos[)1(X y y y y

MATLAB全部实验及答案

MATLAB全部实验及答案 实验一、MATLAB基本操作 实验内容及步骤 4、有关向量、矩阵或数组的一些运算 (1)设A=15;B=20;求C=A+B与c=a+b? (2)设A=[1 2 3;4 5 6;7 8 9],B=[9 8 7;6 5 4;3 2 1];求A*B与 A.*B? A*B就是线代里面的矩阵相乘 A.*B是对应位置的元素相乘(3)设a=10,b=20;求i=a/b=0.5与j=a\b=2? (4)设a=[1 -2 3;4 5 -4;5 -6 7] 请设计出程序,分别找出小于0的矩阵元素及其位置(单下标、全 下标的形式),并将其单下标转换成全下标。 clear,clc a=[1 -2 3;4 5 -4;5 -6 7]; [x,y]=find(a<0); c=[]; for i=1:length(x) c(i,1)=a(x(i),y(i)); c(i,2)=x(i); c(i,3)=y(i); c(i,4)=(y(i)-1)*size(a,2)+x(i); end c

(5)在MATLAB命令行窗口运行A=[1,2;3,4]+i*[5,6;7,8];看结果如何?如果改成运行A=[1,2;3,4]+i[5,6;7,8],结果又如何?前面那 个是虚数矩阵,后面那个出错 (6)请写出完成下列计算的指令: a=[1 2 3;3 4 2;5 2 3],求a^2=?,a.^2=? a^2= 22 16 16 25 26 23 26 24 28 a.^2= 1 4 9 9 16 4 25 4 9 (7)有一段指令如下,请思考并说明运行结果及其原因 clear X=[1 2;8 9;3 6]; X( : ) 转化为列向量 (8)使用三元组方法,创建下列稀疏矩阵 2 0 8 0 0 0 0 1 0 4 0 0 6 0 0 0 方法一: clear,clc

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实验五分支结构程序设计答案

实验五分支结构程序设计 实验内容 (1)从键盘输入一个数,将它反向输出,例如输入693,输出为396 >> clear >> format long g s=input('s=') n=fix(log10(s)); A=0; for i=1:n a=fix(s/10^n); x=fix(mod(s,10^i)/10.^(i-1)); A=A+x*10^(n+1-i); end A+a s=693 s = 693 ans = 396 (2)输入一个百分制成绩,要求输出成绩等级A,B,C,D,E其中90-100位A,80-89为B,70-79为C,60-69为D,60以下为E 1)分别用if语句和switch语句实现 2)输入百分制成绩后要判断成绩的合理性,对不合理的成绩应输出出错信息 If语句 >> a=input('输入成绩') if a>=90&a<=100 disp('A 成绩合理'); elseif a>=80&a<90 disp('B 成绩合理'); elseif a>=70&a<80 disp('C 成绩合理');

elseif a>=60&a<70 disp('D 成绩合理'); elseif a<60 disp('E 成绩合理'); else disp('成绩错误') end 输入成绩98 a = 98 A 成绩合理 >> a=input('输入成绩') if a>=90&a<=100 disp('A 成绩合理'); elseif a>=80&a<90 disp('B 成绩合理'); elseif a>=70&a<80 disp('C 成绩合理'); elseif a>=60&a<70 disp('D 成绩合理'); elseif a<60 disp('E 成绩合理'); else disp('成绩错误') end 输入成绩148 a = 148 成绩错误 switch语句 >> a=input('输入成绩') switch a; case num2cell(0:59) disp('E 成绩合理'); case num2cell(60:69) disp('D 成绩合理'); case num2cell(70:79) disp('C 成绩合理'); case num2cell(80:89) disp('B 成绩合理'); case num2cell(90:100) disp('A 成绩合理'); otherwise disp('成绩错误'); 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实现通信系统仿真实例

补充内容:模拟调制系统的MATLAB 仿真 1.抽样定理 为了用实验的手段对连续信号分析,需要先对信号进行抽样(时间上的离散化),把连续数据转变为离散数据分析。抽样(时间离散化)是模拟信号数字化的第一步。 Nyquist 抽样定律:要无失真地恢复出抽样前的信号,要求抽样频率要大于等于两倍基带信号带宽。 抽样定理建立了模拟信号和离散信号之间的关系,在Matlab 中对模拟信号的实验仿真都是通过先抽样,转变成离散信号,然后用该离散信号近似替代原来的模拟信号进行分析的。 【例1】用图形表示DSB 调制波形)4cos()2cos(t t y ππ= 及其包络线。 clf %%计算抽样时间间隔 fh=1;%%调制信号带宽(Hz) fs=100*fh;%%一般选取的抽样频率要远大于基带信号频率,即抽样时间间隔要尽可能短。 ts=1/fs; %%根据抽样时间间隔进行抽样,并计算出信号和包络 t=(0:ts:pi/2)';%抽样时间间隔要足够小,要满足抽样定理。 envelop=cos(2*pi*t);%%DSB 信号包络 y=cos(2*pi*t).*cos(4*pi*t);%已调信号 %画出已调信号包络线 plot(t,envelop,'r:','LineWidth',3); hold on plot(t,-envelop,'r:','LineWidth',3); %画出已调信号波形 plot(t,y,'b','LineWidth',3); axis([0,pi/2,-1,1])% hold off% xlabel('t'); %写出图例 【例2】用图形表示DSB 调制波形)6cos()2cos(t t y ππ= 及其包络线。 clf %%计算抽样时间间隔 fh=1;%%调制信号带宽(Hz) fs=100*fh;%抽样时间间隔要足够小,要满足抽样定理。 ts=1/fs; %%根据抽样时间间隔进行抽样

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)矩阵的转置及共轭转置

刘卫国版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仿真实验

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

MATLAB上机实验(答案)

MATLAB工具软件实验(1) (1)生成一个4×4的随机矩阵,求该矩阵的特征值和特征向量。程序: A=rand(4) [L,D]=eig(A) 结果: A = 0.9501 0.8913 0.8214 0.9218 0.2311 0.7621 0.4447 0.7382 0.6068 0.4565 0.6154 0.1763 0.4860 0.0185 0.7919 0.4057 L = -0.7412 -0.2729 - 0.1338i -0.2729 + 0.1338i -0.5413 -0.3955 -0.2609 - 0.4421i -0.2609 + 0.4421i 0.5416 -0.4062 -0.0833 + 0.4672i -0.0833 - 0.4672i 0.4276 -0.3595 0.6472 0.6472 -0.4804 D = 2.3230 0 0 0 0 0.0914 + 0.4586i 0 0 0 0 0.0914 - 0.4586i 0 0 0 0 0.2275 (2)给出一系列的a值,采用函数 22 22 1 25 x y a a += - 画一组椭圆。 程序: a=0.5:0.5:4.5; % a的绝对值不能大于5 t=[0:pi/50:2*pi]'; % 用参数t表示椭圆方程 X=cos(t)*a; Y=sin(t)*sqrt(25-a.^2); plot(X,Y) 结果: (3)X=[9,2,-3,-6,7,-2,1,7,4,-6,8,4,0,-2], (a)写出计算其负元素个数的程序。程序: X=[9,2,-3,-6,7,-2,1,7,4,-6,8,4,0,-2]; L=X<0; A=sum(L) 结果: A =

高频电子线路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上机实验答案

一熟悉Matlab工作环境 1、熟悉Matlab的5个基本窗口 思考题: (1)变量如何声明,变量名须遵守什么规则、是否区分大小写。 答:变量一般不需事先对变量的数据类型进行声明,系统会依据变量被赋值的类型自动进行类型识别,也就是说变量可以直接赋值而不用提前声明。变量名要遵守以下几条规则:?变量名必须以字母开头,只能由字母、数字或下划线组成。 ?变量名区分大小写。 ?变量名不能超过63个字符。 ?关键字不能作为变量名。 ?最好不要用特殊常量作为变量名。 (2)试说明分号、逗号、冒号的用法。 分号:分隔不想显示计算结果的各语句;矩阵行与行的分隔符。 逗号:分隔欲显示计算结果的各语句;变量分隔符;矩阵一行中各元素间的分隔符。 冒号:用于生成一维数值数组;表示一维数组的全部元素或多维数组某一维的全部元素。 (3)linspace()称为“线性等分”函数,说明它的用法。 LINSPACE Linearly spaced vector. 线性等分函数 LINSPACE(X1, X2) generates a row vector of 100 linearly equally spaced points between X1 and X2. 以X1为首元素,X2为末元素平均生成100个元素的行向量。 LINSPACE(X1, X2, N) generates N points between X1 and X2. For N < 2, LINSPACE returns X2. 以X1为首元素,X2为末元素平均生成n个元素的行向量。如果n<2,返回X2。 Class support for inputs X1,X2: float: double, single 数据类型:单精度、双精度浮点型。 (4)说明函数ones()、zeros()、eye()的用法。 ones()生成全1矩阵。 zeros()生成全0矩阵。 eye()生成单位矩阵。 2、Matlab的数值显示格式

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

相关主题