MATLAB语言程序设计
系别:电子电气工程系
班级:08级自动化班
姓名:XXX
学号:
1.编写一个求圆的面积的函数文件。
>> f(1)
s =
3.1416
>> f(2)
s =
12.5664
通过此题掌握了独立文件与函数文件的区别。
2.三次抛物线的方程为:y=a*x^3+b*x^2+c*x
试探讨参数a,b和c对其图形的影响。
>> clear all;
>> subplot(1,3,1)
>> fplot('(-2:2)*x.^3+x.^2+x',[-2 2]) %绘制变量a=-2,-1,0,1,2时的图形
>> grid,axis('equal'),axis([-2 2 -4 4]) %显示网格,纵横坐标轴保持一致图
>> %显示区间
>> subplot(1,3,2)
>> fplot('x.^3+(-2:2)x.^2+x',[-2 2]) %绘制变量b=-2,-1,0,1,2时的图形
>> fplot('x.^3+(-2:2)*x.^2+x',[-2 2]) %绘制变量b=-2,-1,0,1,2时的图形
>> grid,axis('equal'),axis([-2 2 -4 4])
>> subplot(1,3,3)
>> fplot('x.^3+x.^2+(-2:2)*x',[-2 2]) %绘制变量c=-2,-1,0,1,2时的图形
>> grid,axis('equal'),axis([-2 2 -4 4])
>> gtext('a=2'),gtext('a=-2'),gtext('a=0') %用gtext命令在其他两个子图上标注字符程序运行结果如下:
分析:由图可得a=0时,此函数为抛物线,a>0时,随着a的增大,其图形越来越陡,a<0时,随着a的减小,其图形越来越陡,且a<0时,图形的极值点增多。
随着b,c的增大,其图形越来越陡。
3.设计GUI,通过调节滑块可以画出不同频率的三角波形,同时学习法对Push Button、Checkbox、Slider、Axes、Popup Menu、Static Text控件的使用和操作。
布局好的控件如下:
添加的代码如下:
运行结果如下:
通过此题,掌握了对Push Button、Checkbox、Slider、Axes、Popup Menu、Static Text控件的使用和操作,知道了图形用户界面设计工具GUIDE的强大功能。
4.运算放大电路如图所示,试分析放大器开环增益和频率响应对整个电路闭环频率响应的影响,并绘出曲线。
>> z2=[20,100,500]*1000;z1=2000; %设置元件参数
>> A0=2e6;w1=500;w2=2e6;w3=5e7;
>> w=logspace(2,8); %设定频率数组
>> b=A0*w1*w2*w3;
>> a=poly([-w1,-w2,-w3]); %列出运算放大器分子分母系数向量>> A=polyval(b,j*w)./polyval(a,j*w); %求放大器开环频率响应
>> for i=1:3
z12(i)=z2(i)/z1;
H(i,:)=-z12(i)./(1+(1+z12(i))./A); %求放大器闭环响应
semilogx(w,abs(H(i,:))),hold on %画出频率-增益曲线
end
>> v=axis;axis(v); %保持w坐标
>> semilogx(w,abs(A))
>> hold off
运行结果如下:
>> z2=[20,100,500]*1000;z1=2000; %设置元件参数
>> A0=2e6;w1=50;w2=2e6;w3=5e7;
>> w=logspace(2,8); %设定频率数组
>> b=A0*w1*w2*w3;
>> a=poly([-w1,-w2,-w3]); %列出运算放大器分子分母系数向量>> A=polyval(b,j*w)./polyval(a,j*w); %求放大器开环频率响应
>> for i=1:3
z12(i)=z2(i)/z1;
H(i,:)=-z12(i)./(1+(1+z12(i))./A); %求放大器闭环响应
semilogx(w,abs(H(i,:))), hold on %画出频率-增益曲线
end
>> v=axis;axis(v); %保持w坐标
>> semilogx(w,abs(A))
将w1减小10倍的H(w)的图如下:
由题可知,Z2越大,越容易造成运算放大器的自激现象。消除自激可以通过减小w1,或增大w2,w3,在放大器已选定的情况下通常只能用加消振电容的方法减小w1。
5.分别利用命令和simulink模型求y=∫cos(t)dt的结果,其中初值分别为y1(0)=0和y2(0)=1。(1)simulink模型求解如下:y1(0)=0时:
其结果如下:
y2(0)=1时:
其结果如下:
(2)命令求解如下: >> clear
>> f='cos(x)'; %定义被积函数 >> F=int(f) %求积分 F = sin(x)
6.许多工业控制过程都可以等效成二阶环节,设计典型二阶环节H(s)=20/(1.6s 2+4.4s+1)的
NB
NS
ZR
PS
PB
NB PB PB PS PS ZR NS PB PS PS ZR ZR ZR PS PS ZR ZR NS PS PS ZR ZR NS NS PB
ZR
ZR
NS
NS
NB
e
u de
u为输出信号,e与de为输入信号。u,e,de的取值范围均在[-6 6]之间。
在命令窗口下输入命令‘fuzzy’弹出如下界面:
在Edit菜单下点击Add Variable下的input,分别点击input1和input2,在Name中改其名称分别为‘e’和‘de’,将output1名字改为‘u’得到如下图形:
双击输入信号e,进入Membership Function Editor窗口界面,将其Range与Display Range都改为[-6 6],然后在membership function plots下删掉原有的三个输入波形,得图如下:
在Edit菜单下,打开Add Mfs窗口,修改Number of MFs为5,
点击OK按钮。
然后依次选中五个波形在Name中分别对其进行命名,对de与u做相同的操作,得出如下图形:
然后,返回到FIS Editor界面,双击Untitled进入Rule Editor界面,按照表格对其输入输出进行添加,完成后如下图所示:
然后点击Close,在File菜单下选中Export中的To workplace,修改它的workspace variable 为
mohu,如下所示:
点击OK按钮,就可以在如下的仿真电路中进行仿真
得出的仿真波形如下:
若运行有错误提示,则在FIS Editor窗口下的Defuzzification中重新选取一种识别模糊控制的方法,如下图所示:
通过这几个题,使我认识到matlab的功能极其强大,不仅可以应用于数学方面,而且可以应用于我们所学的几乎所有的专业课,求解时还可以使用多种方法,不仅可以使用命令求解,而且可以使用simulink模型求解,因此在以后的学习中,我会经常使用此软件,来达到对此软件的熟练掌握。