matlab周期方波信号解析.docx
《matlab周期方波信号解析.docx》由会员分享,可在线阅读,更多相关《matlab周期方波信号解析.docx(17页珍藏版)》请在冰豆网上搜索。
matlab周期方波信号解析
matlab周期方波信号
(一)周期离散方波信号频域分析
与周期模拟信号一样,周期离散信号同样可以展开成傅里叶级数形式,并得到离散傅里叶级数(DFS)
上式可以看成周期离散信号x(n)的离散傅里叶级数展开。
上式是DFS的反变换,记作IDFS并且称
与
构成一对离散傅里叶级数变换对。
(以上两式中
)
在MTALAB中,DFS通过建立周期延拓函数语句实现:
functionXk=DFS(n,x,N)
ifN>length(x)
n=0:
N-1;
x=[xzeros(1,N-length(x))];
end
k=0:
N-1;
WN=exp(-j*2*pi/N);
nk=n'*k;
WNnk=WN.^nk;
Xk=x*WNnk;
end
建立一个离散非周期方波信号
通过周期延拓后所得的周期序列利用DFS计算实现代码如下:
clearall;closeall;clc;
n=0:
3;
x=ones(1,4);
X=fft(x,1024);
Xk1=DFS(n,x,4);
Xk2=DFS(n,x,8);
figure
(1);
plot((-1023:
2048)/2048*8,[abs(X)abs(X)abs(X)],'--');holdon;
stem(-4:
7,[abs(Xk1)abs(Xk1)abs(Xk1)],'LineWidth',2);grid;
figure
(2);
plot((-1023:
2048)/2048*16,[abs(X)abs(X)abs(X)],'--');holdon;
stem(-8:
15,[abs(Xk2)abs(Xk2)abs(Xk2)],'LineWidth',2);grid;
set(gcf,'color','w');
运行后得到的是分别以4和8为周期延拓后的
频谱:
即第一幅图表示的是周期序列
的频谱,
第二幅图表示的是周期序列
的频谱。
两图中的包络线表示的是通过快速傅里叶变换(FFT)所得到的频谱线。
(二)非周期离散方波信号频域分析
对于非周期离散方波信号,可采用离散时间傅里叶变换DTFT进行分析。
上式为离散时间信号x(n)的离散时间傅里叶变换(DTFT)。
上式为
的离散时间傅里叶反变换(IDTFT)。
由于:
所以序列x(n)绝对可和,意味着DTFT存在,而非稳定序列(比如周期序列)不满足绝对可和条件,所以其DTFT不存在。
在MTALAB中,DTFT可以用以下语句实现:
w=-3*pi:
0.01:
3*pi;
K=length(w);
X=x*exp(-j*n'*w*K);
建立一个离散非周期方波信号
的离散傅里叶变换
利用DTFT计算实现代码如下:
clearall;closeall;clc;
n=0:
7;
x=ones(1,8);
w=-3*pi:
0.01:
3*pi;
X=x*exp(-j*n'*w);
figure
(1);
plot(w/pi,abs(X));grid;
figure
(2);
plot(w/pi,angle(X));grid;
set(gcf,'color','w');
运行后分别得到该离散非周期方波信号的幅频特性与相频特性:
幅频特性
相频特性
(三)两种变换DFS的DTFT的性质
DFS主要具有如下性质:
1.线性性质
2.周期卷积性质
3.复共轭
4.帕斯瓦尔定理
DTFT同连续时间信号傅里叶变换相似,具有如下性质:
1.线性性质
2.时域频域平移性质
3.时间翻转性质
4.共轭对称性质
5.时域频域卷积性质
6.调制性质
7.频域微分性质
8.帕斯瓦尔定理
从DTFT的推导过程,说明DTFT是DFS当
的极限情况。
共同点:
在时域都是离散的,在频域都是以
为周期,周而复始。
不同点:
离散时间周期信号频谱是离散的,具有谐波性,
是谐波复振幅,适用于计算机计算。
而离散时间非周期信号的频谱则是连续的,不具有谐波性,
表示的是谐波密度,是连续变量Ω的函数,所以不便于计算机进行分析计算。
(四)离散傅里叶变换(DFT)
由于DTFT不便于计算机进行计算,所以需要建立一种时域和频域都是离散的傅里叶变换对,这就是离散傅里叶变换(DFT)
上式为离散时间非周期信号的离散傅里叶变换(DFT)
上式为DFT的反变换,记作IDFT。
和
称为离散傅里叶变换(DFT)对。
在MTALAB中,DFT通过建立函数实现:
functionXk=DFT(n,x,N)
ifN>length(x)
n=0:
N-1;
x=[xzeros(1,N-length(x))];
end
k=0:
N-1;
WN=exp(-j*2*pi/N);
nk=n'*k;
WNnk=WN.^nk;
Xk=x*WNnk;
End
建立一个离散非周期方波信号
的离散傅里叶变换
利用DFT计算实现代码如下:
clearall;closeall;clc;
n=0:
7;
x=ones(1,8);
X=fft(x,1024);
Xk2=DFT(n,x,16);
figure
(1);
plot((-1023:
2048)/2048*32,[abs(X)abs(X)abs(X)],'--');holdon;
stem(-16:
31,[abs(Xk2)abs(Xk2)abs(Xk2)],'LineWidth',2);grid;
figure
(2);
plot((-1023:
2048)/2048*32,[angle(X)angle(X)angle(X)],'--');holdon;
stem(-16:
31,[angle(Xk2)angle(Xk2)angle(Xk2)],'LineWidth',2);grid;
set(gcf,'color','w');
运行后分别得到该离散非周期方波信号的幅频特性与相频特性:
幅频特性
相频特性
两图中的包络线表示的是通过快速傅里叶变换(FFT)所得到的频谱线。
离散傅里叶变换是傅里叶变换在时域、频域均离散化的形式,因而与其他傅里叶变换有着相似的性质。
但是它又是从傅里叶级数派生而来的,所以又具有一些与其他傅里叶变换不同的特性,最主要的是圆周位移性质和圆周卷积性质。
一、快速傅里叶变换(FFT)
快速傅里叶变换,简称FFT,是计算DFT的快速算法,习惯上是指以库利和图基算法为基础的一类高效算法。
根据快速傅里叶变换基本思路以及基2FFT算法,在MTALAB中,FFT通过建立函数实现:
functiony=fft(x)
m=nextpow2(x);
N=2^m;
iflength(x)x=[x,zeros(1,N-length(x))];
end
nxd=bin2dec(fliplr(dec2bin([1:
N]-1,m)))+1;
y=x(nxd);
formm=1:
m
Nmr=2^mm;
u=1;
WN=exp(-i*2*pi/Nmr);
forj=1:
Nmr/2
fork=j:
Nmr:
N
kp=k+Nmr/2;
t=y(kp)*u;
y(kp)=y(k)-t;
y(k)=y(k)+t;
end
u=u*WN;
end
end
建立一个离散非周期方波信号
的快速傅里叶变换利用FFT计算实现代码如下:
clearall;closeall;clc;
x=ones(1,8);
fx=fft(x,512);
z=abs(fx);
k=0:
length(z)-1;
plot(k,z);
运行后得到该离散非周期方波信号的幅频特性:
分别利用FFT和DFT进行相同运算:
clearall;closeall;clc;
K=input('K=');
N=2^K;
n=0:
N-1;x=randn(1,2^K);
tic,X=fft(x,N),toc
tic,X=DFT(n,x,N),toc
运行结果如下:
Columns1through4069
Elapsedtimeis0.218536seconds.
Columns1through4069
Elapsedtimeis16.726921seconds.
由此可见,采用DFT计算时间为16.726921秒,而采用FFT计算只需要0.218536秒;说明,FFT在计算速度上,明显优于其他算法。
三、采样定理
(一)时域采样定理
为了验证时域采样定理,可以把原始采样序列每隔D-1点取一个值,形成一个新的序列。
在MATLAB中,通过以下程序实现:
clearall;closeall;clc;
x=ones(1,8);
D=2;
xd=x(1:
D:
length(x));
fx=fft(x,512);
fxd=fft(xd,512);
z=abs(fx);
s=abs(fxd);
k=0:
length(z)-1;
plot(k,s,k,z);
D=2时得到的原始序列与采样序列的幅频特性(蓝色为原始序列,绿色为采样序列)。
D=3时得到的原始序列与采样序列的幅频特性(蓝色为原始序列,绿色为采样序列)。
D=4时得到的原始序列与采样序列的幅频特性(蓝色为原始序列,绿色为采样序列)。
D=0.5时得到的原始序列与采样序列的幅频特性(蓝色为原始序列,绿色为采样序列)。
由此可见,采样周期在D大于2的范围内,出现明显的混叠现象,有失真产生,而在小于1的范围内,采样过于密集,增加运算系统负担。
因此,可验证时域采样定理。
(二)频域采样定理
为了验证频域采样定理,可以把原始采样序列每隔D-1点取一个值,形成一个新的序列。
在MATLAB中,通过以下程序实现:
clearall;closeall;clc;
x=-10:
0.001:
10;
y=(sin(x))/x;
X=fft(y,20);
D=7;
Xd=X(1:
D:
length(X));
fxd=ifft(Xd,20);
s=fxd;
k=0:
length(s)-1;
plot(k,s);
D=7时根据频域样本集合恢复的原信号
D=3时根据频域样本集合恢复的原信号
D=10时根据频域样本集合恢复的原信号
由此可见,采样周期在D小于7的范围内,根据频域样本恢复的原信号与实际原信号有很大差别。
因此,可验证频域采样定理。