上一篇:关于MATLAB实现的数字信号处理(一)

下一篇:关于MATLAB实现的数字信号处理(三)

文章目录

  • 上一篇:关于MATLAB实现的数字信号处理(一)
  • 下一篇:关于MATLAB实现的数字信号处理(三)
  • 离散时间傅里叶变换的性质
    • 1.离散时间傅里叶变换的卷积性质
    • 2.离散时间傅里叶变换的时间反转性质
    • 3.离散傅里叶变换和离散傅里叶逆变换的计算

离散时间傅里叶变换的性质

1.离散时间傅里叶变换的卷积性质

e−jw0ng[n]⟶DTFTG(ej(w−w0))e^{-j w_{0} n} g[n] \stackrel{\mathrm{DTFT}}{\longrightarrow} G\left(e^{j\left(w-w_{0}\right)}\right) e−jw0​ng[n]⟶DTFT​G(ej(w−w0​))

调用卷积函数conv()和先对两个序列做离散时间傅里叶变换,再做乘积相比较

实现代码

% DTFT的卷积
clf;
w = -pi:2*pi/255:pi;
x1 = [1 3 5 7 9 11 13 15 17];
x2 = [1 -2 3 -2 1];
y = conv(x1,x2);%卷积
h1 = freqz(x1, 1, w);%求h1的离散傅里叶变换
h2 = freqz(x2, 1, w);%求h2的离散傅里叶变换
hp = h1.*h2;%h1与h2相乘
h3 = freqz(y,1,w);%求卷积的离散傅里叶变换
%画出幅度谱的乘积
subplot(2,2,1)
plot(w/pi,abs(hp));grid
title('幅度谱的乘积')
%画出卷积后序列的幅度谱
subplot(2,2,2)
plot(w/pi,abs(h3));grid
title('卷积后序列的幅度谱')
%画出相位谱的和
subplot(2,2,3)
plot(w/pi,angle(hp));grid
title('相位谱的和')
%画出卷积后序列的相位谱
subplot(2,2,4)
plot(w/pi,angle(h3));grid
title('卷积后序列的相位谱')

运行结果

2.离散时间傅里叶变换的时间反转性质

g[−n]⟶DTFTG(e−jw)g[-n] \stackrel{\mathrm{DTFT}}{\longrightarrow} G\left(e^{-j w}\right) g[−n]⟶DTFT​G(e−jw)

实现代码

% 离散傅里叶变换的时间反转性质
clf;
w = -pi:2*pi/255:pi;
num = [1 2 3 4];%系统函数的分子多项式的系数
L = length(num)-1;%分母多项式系数矩阵的长度
h1 = freqz(num, 1, w);%求h1的离散时间傅里叶变换
h2 = freqz(fliplr(num), 1, w);%求对h1进行反转后的离散时间傅里叶变换
h3 = exp(w*L*i).*h2;%对h2进行频移
%画出原序列的幅度谱
subplot(2,2,1)
plot(w/pi,abs(h1));grid
xlabel('\omega/\pi');
ylabel('振幅');
title('原序列的幅度谱')
%画出时间反转后的幅度谱
subplot(2,2,2)
plot(w/pi,abs(h2));grid
xlabel('\omega/\pi');
ylabel('振幅');
title('时间反转后的幅度谱')
%画出原始序列的相位谱
subplot(2,2,3)
plot(w/pi,angle(h1));grid
xlabel('\omega/\pi');
ylabel('相位');
title('原始序列的相位谱')
%画出时间反转后的相位谱
subplot(2,2,4)
plot(w/pi,angle(h3));grid
xlabel('\omega/\pi');
ylabel('相位');
title('时间反转后的相位谱')

运行结果

3.离散傅里叶变换和离散傅里叶逆变换的计算

1.写一个MATLAB程序,计算并画出长度为N的L点离散博里叶变换X[k]的值,其中L>=N,然后计算并画出L点离散傅里叶逆变换X[k]。对不同长度N和不同的离散傅里叶变换长度L,运行程序。

%DFT
%原始序列是x=[1 2 3...],
%其长度由N决定
clf;
N=10;L=20;
% w1代表频率点
wl=-pi:2*pi/L:pi;
n=1:L;
for i=1:Lw(i)=wl(i);
end
for i=1:Nx(i)=i;
end
xx=[x zeros(1,L-N)];
y=fft(xx,L);
xk=ifft(y,L);
subplot(3,1,1)
plot(w/pi,abs(y));
grid
xlabel('\omega/\pi');
ylabel('振幅');
title('幅度谱');
subplot(3,1,2)
plot(w/pi,angle(y));
grid
xlabel('\omega/\pi');
ylabel('以弧度为单位的相位');
title('相位谱');
subplot(3,1,3)
stem(n,xk);grid
xlabel('n');
ylabel('振幅');
title('原始序列')

实验结果

N=10 L=20

N=10 L=10

2.用一个N点复数离散傅里叶变换计算两个长度为N的实数序列的N点离散傅里叶变换,并将结果同直接使用两个N点离散傅里叶变换得到的结果进行比较。

若g[n]和h[n]表示两个长度为N的实序列,G[k]和H[k]分别表示它们各自的N点离散傅里叶变换。定义x[n]= g[n]+ji[n],那么x[n]为长度为N的复数序列,它的N点离散傅里叶变换X[k],我们可以通过下式有效地计算G[k]和H[k]:
G[k]=12(X[k]+X∗[(−k)N])H[k]=12j(X[k]−X∗[(−k)N])\begin{aligned} G[k] &=\frac{1}{2}\left(X[k]+X^{*}\left[(-k)_{N}\right]\right) \\ H[k] &=\frac{1}{2 j}\left(X[k]-X^{*}\left[(-k)_{N}\right]\right) \end{aligned} G[k]H[k]​=21​(X[k]+X∗[(−k)N​])=2j1​(X[k]−X∗[(−k)N​])​
实现代码

%用一个N点复数离散傅里叶变换
%计算两个长度为N的实数序列的N点离散傅里叶变换,
%并将结果同直接使用两个N点离散傅里叶变换得到的结果进行比较。
clf;
g=[1 2 3 4 5 6 7 8 9 10];
h=[11 12 13 14 15 16 17 18 19 20];
N1=20;N2=10;
% w1代表频率点1
% w2代表频率点2
w1=-pi:2*pi/(N1-1):pi;
w2=-pi:2*pi/(N2-1):pi;
x=g+1i*h;     %表示出x[n]
x1=g-1i*h;    %表示出x[n]的共轭
xk=fft(x,N2);  %计算x[n]的离散傅里叶变换
x1k=fft(x1,N2);%计算x[n]共轭的离散傅里叶变换
%根据公式有效地计算g[n]和h[n]的离散傅里叶变换
gk=1/2*(xk+x1k);
hk=1/(2*1i)*(xk-x1k);
%根据fft函数分别计算g[n]和h[n]的离散傅里叶变换
gk1=fft(g,N2);
hk1=fft(h,N2);
%画出G[k]的幅频响应
subplot(4,2,1)
stem(abs(gk));
axis([0,10,0,70]);
grid
xlabel('\omega/\pi');
ylabel('振幅');
title('G[k]的幅度谱')
%画出G[k]的相频响应
subplot(4,2,2)
stem(angle(gk));
axis([0,10,-4,4]);
grid
xlabel('\omega/\pi');
ylabel('以弧度为单位的相位');
title('G[k]相位谱')
%画出H[k]的幅频响应
subplot(4,2,3)
stem(abs(hk));
axis([0,10,0,200]);
grid
xlabel('\omega/\pi');
ylabel('振幅');
title('H[k]的幅度谱')
%画出H[k]的相频响应
subplot(4,2,4)
stem(angle(hk));
axis([0,10,-4,4]);
grid
xlabel('\omega/\pi');
ylabel('以弧度为单位的相位');
title('H[k]相位谱')
%画出G1[k]的幅频响应
subplot(4,2,5)
stem(abs(gk1));
axis([0,10,0,70]);
grid
xlabel('\omega/\pi');
ylabel('振幅');
title('G1[k]的幅度谱')
%画出G1[k]的相频响应
subplot(4,2,6)
stem(angle(gk1));
axis([0,10,-4,4]);
grid
xlabel('\omega/\pi');
ylabel('以弧度为单位的相位');
title('G1[k]相位谱')
%画出H1[k]的幅频响应
subplot(4,2,7)
stem(abs(hk1));
axis([0,10,0,200]);
grid
xlabel('\omega/\pi');
ylabel('振幅');
title('H1[k]的幅度谱')
%画出H1[k]的相频响应
subplot(4,2,8)
stem(angle(hk1));
axis([0,10,-4,4]);
grid
xlabel('\omega/\pi');
ylabel('以弧度为单位的相位');
title('H1[k]相位谱')

运行结果

3.用两个N点离散傅里叶变换计算一个长度为2N的实数序列的2N点离散傅里叶变换,并将结果同直接使用一个2N点离散傳里叶变换得到的结果进行比较

设v[n]是长度为2N的实序列,V[n]表示它的2N点离散傅里叶变换。将长度为N的两个实序列g[n]和h[n]分别定义为
g[n]=v[2n]and h[n]=v[2n+1],0⩽n<Ng[n]=v[2 n] \text { and } h[n]=v[2 n+1], \quad 0 \leqslant n<N g[n]=v[2n] and h[n]=v[2n+1],0⩽n<N
并且G[k]和H[k]表示它们的N点离散傅里叶变换,则v[n]的2N点离散傅里叶变换V[k],可以自两个N点离散傅里叶变换G[A]和H[k]计算得到,即
V[k]=G[(k)N]+W2NkH[(k)N],0⩽k⩽2N−1V[k]=G\left[(k)_{N}\right]+W_{2 N}^{k} H\left[(k)_{N}\right], \quad 0 \leqslant k \leqslant 2 N-1 V[k]=G[(k)N​]+W2Nk​H[(k)N​],0⩽k⩽2N−1
实现代码

设定原序列为x=cos(n*pi/6)

N=6; %给定N的值
n=0:2*N-1; %设定n的范围
x=cos(pi/6.*n); %给定序列x[n]
m=0:N-1; %设定m的范围
x1=cos(pi/6.*(2*m)); %取n为偶数时x[n]的值组成序列x1[n]
x2=cos(pi/6.*(2*m+1)); %取n为奇数时x[n]的值组成序列x2[n] figure,
subplot(3,1,1)%指定位置1,绘制序列x[n]
stem(n,x);
xlabel('n'); %设定序列x[n]的横轴标注和纵轴标注
ylabel('x');
title('原序列x[n]')
subplot(3,1,2)%指定位置2,绘制序列x1[n]
stem(m,x1);
xlabel('m'); %设定序列x1[n]的横轴标注和纵轴标注
ylabel('x1');
title('取n为偶数时x[n]的值组成序列x1[n]')
subplot(3,1,3)%指定位置3,绘制序列x2[n]
stem(m,x2);
xlabel('m'); %设定序列x2[n]的横轴标注和纵轴标注
ylabel('x2');
title('取n为奇数时x[n]的值组成序列x2[n]')k1=0:N-1; %设定k1的范围
k2=0:N-1; %设定k2的范围
X1=fft(x1); %求序列x1[n]的离散傅里叶变换
X2=fft(x2); %求序列x2[n]的离散傅里叶变换figure,
subplot(2,1,1)%指定位置1,绘制X1(k)
stem(k1,real(X1));
xlabel('k1'); %设定X1(k)的横轴标注和纵轴标注
ylabel('X1');
title('序列x1[n]的离散傅里叶变换X1(k)')
subplot(2,1,2) %指定位置2,绘制X2(k)
stem(k2,real(X2));
xlabel('k2'); %设定X2(k)的横轴标注和纵轴标注
ylabel('X2');
title('序列x2[n]的离散傅里叶变换X2(k)')W=exp(-1i*pi/N).^k2; %给定W的值
Y=X1+X2.*W; %给定Y
X=fft(x);   %求序列x[n]的离散傅里叶变换
k=0:2*N-1;  %设定k的范围 figure,
subplot(2,1,1) %指定位置1,绘制X(k)
stem(k,real(X));
xlabel('k'); %设定X(k)的横轴标注和纵轴标注
ylabel('X');
title('2N点离散傅里叶变换结果')
subplot(2,1,2)%指定位置2,绘制Y(k)
stem(k1,real(Y));
xlabel('k1'); %设定Y(k)的横轴标注和纵轴标注
ylabel('Y');
title('由两个N点离散傅里叶变换得到的结果')

运行结果

图一 序列x[n],x1[n],x2[n]

图二 序列x1[n]和x2[n]的离散傅里叶变换X1(k)和X2(k)

图三 两种傅里叶变换结果比较

关于MATLAB实现的数字信号处理(二)相关推荐

  1. MATLAB图像处理与数字信号处理资料分享来袭

    小天从大学开始接触数学建模,便开启资料收集功能.经过近几年的积累和沉淀,再加上对数学建模领域的深入研究,收集整理了丰富的数学建模资料,内容涵盖"MATLAB图像处理"," ...

  2. MATLAB中常见数字信号处理相关函数汇总

    MATLAB中常见数字信号处理相关函数汇总 现将MATLAB信号处理工具箱函数进行分组,便于记忆查询和长期回顾. Waveform Generation(波形产生) chairp: 产生扫频余弦函数: ...

  3. MATLAB与FPGA数字信号处理(数字滤波器设计)、数字IC、无线通信、图像处理、信道编码系列

    FPCA.数字IC笔试题系列 不容错过的FPGA/数字IC秋招笔试面试汇总帖(2022届) 1. FPGA.数字IC系列(1)--乐鑫科技2021数字IC提前批笔试 2. FPGA.数字IC系列(2) ...

  4. matlab pburg,现代数字信号处理——AR模型

    1. AR模型概念观 AR模型是一种线性预测,即已知N个数据,可由模型推出第N点前面或后面的数据(设推出P点),所以其本质类似于插值,其目的都是为了增加有效数据,只是AR模型是由N点递推,而插值是由两 ...

  5. matlab 数字信号波形图,数字信号处理第三次实验代码及波形图

    数字信号处理第三次实验 一.实验目的: 1.掌握离散时间系统的DFT 的MATLAB 实现: 2.熟悉DTFT 和DFT 之间的关系. 3.了解信号不同变形的DFT 与原信号DFT 之间的关系 二.实 ...

  6. 数字信号处理matlab实验报告,数字信号处理,matlab实验报告

    数字信号处理,matlab实验报告 Matlab实验报告 实验一: 1. 实验Matlab代码: N=25; Q=0.9+0.3*j; WN=exp(-2*j*pi/N); x=zeros(25,1) ...

  7. matlab wc wp,数字信号处理MATLAB习题.PDF

    数字信号处理MATLAB习题 数字信号处理MATLAB 习题 电气硕 72 李弘昌 第11 题 分别用脉冲响应不变法和双线性变换法设计一个巴特沃斯型IIR 低通数字滤波器,采样 频率 ,其通带边频 处 ...

  8. matlab如何进行数字信号处理,数字信号处理基础及MATLAB实现(第2版)

    [内容简介] 本书系统地介绍了数字信号处理基本理论.设计方法和实现等方面的内容.全书共分9章,第1章介绍数字信号处理的研究对象.学科概貌.系统基本组成.特点.发展及应用等内容:第2章介绍离散时间信号与 ...

  9. 数字信号处理实验matlab版答案,数字信号处理习题答案及matlab实验详解.pdf

    数字信号处理习题答案及matlab实验详解.pdf 第一章 参考答案: 1 (1)2 2 14 ,有理数,所以周期为 14 0 3  3 7 2 2 (2 ) 12 ,无理数,非周期  ...

最新文章

  1. 对计算机网络设备的认识,计算机入门知识:你有必要认识的网络设备及工具
  2. 再见 iTunes!苹果macOS Catalina 10.15正式版更新
  3. Errors reported here must be corrected before the service can be started.
  4. 字符串format函数使用
  5. ajax提交不能获取数据,django无法收到ajax的请求数据
  6. JavaWeb项目开发流程
  7. 小米笔记本pro 双硬盘双系统 opencore引导安装黑苹果
  8. Android入门,android基础开发
  9. 数理统计复习笔记七——列联表的独立性检验
  10. 电脑录音效果不佳的问题解决
  11. 知其然而不知其所以然
  12. SpringBoot开源文档型知识库系统,源代码分享
  13. C语言编译能否被七整除,求c语言高手输出1000以内既能被5整除又能被7整除
  14. NR PUSCH(七) 相干传输
  15. 深圳市租房提取住房公积金攻略
  16. 创业必须的一些网站和博客导航
  17. 【Linux】进程概念 —— 虚拟内存地址空间
  18. 大疆无人机DJI Mobile SDK入门(一)
  19. 大学四年,小白一路走来,分享一波我是如何学习、提高自己的算法
  20. 递归,递推,迭代的区别

热门文章

  1. 错误代码:1120当前Hsql数据库已被另一线程锁定
  2. idea 高级调试技巧
  3. MyBatis 处理长字段(long varchar)
  4. jstl错误:According to TLD or attribute directive in tag file, attribute value does not accept any expr
  5. JAVA设计模式Design Pattern→单例模式Singleton Pattern、工厂模式Factory Pattern、代理模式Proxy Pattern
  6. io 错误: socket closed_Tomcat NIO(9)IO线程Overall流程和关键类
  7. jquery的DOM节点操作(替换元素节点)
  8. android jni java call c字符串乱码,JNI系列入门之C语言中文字符串乱码问题
  9. 1021个位数字统计
  10. 计算机网络—TCP协议