MATLAB语言及仿真实验指导书实验34567.docx
《MATLAB语言及仿真实验指导书实验34567.docx》由会员分享,可在线阅读,更多相关《MATLAB语言及仿真实验指导书实验34567.docx(17页珍藏版)》请在冰点文库上搜索。
MATLAB语言及仿真实验指导书实验34567
实验三MATLAB的数值计算
(二)
一、实验目的
1、掌握矩阵基本的数学运算。
2、掌握矩阵基本的函数运算。
3、掌握矩阵的一些特殊操作
二、实验准备知识
1、矩阵运算符:
+加法;-减法;^幂;*乘法;/右除;\左除;’转置。
注意相同行和列的矩阵才可以加减,矩阵A的列数和B的行数相同时才有A*B。
2、常用的矩阵函数见教材所示。
实验中用到的函数有:
det(A)求方阵A的行列式值;inv(A)求矩阵A的逆。
3、数组运算符:
.+加法;.-减法;.^幂;.*乘法;.\除。
注意运算符中的小黑点不能遗漏。
4、所有标量运算函数可以运用于数组。
三、实验内容和步骤(要求打印程序和运行结果)
1、输入4阶单位方阵A和一矩阵B,将矩阵A和B相加得到矩阵C,再求矩阵C的转置矩阵D。
>>A=ones(4,4),B=rand(4,4),C=A+B,D=C'
A=
1111
1111
1111
1111
B=
0.44510.84620.83810.8318
0.93180.52520.01960.5028
0.46600.20260.68130.7095
0.41860.67210.37950.4289
C=
1.44511.84621.83811.8318
1.93181.52521.01961.5028
1.46601.20261.68131.7095
1.41861.67211.37951.4289
D=
1.44511.93181.46601.4186
1.84621.52521.20261.6721
1.83811.01961.68131.3795
1.83181.50281.70951.4289
2、产生一个3行3列的随机阵A,取矩阵的第1行和第3行元素之和作为矩阵B的第1行元素,矩阵A第二行各自的平方为矩阵B的第二行元素,矩阵B的第三行元素全为1。
>A=rand(3,3),B=A(1,:
)+A(3,:
),B(2,:
)=A(2,:
).^2,B(3,:
)=1
A=
0.17300.25230.1365
0.97970.87570.0118
0.27140.73730.8939
B=
0.44440.98961.0304
B=
0.44440.98961.0304
0.95990.76690.0001
B=
0.44440.98961.0304
0.95990.76690.0001
1.00001.00001.0000
3、求取4阶随机矩阵D的行列式值,并用求逆的方法求解方程AX=C。
>>D=rand(4,4),det(D),inv(D)
D=
0.19910.46920.42350.2259
0.29870.06480.51550.5798
0.66140.98830.33400.7604
0.28440.58280.43290.5298
ans=
0.0255
ans=
3.29242.07393.0387-8.0347
0.1452-1.7237-0.12982.0107
2.97910.9166-0.8704-1.0244
-4.36130.0339-0.77724.8257
4、输入10个学生的成绩并对成绩按升序排序。
>>a=[67,78,78,90,98,76,68,78,90,67]
a=
67787890987668789067
>>sort(a)
ans=
67676876787878909098
四、问题和讨论(要求手写,不允许打印)
1、生成矩阵的方法有哪些?
?
实验四MATLAB的数值计算(三)
一、实验目的
1、学会使用关系运算和逻辑运算。
2、学会进行多项式的定义和运算。
3、学会进行基本数值分析。
二、实验准备知识
1、MATLAB关系操作符:
<小于;<=小于或等于;>大于;>=大于或等于;==等于;~=不等于。
如果关系成立,结果为1,不成立,结果为0。
2、MATLAB逻辑操作符:
&与;|或;~非。
如果逻辑为真,结果为1,为假,结果为0。
3、MATLAB中多项式由一个行向量表示,其系数按降幂排列。
注意必须包括具有零系数的项。
三、实验内容和步骤(打印)
1、产生1个一维,元素在0到10之间的随机数组A,用关系和逻辑运算找出其中小于7大于3的元素,结果放在数组T之中。
>>A=round(10*rand(1,10))
A=
10265985084
>>T=A(1,find(A>3&A<7))
T=
6554
2、求取两个多项式
和
的和及乘积。
>>A=[12108]
A=
12108
>>B=[14128]
B=
14128
>>A+B
ans=
262216
>>conv(A,B)
ans=
16308016817664
3、产生4阶随机方阵A,其元素为[10,90]区间的随机整数,然后判断A的元素是否能被7整除。
>>A=round(80*rand(4)+10)
A=
59244375
73428111
84851521
69833826
>>B=mod(A,7)==0
B=
0000
0100
1001
0000
四、问题和讨论(手写)
多项式的运算需要注意些什么?
实验五MATLAB的程序设计
一、实验目的
1、掌握MATLAB中M文件的功能、特点和形式。
2、掌握MATLAB中程序结构和程序流控制。
3、掌握MATLAB中字符和字符串的使用。
二、实验准备知识
1、M文件有命令文件和函数文件两种,扩展名均为“.m”。
运行一个命令文件等价于从指令窗口中按顺序连续运行文件中的指令。
每个函数文件都定义一个函数,其第一行包含function。
2、MATLAB中循环结果由while和for语句实现,分支结构由if语句实现。
其结构和C语言中对应语句类似。
3、MATLAB中有关程序流控制的语句和函数有echo、input、pause、break、keyoard等,实验中要用到的指令为input函数,该指令提示用户从键盘输入数值、字符串或表达式,并接受输入。
4、MATLAB中所有字符串都要用单引号界定后输入或赋值,字符串的每个字符都是矩阵的一个元素。
用eval指令可以运行字符串。
5、MATLAB中调用函数的常用形式是:
[输出参数1,输出参数2,…]=函数名(输入参数1,输入参数2,…)。
注意函数调用时各参数出现的顺序,应该和函数定义时的顺序一样。
三、实验内容和步骤(打印)
1、用while语句、for语句或if语句解决以下问题:
找出两个自然数,它们的和等于100,且第一个数被2除的商与第二个数被4除的商为36。
>>fori=0:
1:
100;
j=100-i;
if(i/2)+(j/4)==36&mod(j,4)==0
break
end
end
>>disp(i)
44
>>disp(j)
56
2、求方程
的根,用三个函数分别求当
大于0,等于0和小于0时的根,从主函数中用input指令输入a、b、c值。
>>a=input('请输入a的取值');
b=input('请输入b的取值');
c=input('请输入c的取值');
d=sqrt(b.^2-4*a*c);
x1=(-b+d)/2*a
x2=(-b-d)/2*a
请输入a的取值4
请输入b的取值5
请输入c的取值6
x1=
-10.0000+16.8523i
x2=
-10.0000-16.8523ix1=(-b+d)/2*a
x2=(-b-d)/2*a
请输入a的取值4
请输入b的取值5
请输入c的取值6
x1=
-10.0000+16.8523i
x2=
-10.0000-16.8523i
四、问题和讨论(手写)
1、命令文件和函数文件的运行有什么区别?
实验六MATLAB中m文件的调试
一、实验目的
熟悉和掌握函数调用和参数传递;
掌握基本的绘图指令,学习如何绘制2维和3维曲线图形。
二、实验准备知识
1、函数文件
函数文件的基本结构:
函数文件由function语句引导,其基本结构为:
function输出形参表=函数名(输入形参表)
注释说明部分
函数体语句
说明:
(1)关于函数文件名:
函数文件名与函数名也可以不相同。
当两者不同时,MATLAB将忽略函数名而确认函数文件名,因此调用时使用函数文件名。
(2)关于注释说明部分。
注释说明包括三部分内容:
①紧随函数文件引导行之后以%开头的第一注释行。
②第一注释行及之后连续的注释行。
③与在线帮助文本相隔一空行的注释行。
(3)关于return语句。
执行到该语句就结束函数的执行,程序流程转至调用该函数的位置。
通常,在函数文件中也可不使用return语句,这时在被调函数执行完成后自动返回。
2、函数调用
函数调用的一般格式是:
[输出实参表]=函数名(输入实参表)
3、普通图形的绘制:
2维图形的基本函数为plot函数,其基本格式为:
plot(x,y,‘选项’),选项包括线型、颜色等设置。
3维图形的基本函数为plot3函数,用法和plot函数相同。
4、绘制对数坐标曲线:
常用semilogx(x,y,‘选项’)函数来绘制横坐标维对数坐标的曲线。
5、图形窗口的分割:
用函数subplot(m,n,i)来实现。
含义是将图形窗口分为m行n列子窗口,然后选定第i个窗口为当前窗口。
6、坐标系的调整:
可用函数axis([xmin,xmax,ymin,ymax,zmin,zmax])来完成。
函数中可以输入4个或6个参数。
注意坐标的最小值必须小于最大值。
7、图形的标注:
为坐标轴标注用函数xlabel(‘string’,文本属性);为图形加标题用函数title(‘string’,文本属性);在图形窗口的任意位置加入标注用函数text(x,y,‘string’)
8、绘制特殊图形:
绘制极坐标图形用函数polar(角度向量,幅值向量,选项);条形图用函数bar(x,y);扇形图用pie(x)函数。
三、实验内容和步骤
1、编写函数文件求半径为r的圆的面积和周长。
function[sl]=mycircle(r)
s=pi*r^2;
l=2*pi*r;
>>[xy]=mycircle(5)
x=
78.5398
y=
31.4159
2、利用函数的递归调用,求n!
。
functiony=myfactor(n)
if(n<=1)
y=1;
else
y=n*myfactor(n-1);
end
>>c=myfactor(5)
c=
120
3、将窗口分为3个,分别绘制函数
、
、
的图形,x从0到5π。
4、假设一年每个月的平均气温,并用条形图绘制出来。
再将年平均气温以上的月份占总月份的百分比用扇形图表示出来。
并加上标题和坐标轴标注。
>x=1:
12;
y=[181617171819212322192021];
figure
(1)
bar(x,y)
title('某年12个月各月平均温度条形图')
xlabel('月份')
ylabel('平均温度')
a=find((y-mean(y)>0))
figure
(2)
pie(a)
a=
7891112
5、用plot3绘制三维螺旋线,再用axis改变坐标重新画一次。
x=0:
0.1:
20*pi;
plot3(x,sin(x),cos(x))
title('螺旋线(x,sin(x),cos(x))')
xlabel('x')
ylabel('sin(x)')
zlabel('cos(x)')
>>x=0:
0.1:
20*pi;
figure
(2)
plot3(x,sin(x),cos(x))
axis([2035-1.51.5-1.51.5])
title('螺旋线(x,sin(x),cos(x))')
xlabel('x')
ylabel('sin(x)')
zlabel('cos(x)')
6、用不同线型和颜色在同一坐标内绘制曲线y=2e-0.5xsin(2πx)及其包络线。
>x=(0:
pi/100:
2*pi)';
y1=2*exp(-0.5*x)*[1,-1];
y2=2*exp(-0.5*x).*sin(2*pi*x);
x1=(0:
12)/2;
y3=2*exp(-0.5*x1).*sin(2*pi*x1);
figure
(2)
plot(x,y1,'g:
',x,y2,'b--',x1,y3,'rp');
>>
7、用不同标度在同一坐标内绘制曲线y1=e-0.5xsin(2πx)及曲线y2=1.5e-0.1xsin(x)。
>>x1=0:
pi/100:
2*pi;
x2=0:
pi/100:
3*pi;
y1=exp(-0.5*x1).*sin(2*pi*x1);
y2=1.5*exp(-0.1*x2).*sin(x2);
plotyy(x1,y1,x2,y2);
四、问题和讨论(手写)
1、plot函数有几种格式?
各有什么区别?
2、如何设置绘制的曲线的颜色?
3、在函数定义和调用时所用到的形参表和实参表有什么区别?
实验七SIMULINK仿真初步
一、实验目的
1、如何在SIMULINK中创建一个简单的仿真模型。
2、如何在SIMULINK中构造一个模型。
二、实验准备知识
1、建立模型:
在SIMULINK建立模型,需要新建一个新的窗口,从SIMULINK模块中复制模块到模型中去。
在各模块库中双击,可以看到需要的模块,选中该模块,拖动鼠标把它移到自己的模型窗口。
把需要的模块复制完之后,再把不同的模块连接起来。
首先把鼠标指针定位在前一模块的输出端口,然后拖动鼠标指针到下一模块的输入端口并释放。
如此把所有模块连接起来,完成模型的建立。
2、定义模块中的参数:
双击要定义的模块把它打开,SIMULINK就显示出该模块的对话框,并列出这些参数和它们的当前值。
这些值可根据需要改变。
3、模块的操作:
要删除模块,必须先选中该模块,然后按下Delete键或从Edit菜单中选择Clear或Cut命令。
要断开模块间的连接,方式是按下Shift键,然后选中该模块并从模型中的原始位置拖动该模块即可。
选中一个模块,然后用鼠标拖动它的任何一个手柄即可改变模块大小。
4、连线的操作:
要从某根连线上引出另一根连线,可从连线位置开始,在按下Ctrl键的同时,按下鼠标左键,拖动鼠标的目标端口然后释放。
移动一个连线的定点,需要把鼠标指针移到该顶点上面,按下左键,拖动到希望位置然后释放。
三、实验内容和步骤(打印)
1、求解微分方程:
四、问题和讨论(手写)
如何才能使建立的模块有良好的可读性和可扩充性?