当前位置:文档之家› 实验四 用MATLAB求解状态空间模型

实验四 用MATLAB求解状态空间模型

实验四 用MATLAB求解状态空间模型
实验四 用MATLAB求解状态空间模型

实验四 用MATLAB 求解状态空间模型

1、实验设备

MATLAB 软件

2、实验目的

① 学习线性定常连续系统的状态空间模型求解、掌握MATLAB 中关于求解该模型的主要函数;

② 通过编程、上机调试,进行求解。

3、实验原理说明

Matlab 提供了非常丰富的线性定常连续系统的状态空间模型求解(即系统运动轨迹的计算)的功能,主要的函数有:

初始状态响应函数initial()、阶跃响应函数step()以及可计算任意输入的系统响应数值计算函数lsim()和符号计算函数sym_lsim()。

数值计算问题可由基本的Matlab 函数完成,符号计算问题则需要用到Matlab 的符号工具箱。

4、实验步骤

① 根据所给状态空间模型,依据线性定常连续系统状态方程的解理论,采用MATLAB 编程。

② 在MATLAB 界面下调试程序,并检查是否运行正确。

习题1:试在Matlab 中计算如下系统在[0,5s]的初始状态响应,并求解初始状态响应表达式。

Matlab 程序如下:

A=[0 1; -2 -3];

B=[]; C=[]; D=[];

x0=[1; 2]; sys=ss(A,B,C,D);

[y,t,x]=initial(sys,x0,0:5);

plot(t,x)

0011232????==????--????x x x

习题2:试在Matlab 中计算如下系统在[0,10s]内周期为3s 的单位方波输入下的状态响应。并计算该系统的单位阶跃状态响应表达式。

Matlab 程序如下:

A=[0 1; -2 -3];

B=[0; 1]; C=[]; D=[];

x0=[1; 2];

sys=ss(A,B,C,D);

[u t]=gensig('square',3,10,0.1)

0011232????==????--????

x x x

[y,t,x] = lsim(sys,u,t,x0) plot(t,u,t,x);

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求解传染病的SIS微分方程模型,并绘制教材P139页图3-图6。 SIS模型 假设: (1)、t时刻人群分为易感者(占总人数比例的s(t))和已感染者(占总人数比例的i(t))。 (2)、每个病人每天有效接触的平均人数是常数λ,λ称为日接触率,当健康者与病人接触时,健康者受感染成为病人。 (3)、病人每天被治愈的占病人总数的比例为μ,称为日治愈率,显然1 为这种传染病的平均传染期。 μ 则建立微分方程模型为: 令,则模型可写作 分别作图: 页脚内容1

当sigma>1时 Step1:先定义函数 function y=pr1(i,lambda,sigma) y=-lambda.*i.*(i-(1-1./sigma)) step2:作图 lambda=0.3;sigma=2; i=0:0.01:1; y=pr1(i,lambda,sigma) plot(i,y) 页脚内容2

页脚内容3 00.10.20.30.40.50.60.70.80.91 -0.16 -0.14-0.12-0.1-0.08-0.06-0.04-0.020 0.02 当sigma<1时 Step1:先定义函数 function y=pr1(i,lambda,sigma) y=-lambda.*i.*(i-(1-1./sigma)) step2:作图 lambda=0.3;sigma=0.5; i=0:0.01:1; y=pr1(i,lambda,sigma) plot(i,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求解线性规划实验报告

实验三 线性规划 程序: linprog c=[-0.4 -0.28 -0.32 -0.72 -0.64 -0.6]; A=[0.01 0.01 0.01 0.03 0.03 0.03;0.02 0 0 0.05 0 0;0 0.02 0 0 0.05 0;0 0 0.03 0 0 0.08]; b=[850;700;100;900]; Aeq=[]; beq=[]; vlb=[0;0;0;0;0;0]; vub=[]; [x,fval]=linprog(c,A,b,Aeq,beq,vlb,vub) Exam5: function f=fun3(x); f=-x(1)-2*x(2)+(1/2)*x(1)^2+(1/2)*x(2)^2 实验目的 2、掌握用数学软件包求解线性规划问题。 1、了解线性规划的基本内容。 例1 max 6543216.064.072.032.028.04.0x x x x x x z +++++= 85003.003.003.001.001.001.0..654321≤+++++x x x x x x t s 70005.002.041≤+x x 10005.002.052≤+x x 90008.003.063≤+x x 6,2,10 =≥j x j

x0=[1;1]; A=[2 3 ;1 4]; b=[6;5]; Aeq=[];beq=[]; VLB=[0;0]; VUB=[]; [x,fval]=fmincon('fun3',x0,A,b,Aeq,beq,VLB,VUB) 书 求下列非线性规划 2221232212322 1232 12223123min 8020 ..2023,,0x x x x x x x x x s t x x x x x x x +++?-+≥?++≤??--+=??+=? ?≥? 在Matlab 2013软件中输入如下程序: (i )编写M 文件fun1.m 定义目标函数 function f=fun1(x); f=sum(x.^2)+8; (ii )编写M 文件fun2.m 定义非线性约束条件 function [g,h]=fun2(x); g=[-x(1)^2+x(2)-x(3)^2 x(1)+x(2)^2+x(3)^3-20]; %非线性不等式约束 h=[-x(1)-x(2)^2+2 x(2)+2*x(3)^2-3]; %非线性等式约束 (iii )编写主程序文件example2.m 如下: options=optimset('largescale','off'); [x,y]=fmincon('fun1',rand(3,1),[],[],[],[],zeros(3,1),[], ... 'fun2', options) 就可以求得当1230.5522 1.2033,,0.9478x x x ===时,最小值y =10.6511。 4. 选修课的策略 决策目标为选修的课程总数最少,即 921min x x x +++ 约束条件: (1) 满足课程要求:(至少2门数学课程,3门运筹学课程和2门计算机课程)

实验一MATLAB系统的传递函数和状态空间表达式的转换

实验一 MATLAB 系统的传递函数和状态空间表达式的转换 一、 实验目的 1、学习多变量系统状态空间表达式的建立方法; 2、通过编程、上机调试,掌握多变量系统状态空间表达式与传递函数之间相互转换的方法; 3、掌握相应的MATLAB 函数。 二、 实验原理 设系统的模型如式(1.1)所示: ???+=+=D Cx y Bu Ax x ' x ''R ∈ u ∈R ’’’ y ∈R P (1.1) 其中A 为nXn 维系统矩阵、B 为nXm 维输入矩阵、C 为pXn 维输出矩阵,D 为直接传递函数。系统的传递函数和状态空间表达式之间的关系如式(1.2)所示 G(s)=num(s)/den(s)=C (SI-A)-1 B+D (1.2) 式(1.2)中,num(s)表示传递函数的分子阵,其维数是pXm ,den(s)表示传递函数的按s 降幂排列的分母。 表示状态空间模型和传递函数的MATLAB 函数如下: 函数ss (state space 的首字母)给出了状态空间模型,其一般形式是: sys=ss(A,B,C,D) 函数tf (transfer function 的首字母)给出了传递函数,其一般形式是:

G=tf(num ,den) 其中num 表示传递函数中分子多项式的系数向量(单输入单输出系统),den 表示传递函数中分母多项式的系数向量。 函数tf2ss 给出了传递函数的一个状态空间实现,其一般形式是: [A,B,C,D]=tf2ss(num,den) 函数ss2tf 给出了状态空间模型所描述系统的传递函数,其一般形式是: [num,den]=ss2tf(A,B,C,D,iu) 其中对于多输入系统,必须确定iu 的值。例如,若系统有三个输入u 1,u 2,u 3,则iu 必须是1、2、或3,其中1表示u 1,2表示u 2,3表示u 3。该函数的结果是第iu 个输入到所有输出的传递函数。 三.实验步骤及结果 1、应用MATLAB 对下列系统编程,求系统的A 、B 、C 、D 阵,然后验证传递函数是相同的。 G(s)= ?? ????+++352^12s s s s 3+4s 2+5s+1 程序和运行结果:

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

MATLAB)课后实验答案[1]

实验一 MATLAB 运算基础 1. 先求下列表达式的值,然后显示MATLAB 工作空间的使用情况并保存全部变量。 (1) 0 12 2sin851z e =+ (2) 221ln(1)2 z x 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 --+= ++=-- (4) 2242011 122123t t z t t t t t ?≤=0&t<1).*(t.^2)+(t>=1&t<2).*(t.^2-1)+(t>=2&t<3) .*(t.^2-2*t+1)

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

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所有实验及答案

实验二 习题 1、 矩阵Y= ???? ? ???? ???3472123100451150425 ,给出元素1的全下标和单下标,并用函数练习全下标和单下标的转换,求出元素100的存储位置。取出子矩阵?? ? ? ??21301,并求该矩阵的维数。 解:命令为: Y=[5,2,4;0,15,1;45,100,23;21,47,3] Y(2,3) Y(10) sub2ind([4 3],2,3) [i,j]=ind2sub([4 3],10) find(Y==100) sub2ind([4 3],3,2) B=Y(2:2:4,3:-2:1) 或 B=Y([2 4],[3 1]) [m n]=size(Y) 2、 建立一个数值范围为0—100内4*5的整数随机矩阵。 求出大于50的元素的位置。 解:命令为: G=int8(100*rand(4,5)) find(G>50) 3、 已知矩阵A=[1 0 -1 ;2 4 1; -2 0 5],B=[0 -1 0;2 1 3;1 1 2] 求2A+B 、A 2-3B 、A*B 、B*A 、A .*B ,A/B 、A\B 解:命令为: A=[1 0 -1 ;2 4 1; -2 0 5] B=[0 -1 0;2 1 3;1 1 2] E=2*A+B F=A^2-3*B G=A*B H=B*A I=A.*B J=A/B K=A\B 4、 利用函数产生3*4阶单位矩阵和全部元素都为8的 4*4阶矩阵,并计算两者的乘积。 解:命令为: A=eye(3,4) B=8*ones(4) C=A*B 5、 创建矩阵a=????? ???????------7023021.5003.120498601 ,取出其前两列构成的矩阵b ,取出前两行构成矩阵c ,转置矩阵b 构成矩阵d ,计算a*b 、c

实验一 用MATLAB处理系统数学模型

实验一用MATLAB处理系统数学模型 一、实验原理 表述线性定常系统的数学模型主要有微分方程、传递函数、动态结构图等.求拉氏变换可用函数laplace(ft,t,s),求拉式反变换可用函数illaplace(Fs,s,t);有关多项式计算的函数主要有roots(p),ploy(r),conv(p,q),ployval(n,s);求解微分方程可采用指令 s=dslove(‘a_1’,’a_2’,’···,’a_n’);建立传递函数时,将传递函数的分子、分母多项式的系数写成两个向量,然后用tf()函数来给出,还可以建立零、极点形式的传递函数,采用的函数为zpk(z,p,k);可用函数sys=series(sys1,sys2)来实现串联,用 sys=parallel(sys1,sys2)来实现并联,可用函数sys=feedback(sys1,sys2,sign)来实现系统的反馈连接,其中sign用来定义反馈形式,如果为正反馈,则sign=+1,如果为负反馈,则sign=-1。 二、实验目的 通过MATLAB软件对微分方程、传递函数和动态结构图等进行处理,观察并分析实验结果。 三、实验环境 MATLAB2012b 四、实验步骤 1、拉氏变换 syms s t; ft=t^2+2*t+2; st=laplace(ft,t,s) 2、拉式反变换 syms s t; Fs=(s+6)/(s^2+4*s+3)/(s+2); ft=ilaplace(Fs,s,t) 3、多项式求根 p=[1 3 0 4]; r=roots(p) p=poly(r) 4、多项式相乘 p=[ 3 2 1 ];q=[ 1 4];

matlab实验四及其答案

实验四GUI 设计专业 学号姓名成绩电气工程及其自 动化201409140305 杨诚1.创建GUI 绘制方程c bx ax y ++=2图形,需要显示绘图结果的坐标系窗口,还能够输入 a , b , c 的值和x 取值范围(最大值和最小值)。 回调函数的编写: a=str2num(get(handles.edit1,'String'));b=str2num(get(handles.edit2,'String'));c=str2num(get(handles.edit3,'String'));xmin=str2num(get(handles.edit4,'String'));xmax=str2num(get(handles.edit5,'String'));x=xmin:0.1:xmax;y=a*x.^2+b*x+c;plot(x,y); 设计的运行界面截图:

2.设计一个GUI,完成画出y=sin(x)、y=cos(x)和y=x 3.的波形图。回调函数的编写: x=-5:0.1:5 plot(x,sin(x)) x=-5:0.1:5 plot(x,cos(x))

x=-5:0.1:5 y=x.^3 plot(x,y)

设计的运行界面截图: 3.创建一个GUI,含有下拉菜单,下拉菜单中有背景颜色选择。回调函数的编写: yanse=get(handles.popupmenu1,'value'); switch yanse case1 set(gcf,'color','r'); case2 set(gcf,'color','y'); case3 set(gcf,'color','g'); end 设计的运行界面截图:

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、熟悉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求解

实验三:统计回归模型Matlab求解 一、实验目的 [1] 通过范例学习建立统计回归的数学模型以及求解全过程; [2] 熟悉MATLAB求解统计回归模型的过程。 二、实验原理 问题: 一家技术公司人事部门为研究软件开发人员的薪金与他们的资历、管理责任、教育程度等因素之间的关系,要建立一个数学模型,以便分析公司人事策略的合理性,并作为新聘用人员薪金的参考。他们认为目前公司人员的薪金总体上是合理的,可以作为建模的依据,于是调查来46名软件开发人员的档案资料,如表4,其中资历一列指从事专业工作的年数,管理一列中1表示管理人员,0表示非管理人员,教育一列中1表示中学程度,2表示大学程度,3表示更高程度(研究生) 分析与假设按照常识,薪金自然随着资历的增长而增加,管理人员的薪金应高于非管理人员,教育程度越高薪金也越高。薪金记作y,资历记作x1,为了表示是否管理人员,定义: 21 0, x ? =? ? ,管理人员 非管理人员 .

为了表示3种教育程度,定义: 31,0,x ?=? ?中学其它 41,0,x ?=??大学 其它 这样,中学用x 3=1,x 4=0表示,大学用x 3=0,x 4=1表示,研究生则用x 3=0,x 4=0表示。 假定资历对薪金的作用是线性的,即资历每加一年,薪金的增长是常数;管理责任、教育程度、资历诸因素之间没有交互作用,建立线性回归模型。 基本模型 薪金y 与资历x1, 管理责任x2,教育程度x3,x4之间的多元线性回归模型为 011223344y a a x a x a x a x ε=+++++ (1) 其中014,,a a a …,是待估计的回归系数,ε是随机误差。 MATLAB 的统计工具箱基本函数regress: [b,bint,r,rint,stats]=regress(y,x,alpha) 输入: y: n 维数据向量 x: n ?5数据矩阵, 第1列为全1向量 alpha: 置信水平,0.05 输出: b: 参数估计值 bint: b 的置信区间 r : 残差向量y -xb rint:r 的置信区间 stats: 第一个数为残差平方即回归方程之决定系数 R^2(R 为相关系数)越接近1,回 归方程显著;第二个数为统计量F 检验的值,越大回归方程越显著;第三个数为F 对应概率P ,越接近零越好;第四个数是误差项的方差估计值 在MA TLAB 命令窗口输入代码: y=[13876;11608;18701;11283;11767;20872;11772;10535;12195;12313;14975;21371;19800;11417;20263;13231;12884;13245;13677;15965;12366;21352;13839;22884;16978;14803;17404;22184;13548;14467;15942;23174;23780;25410;14861;16882;24170;15990;26330;17949;25685;27837;18838;17483;19207;19346]; x1=[1;1;1;1;1;2;2;2;2;3;3;3;3;4;4;4;4;5;5;5;6;6;6;6;7;8;8;8;8;10;10;10;10;11;11;12;12;13;13;14;15;16;16;16;17;20]; x2=[1;0;1;0;0;1;0;0;0;0;1;1;1;0;1;0;0;0;0;1;0;1;0;1;1;0;1;1;0;0;0;1;1;1;0;0;1;0;1;0;1;1;0;0;0;0]; x3=[1;0;0;0;0;0;0;1;0;0;1;0;0;1;0;0;0;0;0;1;1;0;0;0;1;0;1;0;1;1;0;0;0;0;1;0;0;1;0;0;0;0;0;1;0;1]; x4=[0;0;0;1;0;1;1;0;0;1;0;1;0;0;0;0;1;1;0;0;0;0;1;1;0;1;0;0;0;0;1;0;1;1;0;1;0;0;1;1;0;1;1;0;1;0]; xb5=[ones(46,1),x1,x2,x3,x4]; [b,bint,r,rint,stats]=regress(y,xb5) 可以得到回归系数及其置信区间(置信水平a=0.05)、检验统计量R 2,F ,p 结果,

MATLAB实验题目及答案

实验二一维二维数组的创建和寻访 一、实验目的 1、掌握一维数组、二维数组创建和寻访的几种方法。 2、区别数组运算和矩阵运算的差别。 3、熟悉执行数组运算的常用数组操作函数。 4、掌握数组运算中的关系和逻辑操作及常用的关系、逻辑函数。 5、掌握“非数”、“空”数组在MA TLAB中的应用。 二、实验主要仪器与设备 装配有MA TLAB7.6软件的计算机 三、预习要求 做实验前必须认真复习第三章MATLAB的数值数组及向量化运算功能。 四、实验内容及实验步骤 1、一维数组的创建方法有哪几种?举例说明。 答:一维数组的创建方法有: ①递增/递减型一维数组的创建:冒号生成法:x=a:inc:b 线性(或对数)定点法:x=linspace(a,b,n),x=logspace(a,b,n) ②逐个元素输入法:如x=[0.1,sin(pi/5),-exp(-3),-2*pi] ③运用MA TLAB函数生成法:例ones,rand等。 2、输入以下指令,并写出运行结果。本例演示:数组元素及子数组的各种标识和寻访格式;冒号的使用;end的作用。 A=zeros(2,6) %创建(2×6)的全零数组 A(:)=1:12 %赋值号左边:单下标寻访(2×6) 数组A的全部12个元素 %赋值号右边:拥有12个元素的一维数组 A(2,4) %双下标:A数组的第2行第4列元素 A(8) %单下标:数组A的第8个元素 A(: , [1,3]) %双下标:显示A的“第1列和第3列上全部行的元素” A([1, 2, 5, 6]') %单下标:把A数组第1,2,5,6个元素排成列向量 A(: , 4:end) %双下标:显示A的“从第4起到最后一列上全部行的元素” %在此end用于“列标识”,它表示“最后一列” A(2,1:2:5)=[-1, -3, -5] %把右边的3个数分别赋向A数组第2行的第1,3,5个元素位置 B=A([1, 2, 2, 2], [1, 3, 5]) %取A数组的1,3,5列的第1行元素作为B的第1行 %取A数组的1,3,5列的第2行分别作为B的第2,3,4行 L=A<3 %产生与A维数相同的“0,1”逻辑数组 A(L)=NaN %把逻辑1标识的位置上的元素赋为“非数” 运行结果: A = 0 0 0 0 0 0 0 0 0 0 0 0

matlab实验内容答案

实验报告说明: matlab 课程实验需撰写8个实验报告,每个实验报告内容写每次实验内容中标号呈黑体大号字显示的题目。 第一次实验内容: 实验一 MATLAB 运算基础 一、实验目的 1.熟悉启动和退出MA TLAB 的方法。 2.熟悉MA TLAB 命令窗口的组成。 3.掌握建立矩阵的方法。 4.掌握MA TLAB 各种表达式的书写规则以及常用函数的使用。 二、实验内容 1.先求下列表达式的值,然后显示MA TLAB 工作空间的使用情况并保存全部变量。 (1)2 2sin 8511z e ?= + (2 )12ln(2 z x =+ ,其中2120.45 5i +? ? =? ?-?? (3)0.30.33sin(0.3), 3.0, 2.9, 2.8,,2.8,2.9,3.02 a a e e z a a --= +=--- 提示:利用冒号表达式生成a 向量,求各点的函数值时用点乘运算。 (4)2 2 2 01 41 1221 23 t t z t t t t t ?≤

12344347873657A -????=??????,131203327B -???? =????-?? 求下列表达式的值: (1)A+6=B 和A-B+I(其中I 为单位矩阵)。 (2)A*B 和A.*B 。 (3)A^3和A^.3 。 (4)A/B 和B\A 。 (5)[A ,B]和[A([1,3],;);B^2] 。 3.设有矩阵A 和B 12345678910111213141516171819202122232425A ????????=????????, 30 161769 23497041311B ?? ?? -?? ??=-?? ????? ? (1) 求它们的乘积C 。 (2) 将矩阵C 的右下角3×2子矩阵赋给D (3) 查看MA TLAB 工作空间使用情况。 4.完成下列操作: (1)求[100,999]之间能被21整除的数的个数。 提示:先利用冒号表达式,再利用find 和length 函数。 (2)建立一个字符串向量,删除其中的大写字母。 提示:利用find 函数和空矩阵。 第二次实验内容: 实验三 选择结构程序设计 一、实验目的 1. 掌握建立和执行M 文件的方法。 2. 掌握利用if 语句实现选择结构的方法。 3. 掌握利用switch 语句实现多分支选择结构的方法。 4. 掌握try 语句的使用。 二 、实验内容

实验四用MATLAB求解状态空间模型

实验四 用MATLAB 求解状态空间模型 1、实验设备 MATLAB 软件 2、实验目的 ① 学习线性定常连续系统的状态空间模型求解、掌握MATLAB 中关于求解该模型的主要函数; ② 通过编程、上机调试,进行求解。 3、实验原理说明 Matlab 提供了非常丰富的线性定常连续系统的状态空间模型求解(即系统运动轨迹的计算)的功能,主要的函数有: 初始状态响应函数initial()、阶跃响应函数step()以及可计算任意输入的系统响应数值计算函数lsim()和符号计算函数sym_lsim()。 数值计算问题可由基本的Matlab 函数完成,符号计算问题则需要用到Matlab 的符号工具箱。 4、实验步骤 ① 根据所给状态空间模型,依据线性定常连续系统状态方程的解理论,采用MATLAB 编程。 ② 在MATLAB 界面下调试程序,并检查是否运行正确。 习题1:试在Matlab 中计算如下系统在[0,5s]的初始状态响应,并求解初始状态响应表达式。 Matlab 程序如下: A=[0 1; -2 -3]; B=[]; C=[]; D=[]; x0=[1; 2]; sys=ss(A,B,C,D); [y,t,x]=initial(sys,x0,0:5); plot(t,x) 0011232????==????--???? x x x

习题2:试在Matlab 中计算如下系统在[0,10s]内周期为3s 的单位方波输入下的状态响应。并计算该系统的单位阶跃状态响应表达式。 Matlab 程序如下: A=[0 1; -2 -3]; B=[0; 1]; C=[]; D=[]; x0=[1; 2]; sys=ss(A,B,C,D); [u t]=gensig('square',3,10,0.1) 0011232????==????--???? x x x

Matlab实验指导书(含答案)汇总

实验一:Matlab操作环境熟悉 一、实验目的 1.初步了解Matlab操作环境。 2.学习使用图形函数计算器命令funtool及其环境。 二、实验内容 熟悉Matlab操作环境,认识命令窗口、内存工作区窗口、历史命令窗口;学会使用format命令调整命令窗口的数据显示格式;学会使用变量和矩阵的输入,并进行简单的计算;学会使用who和whos命令查看内存变量信息;学会使用图形函数计算器funtool,并进行下列计算: 1.单函数运算操作。 求下列函数的符号导数 (1) y=sin(x); (2) y=(1+x)^3*(2-x); 求下列函数的符号积分 (1) y=cos(x); (2) y=1/(1+x^2); (3) y=1/sqrt(1-x^2); (4) y=(x-1)/(x+1)/(x+2); 求反函数 (1) y=(x-1)/(2*x+3); (2) y=exp(x); (3) y=log(x+sqrt(1+x^2)); 代数式的化简 (1) (x+1)*(x-1)*(x-2)/(x-3)/(x-4); (2) sin(x)^2+cos(x)^2; (3) x+sin(x)+2*x-3*cos(x)+4*x*sin(x); 2.函数与参数的运算操作。 从y=x^2通过参数的选择去观察下列函数的图形变化 (1) y1=(x+1)^2 (2) y2=(x+2)^2 (3) y3=2*x^2 (4) y4=x^2+2 (5) y5=x^4 (6) y6=x^2/2 3.两个函数之间的操作 求和 (1) sin(x)+cos(x) (2) 1+x+x^2+x^3+x^4+x^5 乘积 (1) exp(-x)*sin(x)

实验八MATLAB状态空间分析报告

实验八 线性系统的状态空间分析 §8.1 用MATLAB 分析状态空间模型 1、状态空间模型的输入 线性定常系统状态空间模型 x Ax Bu y Cx Du =+=+ 将各系数矩阵按常规矩阵形式描述。 [][][]11 121120 10 1;;;n n n nn n n A a a a a a a B b b b C c c c D d ==== 在MA TLAB 里,用函数SS()来建立状态空间模型 (,,,)sys ss A B C D = 例8.1 已知某系统微分方程 22d d 375d d y y y u t t ++= 求该系统的状态空间模型。 解:将上述微分方程写成状态空间形式 0173A ??=??--??,01B ??=???? []50C =,0D = 调用MATLAB 函数SS(),执行如下程序 % MATLAB Program example 6.1.m A=[0 1;-7 -3]; B=[0;1]; C=[5 0]; D=0; sys=ss(A,B,C,D) 运行后得到如下结果 a = x1 x2 x1 0 1

x2 -7 -3 b = u1 x1 0 x2 1 c = x1 x2 y1 5 0 d = u1 y1 0 Continuous-time model. 2、状态空间模型与传递函数模型转换 状态空间模型用sys 表示,传递函数模型用G 表示。 G=tf(sys) sys=ss(G) 状态空间表达式向传递函数形式的转换 G=tf(sys) Or [num,den]=ss2tf(A,B,C,D) 多项式模型参数 [num,den]=ss2tf(A,B,C,D,iu) [z,p,k]=ss2zp(A,B,C,D,iu) 零、极点模型参数 iu 用于指定变换所需的输入量,iu 默认为单输入情况。 传递函数向状态空间表达式形式的转换 sys=ss(G) or [A,B,C,D]=tf2ss(num,den) [A,B,C,D]=zp2ss(z,p,k) 例 8.2 11122211220.560.050.03 1.140.2500.1101001x x u x x u y x y x -??????????=+??????????-????????????????=??????? ????? 试用矩阵组[a ,b ,c ,d]表示系统,并求出传递函数。

实验二利用MATLAB求取线性系统的状态空间模型的解

现代控制理论第一次上机实验报告 实验二 利用MATLAB 求取线性系统的状态空间模型的解 实验目的: 1、根据状态空间模型分析系统由初始状态和外部激励所引起的响应; 2、通过编程、上机调试,掌握系统运动的分析方法。 实验原理: 一、系统时域响应的求解方法 给定系统的状态空间模型: ()()()()()() x t Ax t Bu t y t Cx t Du t =+=+ (2.1) 设系统的初始时刻00t =,初始状态为(0)x ,则系统状态方程的解为 0()0 ()(0)()(0)()t At At A t At A t x t e x e e Bu d e x e Bu d ττττττ--=+=+?? (2.2) 输出为 ()0()(0)()()t At A t y t Ce x C e Bu d Du t τττ-=++? (2.3) 包括两部分,第一部分是由系统自由运动引起的,是初始状态对系统运动的影响;第二部分是由控制输入引起的,反映了输入对系统状态的影响。输出()y t 由三部分组成。第一部分是当外部输入等于零时,由初始状态0()x t 引起的,故为系统的零输入响应;第二部分是当初始状态0()x t 为零时,由外部输入引起的,故为系统的外部输入响应;第三部分是系统输入的直接传输部分。 实验步骤 1、构建系统的状态空间模型,采用MA TLAB 的m-文件编程; 2、求取系统的状态和输出响应; 3、在MA TLAB 界面下调试程序,并检查是否运行正确。

实验要求 1、在运行以上程序的基础上,应用MA TLAB 验证一个振动现象可以由以下系统产生: 01()10x t x ??=??-?? 证明该系统的解是 cos sin ()(0)sin cos t t x t x t t ??=??-?? 假设初始条件0(0) 1x ??=???? ,用Matlab 观察该系统解的形状。 m-程序如下: A=[0 1;-1 0]; B=[0;0]; D=B; C=[1 0;0 1]; sys=ss(A,B,C,D); x0=[0;1]; t=[0:0.01:20]; [y,T,x]=lsim(sys,u,t,x0) subplot(2,1,1),plot(T,x(:,1)) xlabel('Time(sec)'),ylabel('X_1') subplot(2,1,2),plot(T,x(:,2)) xlabel('Time(sec)'),ylabel('X_2') 仿真结果如下:

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