基2FFT算法matlab程序编写,频率抽取(DIF)基2FFT算法的MATLAB实现

频率抽取(DIF)基2FFT算法和时间抽取(DIT)基2FFT算法是两种等价的FFT算法,其相同之处:

(1)DIF与DIT两种算法均为原位运算。

(2)DIF与DIT运算量相同。

不同之处:

(1)DIF的算法结构是将DIT算法结构倒过来。

· DIF为输入顺序,输出乱序。运算完毕再运行“二进制倒读”程序。

· DIT为输入乱序,输出顺序。先运行“二进制倒读”程序,再进行求DFT。

(2)DIF与DIT根本区别:在于蝶形结不同。

· DIT的复数相乘出现在减法之前。

· DIF的复数相乘出现在减法之后。

下图[REF1]是在N=8时,频率抽取(DIT)基2FFT算法的流图。

最后给出MATLAB实现的代码:

function [Xk]=DIF_FFT_2(xn,N);

%蝶形运算开始

M=log2(N);%“级”的数量

for m=0:M-1 %“级”循环开始

Num_of_Group=2^m;%每一级中组的个数

Interval_of_Group=N/2^m;%每一级中组与组之间的间距

Interval_of_Unit=N/2^(m+1);%每一组中相关运算单元之间的间距

Cycle_Count=N/2^(m+1)-1;%每一组内的循环次数

Wn=exp(-j*2*pi/Interval_of_Group);%旋转因子

for g=1:Num_of_Group %“组”循环开始

Interval_1=(g-1)*Interval_of_Group;%第g组中蝶形运算变量1的偏移量

Interval_2=(g-1)*Interval_of_Group+Interval_of_Unit;%第g组中蝶形运算变量2的偏移量

for r=0:Cycle_Count;%“组内”循环开始

k=r+1;%“组内”序列的下标

xn(k+Interval_1)=xn(k+Interval_1)+xn(k+Interval_2);%第m级,第g组的蝶形运算式1

xn(k+Interval_2)=[xn(k+Interval_1)-xn(k+Interval_2)-xn(k+Interval_2)]*Wn^r;%第m级,第g组的蝶形运算式2,注:1和2为同址运算

end

end

end

%序列排序开始

n1=fliplr(dec2bin([0:N-1]));%码位倒置步骤1:将码位转换为二进制,再进行倒序

n2=[bin2dec(n1)];%码位倒置步骤2:将码位转换为十进制后翻转

for i=1:N

Xk(i)=xn(n2(i)+1);%根据码位倒置的结果,将xn重新排序,存入Xk中

end

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/334368.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux 命令之 localectl -- 控制系统的本地化与键盘布局

文章目录命令介绍常用选项参考示例(一)显示当前的本地化设置与键盘映射(二)设置系统的本地化字符集环境变量(三)列出本地所有字符集(四)列出所有可用的控制台键盘映射(五…

Linux 命令之 locale -- 设置和显示程序运行的语言环境

文章目录命令介绍locale 设置规则使用详解(一)查看当前 locale 设置(二)查看当前系统所有可用 locale(三)设置系统的 locale命令介绍 locale 是 Linux 系统中多语言环境的设置接口,在 Linux 中…

python range函数范围_Python range函数

Python range函数教程 range函数详解 语法 range(start, stop[, step]) 参数 参数 描述 start 计数从 start 开始。默认是从 0 开始。 stop 计数到 stop 结束,但不包括 stop。 step 步长,默认为1,可以支持负数。 返回值 返回生成的序列。 案例…

php sapi globals,PhP 常见安装错误

ext/iconv/.libs/iconv.o: In function php_iconv_stream_filter_ctor’:/home/king/php-5.2.13/ext/iconv/iconv.c:2491: undefined reference to libiconv_open’collect2: ld returned 1 exit statusmake: *** [sapi/cli/php] Error 1[roottest php-5.2.13]# vi Makefile在安…

openpyxl删除添加excel列_Python | 如何使用Python操作Excel(二)

0 前言在阅读本文之前,请确保您已满足或可能满足一下条件:请确保您具备基本的Python编程能力。请确保您会使用Excel。请确保您的电脑已经安装好Python且pip可用。请确保您已经读过前文:如何使用Python操作Excel(一)LogicPanda,公众…

Linux 命令之 timedatectl -- 查看系统当前时区设置

timedatectl命令用于查看当前时区设置。 # 查看当前时区设置 $ timedatectl# 显示所有可用的时区 $ timedatectl list-timezones # 设置当前时区 $ sudo timedatectl set-timezone Americ…

payara 创建 集群_使用Payara Micro的Easy Java EE Microservices

payara 创建 集群想知道如何开始使用Java EE Microservices? 使用Java EE API部署微服务只需要几个快速步骤。 许多人认为Java EE对于与微服务一起使用而言过于繁重,但事实并非如此……尤其是如果您仅利用服务所需的Java EE规范。 在这篇简短的文章中&am…

php导出页面居中设置,PHPExcel导出插入图片和居中问题

首先到网上先下载PHPExcel下载后解压得到这两个文件下载后引用该文件最后编写相关代码:首先是图片插入导出$objDrawing new PHPExcel_Worksheet_Drawing();$objDrawing->setName(‘Photo‘);$objDrawing->setDescription(‘Photo‘);$objDrawing->setPath…

Linux 命令之 loginctl -- 查看系统当前登录的用户

# 列出当前session $ loginctl list-sessions# 列出当前登录用户 $ loginctl list-users# 列出显示指定用户的信息 $ loginctl show-user ruanyf

两台电脑通过usb共享网络_怎样让电脑通过手机共享上网?

手头有部七年前买的安卓智能手机已经不用了,卖掉不值钱,放在家里也是浪费。能否让它继续发挥余热呢?最近找到了一个好办法,就是可以让个人电脑通过它来上网(如下图所示):1. 用数据线将电脑与手机…

有效期判断功能 java_有效的Java第三版有哪些新功能?

有效期判断功能 java自从听说即将出版的有效Java 第三版以来,我一直想知道其中有什么新内容。 我假设将涵盖自Java 6以来引入Java的功能,的确如此。 但是,第三版Java开发人员经典版也有一些其他更改。 在本文中,我提供了有关在第三…

Linux 命令之 touch -- 创建文件

文章目录命令介绍常用选项命令示例(一)创建空文件(二)批量创建文件(三)修改文件的访问时间命令介绍 touch 命令有两个功能:一是用于把已存在文件的时间戳更新为系统当前的时间(默认…

linux redis客户端_你见过能把Redis的主从复制讲这么明白的吗?

概念1.Conception(概念)Redis的复制也就是我们所说的主从复制,主机数据更新后根据配置和策略,自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主。2.Function(功能)读写分离(秉持与RDBMS 相同的设计理念)容灾恢复R…

lombok 简化代码_如何编写更少,更好的代码,或Project Lombok

lombok 简化代码我长期以来一直打算写有关Lombok的文章 ,以至于每当一个自重的Java开发人员都已经听说过它时,我可能会写它。 尽管如此,值得一提的是,如果只是提醒自己,不要犹豫,尝试性能增强工具并查看它们…

discuz3.1用哪个版本php版本好,Discuz应用中心安装模板提示版本号不匹配适用于X3.3 X3.2 X3.1的解决方法...

有时候我们从应用中心安装模板,在应用中心里模板作者设定允许我们的程序版本,但是我们安装时却提示版本号不匹配,那这是为什么呢?经过我们分析发现是因为X3和X3.1,X3.2的模板是完全兼容的,很多模板是在X3的…

Linux 系统服务管理器(初始化系统/init system) -- systemd 及命令 systemctl 的详细介绍

文章目录一、系统服务管理器 systemd(一)systemd 的特性(二)systemd 与 传统 init 系统的区别(三)systemd 的目录和文件(四)systemd 的 Unit 介绍1.Unit 类型2.Unit 的配置文件&…

arch linux arm下载_arm开发板运行hello word的详细过程

arm开发板运行helloword1.uboot的编译​ 这里已经安装好了交叉编译工具链,如果自己的电脑下没有,请自行百度安装。将下载好uboot到linux下,进行解压-->打补丁-->编译-->烧写,执行以下命令完成上述四个步骤(不…

关于通信matlab 仿真,关于MATLAB在通信仿真系统中的运用

关于 MATLAB在通信仿真系统中的运用 卢 钊 贵 广 东南方 电信规 划 咨询 设 计院 有 限公 司 广 东 揭 阳 522031 【摘 要 】本文采用MATLAB软件 ,采集一些图像对其进行图像增 强处理以及MATLAB提供的可视化 SiinuIi nk建立 了扩频通信 系统仿真模 型 ,并…

化学专业尽早转行_尽早查看针对Java 11的功能

化学专业尽早转行随着JDK 10即将进入其候选发布阶段 ,通过JDK 11观察一下之后将会发生什么是很有趣的。 在撰写本文时,四个JEP ( JDK增强建议 )已正式成为JDK 11的目标(可能会出现)。 这篇文章总结了一些当…

系统服务管理与控制程序(Init System/初始化系统)-- Systemd 的 Unit 配置文件详解

文章目录一、Service 的配置文件(一)[Unit] 区块(二)[Service] 区块1.启动命令2.启动类型3.重启行为(三)[Install] 区块二、Target 的配置文件三、重载配置文件和重启服务一、Service 的配置文件 一个服务…