matlab信号处理相关函数程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
序列的傅里叶变换及其逆变换定义:
)(|)(|)()(ωϕωωω
j j n n j j e e X e
n x e X ==∑∞-∞=- 1(n)(e )e 2jw jwn x X dw π
ππ-=⎰
其幅度特性为|)(|ωj e X ,在Matlab 中采用abs 函数;相位特性为)(ωϕ,在Matlab 中采用angle 函数。
为了方便,考虑在两个周期,例如[ππ2,2-]中2M+1个均匀频率点上计算FT ,并且观察其周期性和对称性。为此给出function 文件如下,求解FT 变换:
function [X,w]=ft(x,n,k)
%X :序列x(n)的傅里叶变换
%w :X 的自变量
%x :要进行傅里叶变换的序列x(n)
%n :序列x(n)的位置向量
%k :求和区间
w=(pi/abs(max(k)/2))*k;
X=x*(exp(-1i*pi/abs(max(k)/2))).^(n'*k);
使用方法如下:
n=-5:5;%序列区间
x=(-0.9).^n;%序列表达式
k=-200:200;%求和区间
[Xw,w]=ft(x,n,k);%求傅里叶变换
magX=abs(Xw);%求幅度
angX=angle(Xw);%求相位
realX=real(Xw);
imagX=imag(Xw);
subplot(2,2,1)
plot(w/pi,magX)%绘制幅度曲线
grid on
title('幅度曲线')
xlabel('\omega/\pi')
ylabel('幅度')
xmin=0;
xmax=2;
set(gca,'xlim',[xmin,xmax],'ylimmode','auto','zlimmode','auto'); %xmin xmax 为范围 subplot(2,2,2)
plot(w/pi,angX/pi) %绘制相位曲线
grid on
title('相位曲线')
xlabel('\omega/\pi')
ylabel('相位')% angle(X)/pi
xmin=0;
xmax=2;
set(gca,'xlim',[xmin,xmax],'ylimmode','auto','zlimmode','auto'); %xmin xmax 为范围 subplot(2,2,3)
plot(w/pi,realX) %绘制实部曲线
grid on
title('实部曲线')
xlabel('\omega/\pi')
ylabel('实部')
xmin=0;
xmax=2;
set(gca,'xlim',[xmin,xmax],'ylimmode','auto','zlimmode','auto'); %xmin xmax 为范围 subplot(2,2,4)
plot(w/pi,imagX) %绘制虚部曲线
grid on
title('虚部曲线')
xlabel('\omega/\pi')
ylabel('虚部')
xmin=0;
xmax=2;
set(gca,'xlim',[xmin,xmax],'ylimmode','auto','zlimmode','auto'); %xmin xmax 为范围
序列的DFT 及IDFT 定义:
∑∑-=-=-==10102)()()(N n N n nk N j nk N e
n x W n x k X π
21100
11(n)(k)W (k)e N N j nk nk N N k k x X X N N π---====∑∑ 离散傅里叶变换的的性质:
(1)DFT 的共轭对称性。若)()()(n x n x n x op ep +=,[])()(n x DFT k X =,则:)()]([k X n x DFT R ep =, )()]([k jX n x DFT I op =。
(2)实序列DFT 的性质。若)(n x 为实序列,则其离散傅里叶变换)(k X 为共轭对称,即10),()(*-≤≤-=N k k N X k X 。
(3)实偶序列DFT 的性质。若)(n x 为实偶序列,则其离散傅里叶变换)(k X 为实偶对称,即10),()(-≤≤-=N k k N X k X 。
(4)实奇序列DFT 的性质。若)(n x 为实奇序列,则其离散傅里叶变换)(k X 为纯虚奇对称,即10),()(-≤≤--=N k k N X k X 。
离散傅立叶变换函数
function [Xk,k]=dft(xn,N)
n=0:1:N-1;
k=0: N-1;
WN=exp(-1j*2*pi/N);
nk=n'*k;
WNnk=WN.^(nk);
Xk=xn*WNnk; %采用矩阵相乘的方法
magX=abs(Xk);
k=(0:length(magX)-1)*N/length(magX);
离散傅立叶反变换函数
function [xn]=idft(Xk,N)
n=0:1:N-1;
k=0:1:N-1;
WN=exp(-1j*2*pi/N);
nk=n'*k;
WNnk=WN.^(-nk);
xn=(Xk*WNnk)/N;
使用方法如下:
1、序列的傅里叶变换及离散傅里叶变换计算
N=5;
n=0:4;
x=[ones(1,5)]; %产生矩形序列
k=0:999;w=(pi/500)*k;
X=x*(exp(-j*pi/500)).^(n'*k); %计算序列的傅立叶变换
Xe=abs(X);
subplot(3,2,1);stem(n,x);ylabel('x(n)');
subplot(3,2,2);plot(w/pi,Xe);ylabel('|X(ejw)|'); %画出序列的傅立叶变换X=dft(x,N); %进行5点DFT
magX=abs(X);
k=(0:length(magX)'-1)*N/length(magX);
subplot(3,2,3);stem(n,x);ylabel('x(n)');
subplot(3,2,4);stem(k,magX);
axis([0,5,0,5]);ylabel('|X(k)|');
2、序列产生及其DFT
N=20;
n=0:N-1;