热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

MATLAB_数字信号处理_05_离散傅里叶级数及其变换

SYSU_SECE_MATLAB_数字信号处理_05离散傅里叶级数及其变换部分原理:1、周期序列的离散傅里叶级数离散周期序列x(n)~满足x(n)x(nrN)x(

SYSU_SECE_MATLAB_数字信号处理_05


离散傅里叶级数及其变换


在这里插入图片描述
部分原理:

1、周期序列的离散傅里叶级数
离散周期序列x(n)~满足x(n)=x(n+rN)
x(n)~=IDFS[ X(k)~ ] X(k)~=DFS[ x(n)~ ]
周期序列的频谱X(k)~也是一个以N为周期的周期序列
2、由离散时间傅里叶变换的定义:信号在时域上是离散的、非周期的,而在频域上是连续的、周期性的
3、DFT的线性性质:
y(n)=a * x1(n) + b * x2(n) 长度分别为N1和N2
则y(n)的N点DFT为Y(k)=a * X1(k) + b* X2(k) N=max[N1,N2]
4、DFT的循环移位性质:
如果有限长序列x(n)长度为N,将x(n)左移m位,则
有限长序列的移位也称循环移位,原因是将x(n)左移m位时,移出的m位又依次从右端进入主值区
5、DFT的循环折叠性质:
序列x(n)的折叠可以由y=x(mod(-nx,N)+1)得到
在这里插入图片描述

figure(1)
N=7;
x=[1,2,3,4,3,2,1];
xn=[x,x];
n=0:2*N-1;
k=0:2*N-1;
stem(n,xn,'filled');xlabel('n');ylabel('x(n)');title('x(n)序列波形');
%part1:
figure(2)
Xk=xn*exp(-j*2*pi/N).^(n'*k);%离散傅里叶级数变换
stem(k,abs(Xk),'filled');title('幅度谱')%幅度谱
figure(3)
stem(k,abs(Xk),'filled');title('相位谱')%相位谱
%part2
figure(4)
x=(Xk*exp(j*2*pi/N).^(n'*k))/N;%逆变换
stem(n,abs(x),'filled');title('傅里叶级数逆变换')%显示逆变换结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

figure(5)%part1
xn=[1,1,0,0];
N=4;
n=0:N-1;
k=0:N-1;
n_=0:3*N-1;
k_=0:3*N-1;
xn_=[xn,xn,xn];
subplot(2,1,1);stem(n,xn,'filled');title('x(n)');
subplot(2,1,2);stem(n_,xn_,'filled');title('x(n)~');
figure(6)
Xk=xn_*exp(-j*2*pi/N).^(n_'*k_);%离散傅里叶级数变换
subplot(2,1,1);stem(k_,abs(Xk),'filled');title('|X(k)~|');
subplot(2,1,2);stem(k_,angle(Xk),'filled');title('arg[X(k)~]');

在这里插入图片描述
在这里插入图片描述

figure(7)%part1
xn=[7,5,6,4,3,2];
N=length(xn);
n=0:N-1;
k=0:N-1;
Xk=xn*exp(-j*2*pi/N).^(n'*k);%离散傅里叶变换
x=(Xk*exp(j*2*pi/N).^(n'*k));%离散傅里叶逆变换
subplot(2,1,1);stem(k,abs(Xk),'filled');title('|X(k)|');
subplot(2,1,2);stem(k,angle(Xk),'filled');title('arg[X(k)]');
figure(8)%part2
subplot(2,1,1);stem(n,xn,'filled');title('x(n)');
subplot(2,1,2);stem(n,abs(x),'filled');title('arg[X(k)]');

在这里插入图片描述
在这里插入图片描述

figure(9)%part1
xn=[7,6,5,3,4,2];
N=length(xn);
subplot(2,1,1);stem(0:N-1,xn,'filled');title('x(n)主值序列');
n=0:3*N-1;xnt=[xn,xn,xn];
subplot(2,1,2);stem(n,xnt,'filled');title('x(n)周期序列');
figure(10)%part2
k=0:3*N-1;
Xk=xnt*exp(-j*2*pi/N).^(n'*k);%离散傅里叶变换
subplot(2,1,1);stem(k,abs(Xk),'filled');title('|X(k)|');
subplot(2,1,2);stem(k,angle(Xk),'filled');title('arg[X(k)]');

在这里插入图片描述
在这里插入图片描述

figure(11)
xn=[7,6,5,4,3,2];
n=0:length(xn)-1;
stem(n,xn,'filled');title('原信号x(n)');
figure(12)
w=linspace(-2*pi,2*pi,200);%将区间分成200
X=xn*exp(-j*n'*w);
subplot(2,1,1);plot(w,abs(X));title('|X(k)~|');
subplot(2,1,2);plot(w,angle(X));title('arg[X(k)~]');
figure(13)
N=100;
xn_=[7,6,5,4,3,2,zeros(1,N-6)];
n=0:N-1;
k=0:N-1;
Xk=xn_*exp(-j*2*pi/N).^(n'*k);%离散傅里叶变换
subplot(2,1,1);stem(k,abs(Xk),'filled');title('|X(k)|');%幅度谱
subplot(2,1,2);stem(k,angle(Xk),'filled');title('arg[X(k)]');%相位谱

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

figure(14)
xn=[8,7,6,5,4,3,2,1];
Ln=length(xn);
N=10;%循环长度
xn_=[xn,zeros(1,10-Ln)];
n=0:9;
k=0:9;
Xk=xn_*exp(-j*2*pi/N).^(n'*k)%离散傅里叶变换
subplot(3,1,1);stem(n,xn_,'filled');title('x(n) N=10');
subplot(3,1,2);stem(k,real(Xk),'filled');title('real(X(k))');
subplot(3,1,3);stem(n,imag(Xk),'filled');title('imag(X(k))');
figure(15)
yn_=xn_(mod(-n,10)+1);
subplot(3,1,1);stem(n,yn_,'filled');title('时域折叠后的函数');
Yk=yn_*exp(-j*2*pi/N).^(n'*k)%离散傅里叶变换
subplot(3,1,2);stem(k,real(Yk),'filled');title('时域折叠后对应的DFT real(Y(k))');
subplot(3,1,3);stem(k,imag(Yk),'filled');title('时域折叠后对应的DFT imag(Y(k))');
disp('得证:在时域折叠后的函数,其对应的DFT在频域也循环折叠,并取X(k)的共轭')

在这里插入图片描述
上述题目基本全部改编/出自自西安电子科技大学出版社出版的《数字信号处理实验(MATLAB版)》,可以在其中找到原理部分,我们理论课使用的教材也是西电的:《数字信号处理》(第四版)高西全 丁玉美


声明:不保证代码的正确性,只是提供一种思路……


推荐阅读
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 本文介绍了如何使用JQuery实现省市二级联动和表单验证。首先,通过change事件监听用户选择的省份,并动态加载对应的城市列表。其次,详细讲解了使用Validation插件进行表单验证的方法,包括内置规则、自定义规则及实时验证功能。 ... [详细]
  • 毕业设计:基于机器学习与深度学习的垃圾邮件(短信)分类算法实现
    本文详细介绍了如何使用机器学习和深度学习技术对垃圾邮件和短信进行分类。内容涵盖从数据集介绍、预处理、特征提取到模型训练与评估的完整流程,并提供了具体的代码示例和实验结果。 ... [详细]
  • 本文详细介绍如何在VSCode中配置自定义代码片段,使其具备与IDEA相似的代码生成快捷键功能。通过具体的Java和HTML代码片段示例,展示配置步骤及效果。 ... [详细]
  • 本文介绍了如何使用 Python 的 Bokeh 库在图表上绘制菱形标记。Bokeh 是一个强大的交互式数据可视化工具,支持丰富的图形自定义选项。 ... [详细]
  • 本题要求将由小写字母组成的字符串划分为多个片段,确保每个字母只出现在一个片段中。目标是生成尽可能多的片段,并返回每个片段的长度列表。本文将详细解释问题描述、解题思路及代码实现。 ... [详细]
  • 本文介绍如何调整Element UI组件的边框样式,以确保内容与边框之间有足够的间距,并展示如何通过CSS实现更好的布局效果。 ... [详细]
  • 本文将介绍网易NEC CSS框架的规范及其在实际项目中的应用。通过详细解析其分类和命名规则,探讨如何编写高效、可维护的CSS代码,并分享一些实用的学习心得。 ... [详细]
  • Unity编辑器插件:NGUI资源引用检测工具
    本文介绍了一款基于NGUI的资源引用检测工具,该工具能够帮助开发者快速查找和管理项目中的资源引用。其功能涵盖Atlas/Sprite、字库、UITexture及组件的引用检测,并提供了替换和修复功能。文末提供源码下载链接。 ... [详细]
  • 本文将深入探讨如何在不依赖第三方库的情况下,使用 React 处理表单输入和验证。我们将介绍一种高效且灵活的方法,涵盖表单提交、输入验证及错误处理等关键功能。 ... [详细]
  • 探讨如何从数据库中按分组获取最大N条记录的方法,并分享新年祝福。本文提供多种解决方案,适用于不同数据库系统,如MySQL、Oracle等。 ... [详细]
  • 本文介绍了如何使用 Python 的 Matplotlib 和 Pandas 库进行数据可视化。通过示例代码展示了折线图、柱状图和水平柱状图的创建方法,并解释了图表参数设置的具体细节。 ... [详细]
  • 利用生成对抗网络生成多标签离散电子健康记录
    本文探讨了通过生成对抗网络(GAN)生成合成电子健康记录(EHR)的方法,旨在解决隐私保护问题并促进医学研究。论文地址为:https://arxiv.org/abs/1703.06490v1。该方法通过生成高维离散变量的综合EHR数据,显著提升了医学研究中的数据可用性和安全性。 ... [详细]
  • 本文探讨了如何在iOS开发环境中,特别是在Xcode 6.1中,设置和应用自定义文本样式。我们将详细介绍实现方法,并提供一些实用的技巧。 ... [详细]
  • Kubernetes 持久化存储与数据卷详解
    本文深入探讨 Kubernetes 中持久化存储的使用场景、PV/PVC/StorageClass 的基本操作及其实现原理,旨在帮助读者理解如何高效管理容器化应用的数据持久化需求。 ... [详细]
author-avatar
手机用户2502895475
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有