matlab程序大全Word格式.docx
《matlab程序大全Word格式.docx》由会员分享,可在线阅读,更多相关《matlab程序大全Word格式.docx(25页珍藏版)》请在冰豆网上搜索。
(1)绘制系统的Bode图和nyquist图;
(2)求系统的幅值裕度和相位裕度;
A=[1,-1;
1,3];
B=[1,0]'
;
C=[1,1];
D=0;
sys=ss(A,B,C,D)
figure
(1),bode(sys),grid
figure
(2),nyquist(sys,w)
7已知单位负反馈系统的开环传递函数为
,试绘制系统的单位阶跃响应、开环Bode图和Nyquist曲线,并求系统的幅值裕度和相位裕度。
sys=zpk(-1,[00-1],1)
sys1=feedback(sys,1,-1)
figure(3)
step(sys1)
nyquist(sys),grid
编写程序题
1编写两个m文件,分别使用for和while循环语句计算
。
y=0;
fork=1:
200
y=y+k^3;
end
y
k=1;
whilek<
=200
k=k+1;
2一个三位整数各位数字的立方和等于该数本身则称该数为水仙花数,编写M文件,输出全部水仙花数。
form=100:
999
m1=fix(m/100);
m2=fix((m-100*m1)/10);
m3=fix(m-100*m1-10*m2);
ifm==m1^3+m2^3+m3^3
disp(m)
end
3编写M文件,实现以下功能:
从键盘输入若干个数,当输入0时结束输入,求这些数的平均值和它们之和。
4编写M脚本文件,使得运行该文件后能求出[100,200]之间第一个能被21整除的整数。
fori=100:
ifmod(i,21)==0
break
end
i
5先编写一个函数文件,文件名为tran,使得该函数文件实现直角坐标(x,y)与极坐标(ρ,θ)之间的转换。
然后编写脚本文件,文件名为main1,在脚本文件中实现如下功能:
要求用户从键盘输入直角坐标X和Y,调用函数文件实现直角坐标到极坐标的转换,输出极坐标的值。
tran.m:
function[rho,theta]=tran(x,y)
rho=sqrt(x*x+y*y);
theta=atan(y/x);
main1.m:
x=input('
Pleaseinputx=:
'
y=input('
Pleaseinputy=:
[rho,theta]=tran(x,y);
rho
theta
6猜数游戏。
首先由计算机产生[1,100]之间的随机整数,然后由用户猜测所产生的随机数。
根据用户猜测的情况给出不同提示,如猜测的数大于产生的数,则显示“High”,小于则显示“Low”,等于则显示“Youwon”,同时退出游戏。
用户最多可以猜7次。
x=fix(100*rand
(1));
i=1
whilei<
=7
ifx==y
disp('
Youwon'
break;
elseifx>
Low'
elsedisp('
High'
i=i+1;
7编写M脚本文件,分别使用for和while循环语句计算
的值,并且显示出sum的结果。
sum=0;
fori=1:
10
sum=sum+i^i;
sum
sum=0;
=10
i=i+1;
8用筛选法求某自然数范围内的全部素数。
素数是大于1,且除了1和它本身以外,不能被其他任何整数所整除的整数。
用筛选法求素数的基本思想是:
要找出2~m之间的全部素数,首先在2~m中划去2的倍数(不包括2),然后划去3的倍数(不包括3),由于4已被划去,再找5的倍数(不包括5),…,直到再划去不超过的数的倍数,剩下的数都是素数。
functiony=sushu(x)
y=2:
x;
n=2:
forj=2:
m=j*n;
y=setdiff(y,m);
9已知
,当n=100时,求y的值。
y=0;
n=100;
n
y=y+(1/(2*k-1));
10利用for循环计算1!
+2!
+3!
+…..+20!
的值。
20
y=1;
forn=1:
y=y*n;
sum=sum+y;
11用while循环来实现求1+2+……+100的值。
n=1;
whilen<
=100
y=y+n;
n=n+1;
12编一函数计算以下分段函数值。
functiony=f(x);
ifx<
y=x;
=0&
x<
1
y=2*x^2+1;
elsey=3*x^3+2*x^2+1;
13我国新税法规定:
个体工商户的生产、经营所得和对企事业单位的承包经营、承租经营所得应缴纳的个人所得税为
全年收入中应缴纳所得税部分税率/%
(1)不超过5000元的5
(2)超过5000元至10000元的部分10
(3)超过10000元至30000元的部分20
(4)超过30000元至50000元的部分30
(5)超过50000元的部分35
试编程加以计算。
x='
=5000
y=0.05*x;
5000&
=10000
y=0.1*x;
10000&
=30000
y=0.2*x;
30000&
=50000
y=0.3*x;
elsey=0.35*x;
14矩阵乘法运算要求两矩阵的维数相容,否则会出错。
设两个矩阵为A=[1,2;
5,6];
B=[7,9;
20,11];
先求两矩阵的乘积,若出错,则自动转去求两矩阵的点乘。
A=[1,2;
5,6];
B=[7,9;
20,11];
try
C=A*B;
catch
C=A.*B;
C
15编制M脚本文件,要求从键盘逐个输入数值(input),然后判断输入的数是大于0还是小于0,并输出提示(使用disp命令)是正数(positiveone)还是负数(negativeone),同时记录输入的正数、负数的个数。
当输入0时,终止此M文件的运行(使用break命令);
当输入第10个数字时,显示记录的正、负数个数并终止程序。
i=0;
j=0;
forn=1:
x=input('
Thenumis:
ifx>
positiveone'
elseifx<
j=j+1;
negativeone'
elsebreak
i,j
16一个三位整数各位数字的立方和等于该数本身则称该数为水仙花数,编写M文件,输出全部水仙花数。
17编写M文件,实现以下功能:
cnt=0;
whilex~=0
sum=sum+x;
cnt=cnt+1;
ifcnt>
average=sum/cnt;
sum,average
18一数组的元素满足规则:
a
(1)=a
(2)=1,a(3)=a
(1)+a
(2),a(4)=a
(2)+a(3),…依次类推,求该数组中第一个大于10000的元素。
a
(1)=1;
a
(2)=1;
i=1;
whilea(i)<
a(i+2)=a(i+1)+a(i);
a(i)
19某商场对顾客所购买的商品实行打折销售,标准如下(商品价格用price来表示):
price<
200没有折扣
200≤price<
5003%折扣
500≤price<
10005%折扣
1000≤price<
25008%折扣
2500≤price<
500010%折扣
5000≤price14%折扣
请编写程序,使得当从计算机输入所售商品的打折前价格后,能输出其实际销售价格。
=200&
500
y=0.97*x;
=500&
1000
y=0.95*x;
=1000&
2500
y=0.92*x;
=2500&
5000
y=0.9*x;
elsey=0.86*x;
20编写M脚本文件,分别使用for和while循环语句计算
21已知
22编写函数文件使其实现如下功能:
当在命令窗口输入数字后,根据输入参数的个数决定输出的结果;
当没有参数输入时,显示“无输入参数”;
当有一个参数时,则以该参数为边绘制正方形;
当有两个参数时,则以两个参数为长和宽绘制矩形。
functiony=H(varargin)%varargin表示可变的参数
ifnargin==0
无输入参数'
elseifnargin==1
r=varargin{1};
rectangle('
position'
[00rr])%表示从(0,0)点开始画宽为R,高为R的矩形
elsenargin==2
r1=varargin{1};
r2=varargin{2};
rectangle('
[00r1r2])
23编制M脚本文件,要求从键盘逐个输入数值(input),然后判断输入的数是大于0还是小于0,并输出提示(使用disp命令)是正数(positiveone)还是负数(negativeone),同时记录输入的正数、负数的个数。
forx=1:
n=input('
ifn<
elseifn>
positionone'
j
24若一个数等于它的各个真因子之和,则称该数为完数,如6=1+2+3,所以6是完数。
求[1,500]之间的全部完数。
form=1:
s=0;
fork=1:
m/2
ifrem(m,k)==0
s=s+k;
ifm==s
25今有多项式P1(x)=x^4-2x+1,P2(x)=x^2+4x-0.5,要求先求得P(x)=P1(x)+P2(x),然后计算xi=0.2*i各点上的P(xi)(i=0,1,2,…,5)值。
A=[100-21];
B=[0014-0.5];
C=A+B
i=0:
5;
xi=0.2*i;
y=polyval(C,xi)
26试编一个m程序,将一维数组x中的N个数按颠倒的次序重新存储。
要求运行程序后,在命令窗口提示“请用[]输入一个一维数组;
”,输入完毕后若回车,就能在输出窗口显示刚才所输入的数组的颠倒次序。
(如N=5,原来x为:
x=[13579]
而经过颠倒处理后x中数据的次序应该为:
x=[97531])
请用[]输入一个一维数组:
x1=fliplr(x)
模型建立及转换题
1某系统的传递函数为
使用MATLAB求出状态空间表达式和零极点模型。
num=[1.323];
den=[10.51.21];
nsys=zpk(sys)
2求出以下系统的传递函数
,
A=[-1,0,1;
1,-2,0;
0,0,-3];
B=[0,0,1]'
C=[110];
D=1;
nsys=tf(sys)
3已知某系统的传递函数为:
,试用MATLAB语言求出该系统的传递函数模型、状态空间模型和零极点增益模型。
num=[12241220];
den=[24622];
sys1=zpk(sys)
sys2=ss(sys)
4已知双闭环调速系统电流环内的前向通道3个模块传递函数分别为:
试求串联连接的等效传递函数及其等效状态空间模型。
num1=[0.01281];
den1=[0.040];
num2=[30];
den2=[0.00167,1];
num3=[2.5];
den3=[0.01281];
sys1=tf(num1,den1)
sys2=tf(num2,den2)
sys3=tf(num3,den3)
sys=sys1*sys2*sys3
nsys=ss(sys)
5已知两个环节的传递函数分别为:
试求两环节并联连接等效传递函数的num与den向量及等效的状态空间模型。
num1=[1];
den1=[12];
num2=[21];
den2=[112];
sys=sys1+sys2
[num,den]=tfdata(sys,'
v'
6将传递函数模型
转换为状态空间模型和零极点模型。
num=[10];
den=[132];
7系统方程为
求出其状态空间表达式,写出A、B、C、D阵,建立其MATLAB状态空间模型,然后绘制其单位阶跃响应曲线。
A=[010;
001;
-16-11-6];
B=[006]'
C=[100];
step(sys)
8设有一质量弹簧阻尼系统,如下图所示。
F(t)为输入的外力,y(t)为质量块的位移,弹簧的弹性系数为k,阻尼器的阻尼系数为f。
系统的动态方程组为:
求出其状态空间表达式,写出A、B、C、D阵,建立其MATLAB状态空间模型,然后绘制其单位阶跃响应曲线(只要写出MATLAB语句即可)。
A=[01;
-k/m-f/m];
B=[0F(t)/m];
C=[10];
sys=ss[A,B,C,D]
9对下图中所示系统进行建模、模型转换及仿真:
⑴用MATLAB语言表示图示系统的模型,并给出传递函数、零极点和状态空间三种模型的具体表达。
num1=[10.5];
den1=[10.1];
z=[];
p=[0-2-10];
k=[20];
sys2=zpk(z,p,k)
sys3=sys1*sys2
sys=feedback(sys3,1,-1)
nsys1=tf(sys)
nsys2=ss(sys)
⑵用MATLAB语言画出系统单位阶跃响应的波形。
10对图中所示的质量—弹簧—阻尼机械系统,系统的动力学方程为:
其中,m=5kg,k=2N/m,c=0.1N/m.s
,建立其MATLAB状态空间模型,写出A、B、C、D阵,然后绘制其单位阶跃响应曲线。
A=[0,1;
-2/5,-0.1/5];
B=[0,2/5]'
C=[1,0];
11求下面系统在阶跃信号为0.11(t)时系统的响应。
并求系统性能指标:
稳态值、上升时间、调节时间、超调量
num=[20];
den=[18364020];
final=polyval(num,0)/polyval(den,0)
[y,t]=step(sys)
[yp,k]=max(y)
tp=t(k)
chaotiao=100*(yp-final)/final
whiley(n)<
final
risetime=t(n)
i=length(t);
while(y(i)>
0.98*final&
y(i)<
1.02*final)
i=i-1;
ts=t(i)
step(0.1*sys)
12已知系统传递函数
,绘制系统阶跃响应曲线;
绘出离散化系统阶跃响应曲线,采样周期
num=[1];
den=[10.21.01];
sys1=tf(num,den)
sys2=tf(num,den,0.3)
step(sys2)
数值计算类题目
1求解以下线性代数方程:
A=[1,0,2;
1,1,3;
3,1,2];
B=[2,1,1]'
X=inv(A)*B
2已知矩阵
,
试分别求出A阵和B阵的秩、转置、行列式、逆矩阵以及特征值。
A=[013;
121;
542];
B=[218;
414;
332];
A1=rank(A)
B1=rank(B)
A2=A.'
B2=B.'
A3=det(A)
B3=det(B)
A4=inv(A)
B4=inv(B)
A5=eig(A)
B5=eig(B)
3已知矩阵
在Command窗口中分别求出
、
矩阵为
中每个元素平方组成的矩阵、
阵乘以
阵、
阵和
阵数组乘积(即:
对应元素分别相乘的积构成的矩阵)。
C=A^2
D=A.^2
E=A*B
F=A.*B
4求复数矩阵
的转置C1与共轭转置C2。
A=[157;
634];
B=[3-13;
22-3];
C=A+B*i
C1=C.'
C2=C'
5假设a、b、c和d的定义如下:
;
分别写出下列表达式的运算结果。
(1)a*b
(2)a*c
(3)a.*d
(4)a*d
ans=
-12
-25
3
8
50
105
6求解由下面四个方程组成的方程组。
A=[2-312;
1301;
1-118;
71-22];
B=[8675]'
C=inv(A)*B
7求解由下面四个方程组成的方程组。
B=[1723951]'
8已知某班的5名学生的三门课成绩列表如下:
学生序号12345
高等数学7889647368
外语8377807870
MATLAB语言8291788268
试写出有关命令,先分别找出三门课的最高分及其学生序号;
然后找出三门课总分的最高分及其学生序号。
A=[7889647368;
8377807870;
829178