Matlab第七次课
2007-2008下学期
fft函数
格式,X=fft(x,N)
求出时域信号 x的离散傅立叶变换;
一般情况下,fft求出的函数为复数,可用 abs和
angle分别求出其幅度和相位。
Clc; Clear; close all;
t=0:0.001:3;
u=sin(300*t)+2*cos(200*t);
U=fft(u);
plot(abs(U));
axis([0,300,0,3000])
figure
plot(angle(U))
4、傅立叶逆变换函数
x=ifft(X)
从频域转换到时域
4.2.1线性方程组的系数矩阵
线性方程组可以用矩阵法求解,
AX= B
A为系数矩阵。
det( A)
rank(A)
trace(A)
cond(A)
矩阵 A 的秩
在矩阵 A所能划分出的行列式不为零的最大方阵的边长为矩阵 A 的秩,记作 rA,或
rankA。
特别规定零矩阵的秩为零。
显然 rA≤min(m,n)
注意:
若 A中至少有一个 r阶子式不等于零,且在
r<min(m,n)时,A中所有的 r+1阶子式全为零,则 A的秩为 r。
det( A),求方阵 A的行列式,若 det( A) =0;
A为奇异方阵。
trace(A),求出矩阵 A的主对角线上元素的和;
cond(A):求矩阵 A(方程组系数矩阵)的条件数;
若系数矩阵 A的行列式 det(a)很小,接近于零,则这样线性方程组是病态的。方程组解的精度比较低。
条件数就是用来评价方程组的病态程度。条件数越大,则方程的病态程度越重,解的精度越低。
练习 1
clc
clear
close all
a=[1 2 -1 3 ;2 -2 6 4 ;1 -1 3 2 ;0 0 0 0 ]
hlsa=det(a)
zhia=rank(a)
d=inv(a)
t=trace(a)
c=cond(a)
4.2.2 矩阵的分解
矩阵可以分解成几个具有特殊构造性质的矩阵的乘积。
1、矩阵的三角分解( lu分解)
[l,u]=lu(a)
2、矩阵的正交分解( qr分解)
[q,r]=qr(a)
r为上三角矩阵,r与 a有同样阶数。
q为正交方阵,指的 q的列向量都是单位向量,且两两正交。
3、奇异值分解( svd分解)
格式,[u,s,v]=svd(a)
a为 m× n阶矩阵
分解成三个矩阵,其中 s对角线上的元素就是矩阵 a的奇异值。
矩阵的条件数等于最大奇异值和最小奇异值之比。
练习
clc
clear
close all
b=[0.2190 0.6793 0.5194 0.0535
0.0077;0.0470 0.9347 0.8310 0.5297
0.3834;
0.6789 0.3835 0.0346 0.6711 0.0688]
[q,r]=qr(b)
[u,s,v]=svd(b)
4.2.3 矩阵的特征值分析
格式,[e,r]=eig(a)
e为矩阵特征向量; r为矩阵的特征根。
a*e=r * e; |a-r*E|=0 (特征方程 )
特征根为特征方程的根。
另一方法,用 matlab的 poly函数可以求出矩阵的特征方程系数。
利用 roots命令可以求出其特征根。
练习
clc
clear
close all
a=[ 2 9 0 0;0 4 1 4;7 5 5 1;7 8 7 4 ]
[e,r]=eig(a)
p=poly(a)
r=roots(p)
多项式运算
1、多项式四则运算
2、多项式求导、求根和求值
3、求线性时不变系统的频率响应
1、多项式相乘
例、设有两个多项式 a(x)=2x3+4x2+6x+8及
b(x)=3x2+6x+9,要求作如下运算:
( 1)多项式相乘
多项式相乘其实只要得到多项式相乘后的多项式的系数即可,所以令
a=[2,4,6,8];b=[3,6,9];
由于多项式相乘和离散信号的卷积的规则完全相同,所以有
c=conv(a,b)
clc
clear,close all
a=[2,4,6,8];
b=[3,6,9];
c=conv(a,b)
2、多项式加减
Matlab规定,只有长度相同的向量才能相加。 因此,在作加减运算时,首先要将短的向量前面补以若干个零元素,才能用 Matlab的矩阵加减法运算。
方法 1,手工加零
如,a=[2,4,6,8];b=[3,6,9];
d=a+[0,b]
得 d=2 7 12 17
方法 2,利用 m程序自动加零
function y=polyadd(x1,x2)
n1=length(x1);
n2=length(x2);
if n1>n2 x2=[zeros(1,n1-n2),x2];
elseif n1<n2 x1=[zeros(1,n2-n1),x2];
end,y=x1+x2
clc
clear,close all
a=[2,4,6,8];
b=[3,6,9];
c=conv(a,b)
cd=polyadd(a,b)
cd2=polyadd(a,-b)
3、多项式相除
两个多项式相除,可能存在余式。
格式,[q,r]=deconv(c,a)
q是商式,r是余子式;
练习 1:
clc
clear,close all
a=[2,4,6,8];
b=[3,6,9];
c=conv(a,b)
[q,r]=deconv(c,a)
得到,q = 3 6 9
r = 0 0 0 0 0 0
练习 2:
令 a1=3 6 8 9
clc
clear,close all
a=[2,4,6,8];
b=[3,6,9];
c=conv(a,b)
a1=[3 6 8 9]
[q,r]=deconv(c,a1)
得到
q = 2.0000 4.0000 6.6667
r = 0 0 0 6.0000 12.6667
12.0000
练习 3 验证结果
用商式乘以除式再加上余式的方法进行验证。
clc
clear,close all
a=[2,4,6,8];
b=[3,6,9];
c=conv(a,b)
a1=[3 6 8 9]
[q,r]=deconv(c,a1)
c1=conv(q,a1)+r
c = 6 24 60 96 102 72
a1 = 3 6 8
c1 = 6 24 60 96 102 72
2007-2008下学期
fft函数
格式,X=fft(x,N)
求出时域信号 x的离散傅立叶变换;
一般情况下,fft求出的函数为复数,可用 abs和
angle分别求出其幅度和相位。
Clc; Clear; close all;
t=0:0.001:3;
u=sin(300*t)+2*cos(200*t);
U=fft(u);
plot(abs(U));
axis([0,300,0,3000])
figure
plot(angle(U))
4、傅立叶逆变换函数
x=ifft(X)
从频域转换到时域
4.2.1线性方程组的系数矩阵
线性方程组可以用矩阵法求解,
AX= B
A为系数矩阵。
det( A)
rank(A)
trace(A)
cond(A)
矩阵 A 的秩
在矩阵 A所能划分出的行列式不为零的最大方阵的边长为矩阵 A 的秩,记作 rA,或
rankA。
特别规定零矩阵的秩为零。
显然 rA≤min(m,n)
注意:
若 A中至少有一个 r阶子式不等于零,且在
r<min(m,n)时,A中所有的 r+1阶子式全为零,则 A的秩为 r。
det( A),求方阵 A的行列式,若 det( A) =0;
A为奇异方阵。
trace(A),求出矩阵 A的主对角线上元素的和;
cond(A):求矩阵 A(方程组系数矩阵)的条件数;
若系数矩阵 A的行列式 det(a)很小,接近于零,则这样线性方程组是病态的。方程组解的精度比较低。
条件数就是用来评价方程组的病态程度。条件数越大,则方程的病态程度越重,解的精度越低。
练习 1
clc
clear
close all
a=[1 2 -1 3 ;2 -2 6 4 ;1 -1 3 2 ;0 0 0 0 ]
hlsa=det(a)
zhia=rank(a)
d=inv(a)
t=trace(a)
c=cond(a)
4.2.2 矩阵的分解
矩阵可以分解成几个具有特殊构造性质的矩阵的乘积。
1、矩阵的三角分解( lu分解)
[l,u]=lu(a)
2、矩阵的正交分解( qr分解)
[q,r]=qr(a)
r为上三角矩阵,r与 a有同样阶数。
q为正交方阵,指的 q的列向量都是单位向量,且两两正交。
3、奇异值分解( svd分解)
格式,[u,s,v]=svd(a)
a为 m× n阶矩阵
分解成三个矩阵,其中 s对角线上的元素就是矩阵 a的奇异值。
矩阵的条件数等于最大奇异值和最小奇异值之比。
练习
clc
clear
close all
b=[0.2190 0.6793 0.5194 0.0535
0.0077;0.0470 0.9347 0.8310 0.5297
0.3834;
0.6789 0.3835 0.0346 0.6711 0.0688]
[q,r]=qr(b)
[u,s,v]=svd(b)
4.2.3 矩阵的特征值分析
格式,[e,r]=eig(a)
e为矩阵特征向量; r为矩阵的特征根。
a*e=r * e; |a-r*E|=0 (特征方程 )
特征根为特征方程的根。
另一方法,用 matlab的 poly函数可以求出矩阵的特征方程系数。
利用 roots命令可以求出其特征根。
练习
clc
clear
close all
a=[ 2 9 0 0;0 4 1 4;7 5 5 1;7 8 7 4 ]
[e,r]=eig(a)
p=poly(a)
r=roots(p)
多项式运算
1、多项式四则运算
2、多项式求导、求根和求值
3、求线性时不变系统的频率响应
1、多项式相乘
例、设有两个多项式 a(x)=2x3+4x2+6x+8及
b(x)=3x2+6x+9,要求作如下运算:
( 1)多项式相乘
多项式相乘其实只要得到多项式相乘后的多项式的系数即可,所以令
a=[2,4,6,8];b=[3,6,9];
由于多项式相乘和离散信号的卷积的规则完全相同,所以有
c=conv(a,b)
clc
clear,close all
a=[2,4,6,8];
b=[3,6,9];
c=conv(a,b)
2、多项式加减
Matlab规定,只有长度相同的向量才能相加。 因此,在作加减运算时,首先要将短的向量前面补以若干个零元素,才能用 Matlab的矩阵加减法运算。
方法 1,手工加零
如,a=[2,4,6,8];b=[3,6,9];
d=a+[0,b]
得 d=2 7 12 17
方法 2,利用 m程序自动加零
function y=polyadd(x1,x2)
n1=length(x1);
n2=length(x2);
if n1>n2 x2=[zeros(1,n1-n2),x2];
elseif n1<n2 x1=[zeros(1,n2-n1),x2];
end,y=x1+x2
clc
clear,close all
a=[2,4,6,8];
b=[3,6,9];
c=conv(a,b)
cd=polyadd(a,b)
cd2=polyadd(a,-b)
3、多项式相除
两个多项式相除,可能存在余式。
格式,[q,r]=deconv(c,a)
q是商式,r是余子式;
练习 1:
clc
clear,close all
a=[2,4,6,8];
b=[3,6,9];
c=conv(a,b)
[q,r]=deconv(c,a)
得到,q = 3 6 9
r = 0 0 0 0 0 0
练习 2:
令 a1=3 6 8 9
clc
clear,close all
a=[2,4,6,8];
b=[3,6,9];
c=conv(a,b)
a1=[3 6 8 9]
[q,r]=deconv(c,a1)
得到
q = 2.0000 4.0000 6.6667
r = 0 0 0 6.0000 12.6667
12.0000
练习 3 验证结果
用商式乘以除式再加上余式的方法进行验证。
clc
clear,close all
a=[2,4,6,8];
b=[3,6,9];
c=conv(a,b)
a1=[3 6 8 9]
[q,r]=deconv(c,a1)
c1=conv(q,a1)+r
c = 6 24 60 96 102 72
a1 = 3 6 8
c1 = 6 24 60 96 102 72