Matlab试题及答案讲课稿.docx
- 文档编号:6782526
- 上传时间:2023-05-10
- 格式:DOCX
- 页数:11
- 大小:206.96KB
Matlab试题及答案讲课稿.docx
《Matlab试题及答案讲课稿.docx》由会员分享,可在线阅读,更多相关《Matlab试题及答案讲课稿.docx(11页珍藏版)》请在冰点文库上搜索。
Matlab试题及答案讲课稿
《Matlab软件实训》
一、训练目的
1、熟悉Matlab工具软件的开发环境
2、掌握Matlab的一些常用命令
3、掌握Matlab/Simulink建模仿真的方法
二、训练内容
1、利用命令进行各种相关数学计算;
2、编写M文件实现各种相关数学计算;
3、利用Simulink建模并仿真;
三、训练任务
1、解方程:
Ax=B,其中,
A=
,B=
本题解决思路:
这是一个简单的数组运算,核心点在于数组的输入方法和一些基本的数组运算基础,本题中需要注意的是左除与右除的区别。
命令如下
>>A=[-3508;1-82-1;0-593;-70-45]
A=
-3508
1-82-1
0-593
-70-45
>>B=[0;2;-1;6]
B=
0
2
-1
6
>>X=A\B
X=
-0.6386
-0.4210
-0.3529
0.0237
2、数值运算
已知某班的5名学生的三门成绩如下:
序号12345
高数7889647368
外语8377807870
电路8291788268
试写出有关命令,先分别找出三门课的最高分及其学生序号,然后找出三门课总分的最高分及其学生序号。
本题解决思路:
详细的分析题目,可以发现本题就是一个多组求最大值并输出的问题。
有三个核心点,第一点是求最大值问题。
第二点是如何将多组最大值问题合并在一个程序中解出,第三点是输入和输出的方法。
最大值我采用了MATLAB中的max命令,其实也可以采用自己编写M文件的方法,但是程序越精简运行越快,我选择了自带命令。
第二个问题我采用了一个for和if配合的循环判断的语句。
第三个问题我采用disp输出,并用num2str将字符串转换输出。
程序如下
a=input('高数成绩');
b=input('英语成绩');
c=input('电工成绩');
fori=1:
3
ifi==1
[y1,t1]=max(a,[],2);
elseifi==2
[y2,t2]=max(b,[],2);
else
[y3,t3]=max(c,[],2);
end
end
end
s=a+b+c;
[y4,t4]=max(s,[],2);
disp(['高数最高分是',num2str(t1),'号',num2str(y1),'分'])
disp(['英语最高分是',num2str(t2),'号',num2str(y2),'分'])
disp(['电工最高分是',num2str(t3),'号',num2str(y3),'分'])
disp(['总分最高分是',num2str(t4),'号',num2str(y4),'分'])
高数成绩[7889647368]
英语成绩[8377807870]
电工成绩[8291788268]
高数最高分是2号89分
英语最高分是1号83分
电工最高分是2号91分
总分最高分是2号257分
>>
3、建立M文件,计算积分y=
;
M文件如下
function[y]=J(a,b)
symsx
y=int(sin(x),x,a,b)
end
在命令行中输入J(0,pi/2)
运算得出结果
>>J(0,pi/2)
y=
1
ans=
1
4、建立M文件,在[02π]范围内绘制二维曲线图y=
本题解决思路:
在M文件中要有输入变量和输出量,分析本题得知,本题的x并不是输入文件,他是一个中间变量,真正的输入变量其实是x的输入范围,定义变量为(a,b),确定这个以后直接调用MATLAB中的内置命令求解。
M文件如下
function[y]=H(a,b)
x=linspace(a,b);
y=sin(x).*cos(5*x);
plot(x,y);
end
编辑好后输入x的范围并调运M文件“H”输入H(0,2*pi)
>>H(0,2*pi)
ans=
Columns1through9
00.06030.10190.10980.0746-0.0050-0.1216-0.2603-0.4005
Columns10through18
-0.5187-0.5926-0.6040-0.5424-0.4069-0.20680.03880.30330.5558
Columns19through27
0.76520.90420.95300.90220.75440.52400.2355-0.0792-0.3851
Columns28through36
-0.6482-0.8398-0.9402-0.9407-0.8450-0.6678-0.4330-0.17050.0882
Columns37through45
0.31390.48360.58270.60700.56250.46380.33160.18930.0594
Columns46through54
-0.0401-0.0978-0.1108-0.0845-0.03130.03130.08450.11080.0978
Columns55through63
0.0401-0.0594-0.1893-0.3316-0.4638-0.5625-0.6070-0.5827-0.4836
Columns64through72
-0.3139-0.08820.17050.43300.66780.84500.94070.94020.8398
Columns73through81
0.64820.38510.0792-0.2355-0.5240-0.7544-0.9022-0.9530-0.9042
Columns82through90
-0.7652-0.5558-0.3033-0.03880.20680.40690.54240.60400.5926
Columns91through99
0.51870.40050.26030.12160.0050-0.0746-0.1098-0.1019-0.0603
Column100
-0.0000
5、利用Simulink建立仿真模型,并给出建模步骤。
本题思路:
build建造builtbuilt确定输入函数的类型,确定中间运算过程,确定最终结果显示器
awake醒来awokeawaked/awoken结果截图如下:
begin开始beganbegun
四、个人总结
MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,MATLAB的最突出的特点就是简洁。
shrink收缩shrank/shrunkshrunk/shrunkenMATLAB相对于其他的一些编程软件有许多的优点:
一、语言简洁紧凑,使用方便灵活,库函数极其丰富。
二、运算符丰富。
send送/寄sentsent三、MATLAB既具有结构化的控制语句(如for循环、while循环),又有面向对象编程的特性。
sit坐satsat四、语法限制不严格,程序设计自由度大。
hear听到heardheard
mean表…意思meantmeanthear听到heardheard 五、程序的可移植性很好,基本上不做修改就可以在各种型号的计算机和操作系统上运行。
read读readreadforgive原谅forgaveforgiven 六、MATLAB的图形功能强大。
read读readread用madlab创建矩阵时,方法有两种:
第一、可以直接依次输入矩阵各行各列的元素,但矩阵元素必须用[ ]括住,矩阵元素必须用逗号或空格分隔 ,在[ ]内矩阵的行与行之间必须用分号分隔。
第二、用MATLAB函数创建矩阵。
MATLAB可以进行矩阵的加减、乘除的元素,求可逆矩阵、转置矩阵,求矩阵的特征值,求线性方程组等等。
MATLAB的功能是非常强大的,MATLAB不仅有强大的运算功能,它还有强大的绘图功能,我对它的了解也仅仅就是一点点,或许说还没有入门。
比如说它含有丰富的内建函数,例如数学函数中的三角函数、复函数、多项式函数、数据分析函数的求平均值、最大最小值、排序等,以及逻辑/选择函数如if-else等,还有用来模拟随机发生事件的随机函数。
这些我都不了解。
hold拿住heldheld
spend花费spentspentgrow成长grewgrown虽学习MATLAB的时间虽然很短,但却让我了解到了它的强大和它的功能。
我想就算时间足够,老师也不能把所有的都讲解给我们,因为一个软件的功能需要我们自己不断的去摸索,老师也不可能知道所有。
老师只是个指路的明灯,最终的学习还是要靠自己。
而且在摸索过程中,我们能够发现和体会学习的快乐!
五、学习到的技能
bear忍受boreborn基本的命令:
lay放置laidlaid1、!
dir可以查看当前工作目录的文件。
!
dir&可以在dos状态下查看。
2、who 可以查看当前工作空间变量名, whos可以查看变量名细节。
3、功能键:
功能键 快捷键 说明
方向上键 Ctrl+P 返回前一行输入
方向下键 Ctrl+N 返回下一行输入
方向左键 Ctrl+B 光标向后移一个字符
方向右键 Ctrl+F 光标向前移一个字符
Ctrl+方向右键 Ctrl+R 光标向右移一个字符
Ctrl+方向左键 Ctrl+L 光标向左移一个字符
home Ctrl+A 光标移到行首
End Ctrl+E 光标移到行尾
Esc Ctrl+U 清除一行
Del Ctrl+D 清除光标所在的字符
Backspace Ctrl+H 删除光标前一个字符
Ctrl+K 删除到行尾
Ctrl+C 中断正在执行的命令
4、clc可以命令窗口显示的内容,但并不清除工作空间。
二、函数及运算
1、运算符:
+:
加, -:
减, *:
乘, /:
除,\:
左除 ^:
幂,‘:
复数的共轭转置,():
制定运算顺序。
2、常用函数表:
sin() 正弦(变量为弧度)
Cot() 余切(变量为弧度)
sind() 正弦(变量为度数)
Cotd() 余切(变量为度数)
asin() 反正弦(返回弧度)
acot() 反余切(返回弧度)
Asind()反正弦(返回度数)
acotd()反余切(返回度数)
cos() 余弦(变量为弧度)
exp() 指数
cosd() 余弦(变量为度数)
log() 对数
acos() 余正弦(返回弧度)
log10()以10为底对数
acosd()余正弦(返回度数)
sqrt() 开方
tan() 正切(变量为弧度)
realsqrt()返回非负根
tand() 正切(变量为度数)
abs() 取绝对值
atan() 反正切(返回弧度)
angle()返回复数的相位角
atand()反正切(返回度数)
mod(x,y)返回x/y的余数
sum( ) 向量元素求和
3、其余函数可以用helpelfun和helpspecfun命令获得。
4、常用常数的值:
pi 3.1415926…….
realmin 最小浮点数,2^-1022
i 虚数单位
realmax 最大浮点数,(2-eps)2^1022
j 虚数单位
Inf 无限值
eps 浮点相对经度=2^-52
NaN 空值
三、数组和矩阵:
1、构造数组的方法:
增量发和linspace(first,last,num)first和last为起始和终止数,num为需要的数组元素个数。
2、构造矩阵的方法:
可以直接用[]来输入数组,也可以用以下提供的函数来生成矩阵。
ones() 创建一个所有元素都为1的矩阵,其中可以制定维数,1,2….个变量
zeros() 创建一个所有元素都为0的矩阵
eye() 创建对角元素为1,其他元素为0的矩阵
diag() 根据向量创建对角矩阵,即以向量的元素为对角元素
magic() 创建魔方矩阵
rand() 创建随机矩阵,服从均匀分布
randn() 创建随机矩阵,服从正态分布
randperm() 创建随机行向量
horcat C=[A,B],水平聚合矩阵,还可以用cat(1,A,B)
vercat C=[A;B],垂直聚合矩阵,还可以用cat(2,A,B)
repmat(M,v,h) 将矩阵M在垂直方向上聚合v次,在水平方向上聚合h次
blkdiag(A,B) 以A,和B为块创建块对角矩阵
length 返回矩阵最长维的的长度
ndims 返回维数
numel 返回矩阵元素个数
size 返回每一维的长度,[rows,cols]=size(A)
reshape 重塑矩阵,reshape(A,2,6),将A变为2×6的矩阵,按列排列。
rot90 旋转矩阵90度,逆时针方向
fliplr 沿垂轴翻转矩阵
flipud 沿水平轴翻转矩阵
transpose 沿主对角线翻转矩阵
ctranspose 转置矩阵,也可用A’或A.’,这仅当矩阵为复数矩阵时才有区别
inv 矩阵的逆
det 矩阵的行列式值
trace 矩阵对角元素的和
norm 矩阵或矢量的范数,norm(a,1),norm(a,Inf)…….
normest 估计矩阵的最大范数矢量
chol 矩阵的cholesky分解
cholinc 不完全cholesky分解
lu LU分解
luinc 不完全LU分解
qr 正交分解
kron(A,B) A为m×n,B为p×q,则生成mp×nq的矩阵,A的每一个元素都会乘上B,并占据p×q大小的空间
rank 求出矩阵的刺
pinv 求伪逆矩阵
A^p 对A进行操作
A.^P 对A中的每一个元素进行操作
四、数值计算
1、线性方程组求解
(1)AX=B的解可以用X=A\B求。
XA=B的解可以用X=A/B求。
如果A是m×n的矩阵,当m=n时可以找到唯一解,m 如果m>n,超定系统,至少找到一组解。 如果A是奇异的,且AX=B有解,可以用X=pinv(A)×B返回最小二乘解 (2)AX=b, A=L×U,[L,U]=lu(A), X=U\(L\b),即用LU分解求解。 (3)QR(正交)分解是将一矩阵表示为一正交矩阵和一上三角矩阵之积,A=Q×R[Q,R]=chol(A), X=Q\(U\b) (4)cholesky分解类似。 2、特征值 D=eig(A)返回A的所有特征值组成的矩阵。 [V,D]=eig(A),还返回特征向量矩阵。 3、A=U×S×UT,[U,S]=schur(A).其中S的对角线元素为A的特征值。 4、多项式Matlab里面的多项式是以向量来表示的,其具体操作函数如下: conv 多项式的乘法 deconv 多项式的除法,【a,b】=deconv(s),返回商和余数 poly 求多项式的系数(由已知根求多项式的系数) polyeig 求多项式的特征值 Polyfit(x,y,n) 多项式的曲线拟合,x,y为被拟合的向量,n为拟合多项式阶数。 polyder 求多项式的一阶导数,polyder(a,b)返回ab的导数 [a,b]=polyder(a,b)返回a/b的导数。 polyint 多项式的积分 polyval 求多项式的值 polyvalm 以矩阵为变量求多项式的值 residue 部分分式展开式 roots 求多项式的根(返回所有根组成的向量) 注: 用ploy(A)求出矩阵的特征多项式,然后再求其根,即为矩阵的特征值。 5、插值常用的插值函数如下: griddata 数据网格化合曲面拟合 Griddata3 三维数据网格化合超曲面拟合 interp1 一维插值(yi=interp1(x,y,xi,’method’)Method=nearest/linear/spline/pchip/cubic Interp2 二维插值zi=interp1(x,y,z,xi,yi’method’),bilinear Interp3 三维插值 interpft 用快速傅立叶变换进行一维插值,helpfft。 mkpp 使用分段多项式 spline 三次样条插值 pchip 分段hermit插值 6、函数最值的求解 fminbnd(‘f’,x1,x2,optiset(,))求f在x1和x2之间的最小值。 Optiset选项可以有‘Display’+‘iter’/’off’/’final’,分别表示显示计算过程/不显示/只显示最后结果。 fminsearch求多元函数的最小值。 fzero(‘f’,x1)求一元函数的零点。 X1为起始点。 同样可以用上面的选项。 五、图像绘制: 1、基本绘图函数 plot 绘制二维线性图形和两个坐标轴 plot3 绘制三维线性图形和两个坐标轴 fplot 在制定区间绘制某函数的图像。 fplot(‘f’,区域,线型,颜色) loglog 绘制对数图形及两个坐标轴(两个坐标都为对数坐标)semilogx 绘制半对数坐标图形 semilogy 绘制半对数坐标图形 2、可以用subplot(3,3,1)表示将绘图区域分为三行三列,目前使用第一区域。 will将would× will将would× write书写wrotewritten
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Matlab 试题 答案 讲课