控制系统仿真
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《控制系统计算机仿真—课程设计作业》
姓名: 专业: 学号:
1. 构造矩阵
(1)试将.*A B 与B A *的结果相加,并找出相加后新矩阵中绝对值大于10的元素。 (2)组合成一个4⨯3的矩阵,第一列为按列顺序排列的A 矩阵元素,第二列为按列顺序排列的B 矩阵元素,第三列为按列顺序排列的C 矩 阵元素。
(1)matlab :
A=[-7 1;8 -3]; B=[4 2;5 7]; C=[5 9;6 2]; D=A.*B+A*B
num=find(abs(D)>10); D(num) 结果:D =
-51 -5 57 -26 ans = -51 57 -26
(2)matlab :NEW=[A(1,:),A(2,:);B(1,:),B(2,:);C(1,:),C(2,:)]’ 结果:NEW =
-7 4 5 1 2 9 8 5 6 -3 7 2
2. 绘制函数曲线,要求写出程序代码
(1)在区间[0,2]π均匀的取50个点,构成向量X 。
(2)在同一窗口绘制曲线y1=sin(2*t-0.3); y2=3cos(t+0.5);要求y1曲线为红色点划线,标记点为圆圈;y2为蓝色虚线,标记点为星号。
程序代码:
t=linspace(0,2*pi,50);
714259,,835762A B C -⎡⎤⎡⎤⎡⎤===⎢⎥
⎢⎥⎢⎥
-⎣⎦⎣⎦⎣⎦
y1=sin(2*t-0.3);
y2=3*cos(t+0.5);
plot(t,y1,'r.',t,y2,'b-');
hold on
plot(t,y1,'o',t,y2,'*');
hold off
3. 写出生成下图所示波形的MA TLAB 程序。图中三个波形均为余弦波,x范围为[pi/2 ~
7*pi/2] 。要求它的正半波被置零;且在
24
[,]
33
ππ
和
810
[,]
33
ππ
处被削顶。
程序:x=linspace(pi/2,7*pi/2,100);
y1=cos(x);
figure(1)
plot(x,y1)
y1(find(y1>0))=0;
figure(2)
plot(x,y1)
n=find((x>2*pi/3&x<4*pi/3)|(x>8*pi/3&x<10*pi/3));
y1(n)=cos(2*pi/3);
figure(3)
plot(x,y1)
4对于x=[-2π,2π],y1=sinx、y2=cosx、y3=sin2x、y4=cos2x
①用MATLAB语言分四个区域分别绘制的曲线,并且对图形标题及横纵坐标轴进行标注。
②另建一个窗口,不分区,用不同颜色、线型绘出四条曲线,并标注图例注解。Matlab:x=linspace(-2*pi,2*pi,1000);
y1=sin(x);
y2=cos(x);
y3=sin(2*x);
y4=cos(2*x);
figure(1)
subplot(2,2,1)
plot(x,y1)
xlabel('ºá×ø±êx=[-2*pi,2*pi]');
ylabel('×Ý×ø±êy=sin(x)')
title('y=sin(x)ÔÚ[-2*pi,2*pi]Ö®¼äµÄÇúÏßͼ')
subplot(2,2,2) plot(x,y2)
xlabel('ºá×ø±êx=[-2*pi,2*pi]'); ylabel('×Ý×ø±êy=cos(x)')
title('y=cos(x)ÔÚ[-2*pi,2*pi]Ö®¼äµÄÇúÏßͼ') subplot(2,2,3); plot(x,y3);
xlabel('ºá×ø±êx=[-2*pi,2*pi]'); ylabel('×Ý×ø±êy=sin(2x)')
title('y=sin(2x)ÔÚ[-2*pi,2*pi]Ö®¼äµÄÇúÏßͼ') subplot(2,2,4); plot(x,y4);
xlabel('ºá×ø±êx=[-2*pi,2*pi]'); ylabel('×Ý×ø±êy=cos(2x)')
title('y=cos(2x)ÔÚ[-2*pi,2*pi]Ö®¼äµÄÇúÏßͼ') figure(2)
plot(x,y1,'r-',x,y2,'b.',x,y3,'ko',x,y4,'g*')
legend('y=sin(x)','y=cos(x)','y=sin(2x£©','y=cos(2x)')
5. 请分析并修改下面的程序,使用矩阵或数组运算的顺序结构完成嵌套for 语句的相同功能。
A=[1 2 3; 4 5 6; 7 8 9]; [r c]=size(A); for i=1:1:r for j=1:1:c
if (A(i,j)>8 | A(i,j)<2) A(i,j)=0; end end end
修改后的matlab :
A=[1 2 3; 4 5 6; 7 8 9]; A(find(A>8|A<2))=0; A
6. 假设
a 是这样一组数组:2
2
2
()(1)(2)(3)
a n a n a n a n =---+-,且
(1)0,(2)1,(3)2a a a ===。试分别用循环指令for 以及while 来寻求该数组中第一个大于
10000 的元素。 Matlab :a(1)=0;
a(2)=1;