x=(a'a)-1a'b——求逆法
3)欠定方程组的解
matlab可求出两个解:
用除法求的解x是具有最多零元素的解
是具有最小长度或范数的解,这个解是基于伪逆pinv求得的。
3、符号矩阵的创建
1)用matlab函数sym创建矩阵(symbolic的缩写)
命令格式:
A=sym('[]')
2)用字符串直接创建矩阵
4、符号矩阵与数值矩阵的转换
将数值矩阵转化为符号矩阵,函数调用格式:
double(A)
将符号矩阵转化为数值矩阵,函数调用格式:
numeric(A)
5、符号微积分与积分变换
diff(f)—对缺省变量求微分
diff(f,v)—对指定变量v求微分
diff(f,v,n)—对指定变量v求n阶微分
int(f)—对f表达式的缺省变量求积分
int(f,v)—对f表达式的v变量求积分
int(f,v,a,b)—对f表达式的v变量在(a,b)区间求定积分
6、符号代数方程求解
solve(f)——求一个方程的解
solve(f1,f2,…fn)——求n个方程的解
7、符号微分方程求解指令:
dsolve
命令格式:
dsolve(f,g):
f——微分方程,可多至12个微分方程的求解;g为初始条件,默认自变量为'x',可任意指定自变量't','u'等,微分方程的各阶导数项以大写字母D表示
三、实验内容及结果:
1、已知a=[123;456;780],求其特征多项式并求其根。
2、已知多项式a(x)=x2+2x+3,b(x)=4x2+5x+6,求a,b的积并微分。
3、求解方程1)
2)
3)
4、用两种方法创建符号矩阵,A=[a,2*b]
[3*a,0]
5、计算二重不定积分
6、对符号方程f=ax2+bx+c求解。
1)对x求解,2)对a求解。
7、求解微分方程
。
8、已知系统冲激响应为h(n)=[0.05,0.24,0.40,0.24,0.15,-0.1,0.1],系统输入u(n)由指令randn('state',1);u=2*(randn(1,100)>0.5)-1产生,该输入信号的起始作用时刻为0。
试用直杆图(提示:
用stem指令)画出分别显示该系统输入、输出信号的两张子图。
四、心得体会
这次实验进一步提升自己的能力,虽然刚开始实验时没有把所有的实验做完,回来后又一个人把没做完的补完,学习的过程是很美好的。
希望一次比一次有进
步。
实验三MATLAB语言的程序设计
一、实验目的:
1、熟悉MATLAB程序编辑与设计环境
2、掌握各种编程语句语法规则及程序设计方法
3、函数文件的编写和设计
4、了解和熟悉跨空间变量传递和赋值
二、实验基本知识:
1、程序流程控制语句
for循环结构
语法:
fori=初值:
增量:
终值
语句1
……
语句n
end
说明:
1.i=初值:
终值,则增量为1。
2.初值、增量、终值可正可负,可以是整数,也可以是小数,只须符合数学逻辑。
while循环结构
语法:
while逻辑表达式
循环体语句
end
说明:
1、whiIe结构依据逻辑表达式的值判断是否执行循环体语勾。
若表达式的值为真,执行循环体语句一次、在反复执行时,每次都要进行判断。
若表达式的值为假,则程序执行end之后的语句。
2、为了避免因逻辑上的失误,而陷入死循环,建议在循环体语句的适当位置加break语句、以便程序能正常执行。
(执行循环体的次数不确定;每一次执行循环体后,一定会改变while后面所跟关系式的值。
)
3、while循环也可以嵌套、其结构如下:
while逻辑表达式1
循环体语句1
while逻辑表达式2
循环体语句2
end
循环体语句3
end
if-else-end分支结构
if表达式1
语句1
elseif表达式2(可选)
语句2
else(可选)
语句3
end
end
说明:
1.if结构是一个条件分支语句,若满足表达式的条件,则往下执行;若不满足,则跳出if结构。
2.elseif表达式2与else为可选项,这两条语句可依据具体情况取舍。
3.注意:
每一个if都对应一个end,即有几个if,记就应有几个end。
switch-case结构
语法:
switch表达式
case常量表达式1
语句组1
case常量表达式2
语句组2
……
otherwise
语句组n
end
说明:
1.switch后面的表达式可以是任何类型,如数字、字符串等。
2.当表达式的值与case后面常量表达式的值相等时,就执行这个case后面的语句组如果所有的常量表达式的值都与这个表达式的值不相等时,则执行otherwise后的执行语句。
程序流程控制指令
break、return、pause
2、函数文件的结构和编写方法
函数只能在函数体内对变量进行操作,也就是只能访问函数本身工作空间中的变量。
M函数文件的结构
(1)函数定义行(function)
(2)H1行(函数帮助文本的第一行)
(3)函数帮助文本
(4)函数体
(5)注释
函数文件编写后,保存时,其文件名必须与函数名相同。
注意:
函数名不要与MATLAB自身的函数命令相同。
三、实验内容及结果:
练习A
1、熟悉MATLAB程序编辑与设计环境
2、用for循环语句实现求1~100的和。
?
3、用for循环语句实现编写一个求n阶乘的函数文件。
4、一行100列的Fibonacci数组a,元素满足Fibonacci规则:
a
(1)=a
(2)=1,a(i)=a(i-1)+a(i-2)(i=3,4,…),求该数组中第一个大于10000的元素。
练习B思考题
4、已知一维数组A=[2,4,5,8,10],B=[4,6,9,3,4],用for循环语句实现
。
求和函数可用sum()。
.
5、利用for循环求1!
+2!
+3!
+?
…?
+5!
的值。
.
6、编写M函数表示曲线y2=e-t/3sin(3t)以及它的包络线y1=e-t/3,并从命令窗口输入命令语句绘制曲线,t的取值范围是[0,4π]。
7、设
,编写一个M函数文件,使得调用f(x)时,x可用矩阵代入,得出的f(x)为同阶矩阵。
四、心得体会
这次实验,是我第一次练习用m文件写程序,然后再运行。
用m文件要比直接在窗口上写要好一些,因为m文件是可以保存下来,这样自己当时没有截取结果,以后也是可以在自己的电脑上打开。
实验四采用SIMULINK的系统仿真
一、实验目的:
1、熟悉SIMULINK工作环境及特点
2、掌握线性系统仿真常用基本模块的用法
3、掌握SIMULINK的建模与仿真方法
二、实验基本知识:
1.了解SIMULINK模块库中各子模块基本功能
2.SIMULINK的建模与仿真方法
(1)打开模块库,找出相应的模块。
鼠标左键点击相应模块,拖拽到模型窗口中即可。
(2)创建子系统:
当模型大而复杂时,可创建子系统。
(3)设置仿真控制参数。
三、实验内容及结果
练习
SIMULINK仿真实际应用.
1.利用SIMULINK求解微分方程
,方程的初始条件为x(0)=1,
。
在增益模块‘Gain’取值分别为2和100的情况下(即
运行,给出运行结果。
2.已经系统框图,求传递函数,并求阶跃响应。
四、心得体会
此次实验,我们是需要用SIMULINK来完成。
刚开始用SIMULINK时,有些慌慌张张,因为不清楚一些模块的位置。
后来通过老师的提点知道位置并成功把图画出来了,同时自己也掌握SIMULINK的建模与仿真方法。
实验五采用SIMULINK的系统仿真
(二)
一、实验目的:
1、熟悉SIMULINK工作环境及特点
2、掌握线性系统仿真常用基本模块的用法
3、掌握SIMULINK的建模与仿真方法
4、子系统的创建和封装设计
二、实验基本知识:
1.了解SIMULINK模块库中各子模块基本功能
2.SIMULINK的建模与仿真方法
(1)打开模块库,找出相应的模块。
鼠标左键点击相应模块,拖拽到模型窗口中即可。
(2)创建子系统:
当模型大而复杂时,可创建子系统。
(3)设置仿真控制参数。
三、实验内容及实验结果
1、用两种滤波器设计方法实现下列问题:
构建一个低通滤波系统的SIMULINK模型。
输入信号是一个受正态噪声干扰的采样信号
在此,而(秒)采用10阶Butterworth低通滤波器,以便从输入信号中过滤获得10Hz的输出信号。
2、利用Simulink求解
在区间
[0,1]的积分,并求出积分值I
(1).
)
(
)
(
)
6
2
sin(
)
(
5
2
.
0
2
2
t
u
t
y
t
e
dt
dy
e
dt
t
y
d
t
t
?
?
?
?
?
?
3、时变系统的仿真:
对时变受控对象模型
考虑一个控制系统模型如图所示,其中
均为常数,试分析闭环系统的阶跃响应曲线。
四、心得体会
这次的实验相比于上一次的实验难度要大一些,因为用到的模块多而且比较复杂也不好寻找。
但是却让我们学习了很多,解决一个问题的方法有很多,题目的解答也不是只有一种。
通过多种方法的解答,更能学习到很多。
实验六MATLAB的图形绘制
一、实验目的:
1、学习MATLAB图形绘制的基本方法;
2、熟悉和了解MATLAB图形绘制程序编辑的基本指令;
3、熟悉掌握利用MATLAB图形编辑窗口编辑和修改图形界面,并添加图形的各种标注;
4、掌握plot、subplot的指令格式和语法。
二、实验基本知识:
1、plot(x,y)------绘制由x,y所确定的曲线;
2、多组变量绘图:
plot(x1,y1,选项1,x2,y2,选项2,……);
3、图形窗口的分割;
4、图形编辑窗口的使用。
三、实验内容及结果
练习A
二维曲线绘制的基本指令plot
•基本调用格式plot(x,y,'s')
特别注意:
’s’是离散点形、连续线型和点线色彩三种设置数据构成的字符串,三种设置数据可以组合使用,顺序任意。
•plot的衍生调用格式:
1.单色或多色绘制多条曲线:
plot(X,Y,‘s’):
用s指定的点形线型色彩绘制多条曲线。
plot(X,Y):
采用默认的色彩次序用细实线绘制多条曲线。
2.多三元组绘制多条曲线
plot(X1,Y1,'s1',X2,Y2,'s2',...,Xn,Yn,'sn')
3.单输入量绘线
plot(Y)
Ø当X、Y均为(m×n)数组时,将绘制出n条曲线。
每条曲线的几何位置由X、Y对应的列确定。
Ø当X、Y两个输入量中有一个是一维数组,且该数组的长度与另一个输入量的“行数”(或“列数”)相等时,将绘制出“列数”(或“行数”)条曲线。
Øplot(X,Y,‘s’):
只能用s指定的同一色彩绘制多条曲线。
【1】二维曲线绘图基本指令演示。
本例运作后,再试验plot(t),plot(Y),plot(Y,t),以观察产生图形的不同。
t=(0:
pi/50:
2*pi)';
k=0.4:
0.1:
1;
Y=cos(t)*k;
plot(t,Y)
【2】用图形表示连续调制波形Y=sin(t)sin(9t)及其包络线。
t=0:
pi/1000:
pi;
y1=@(t)sin(t).*sin(9*t);
y2=sin(t);
plot(t,y1(t),t,y2'*[1,-1],'r--')
holdon
t0=linspace(0,pi,10);
fori=1:
length(t0)
t00=fzero(y1,t0(i));
plot(t00,0,'o')
end
plot(pi,0,'o')
【3】在一个图形窗口绘制正弦和余弦曲线,要求给图形加标题“正弦和余弦曲线”,X轴Y轴分别标注为“时间t”和“正弦、余弦”,在图形的某个位置标注“sin(t)”“cos(t)”,并加图例,显示网格,坐标为正方形坐标系。
t=0:
pi/100:
2*pi;
y1=sin(t);
y2=cos(t);
plot(t,y1,'r.',t,y2,'g.');
legend('sin(t)','cos(t)');
axissquare;
title('sintcost')
text(1,-0.4,'cos(t)\rightarrow')
text(2.8,0.4,'\leftarrowsin(t)')
xlabel('时间');ylabel('正弦、余弦')
四、心得体会
这次是通过写程序得到绘制的图形,突然觉得MATLAB这个软件非常的神奇,先自己写,再运行,然后再对比结果进行修改。
这个过程看到了波形格式各样的变换很精彩。
实验七MATLAB在信号与系统中的应用
一、实验目的:
1.掌握利用MATLAB求解LTI系统的方法
2.掌握用MATLAB中滤波分析的函数命令。
3.熟悉MATLAB信号处理工具箱。
二、实验基本知识:
1、绘制三维网格曲面图指令mesh()。
2.对于线性定常离散系统的响应函数为filter()。
函数调用格式:
filter(B,A,x):
对输入为向量x进行滤波处理。
三、实验内容及结果:
1、已知二阶系统传递函数为
,当
时,试计算阻尼比
从0.1~1时的二阶系统的阶跃响应,并绘制阶跃响应三维网格曲面图。
2、某LTI系统的单位冲激响应
,输入
,初始条件为0,求系统响应y(t).
3、已知滤波器fc=30,fs=1000,为10阶的butterworth滤波器,对信号输入x(n)=0.8n(n=0:
31)的响应y(n).画出输入x(n)、输出y(n)波形。
四、心得体会
此次实验学习了很多,掌握利用MATLAB求解LTI系统的方法,同时也掌握用MATLAB中滤波分析的函数命令。
实验八:
频率采样法设计FIR数字滤波器
数字滤波器从滤波器功能上可以分为低通、高通、带通、带阻以及全通滤波器;根据系统的单位冲击响应的特性,又可以分为有限长单位冲激响应滤波器(FIR)和无限长单位冲激响应滤波器(IIR)。
与IIR滤波器相比,FIR滤波器在保证幅度特性满足技术要求的同时,很容易做到有严格的线性相位特性。
设FIR滤波器单位脉冲响应h(n)的长度为N,其系统函数为:
当滤波器的系数N满足一定的对称条件时,就可以获得线性相位。
线性相位FIR滤波器共分为四种类型,分别为:
1)类型
,系数对称,即
N为奇数。
2)类型
,系数对称,即
,N为偶数。
3)类型
,系数反对称,即
,N为奇数。
4)类型
,系数反对称,即
,N为偶数。
1)频率采样