上课和平时实验是用的FFT都是matlab自带的,最近需要在一个嵌入式处理器中对采集的信号进行FFT实时处理,所以想先在matlab中自己写一个fft,然后在底层去实现fft算法。

下面是matlab的代码(使用函数进行了封装):

function [ ret_val ] = FFT1024( vector )
%UNTITLED8 此处显示有关此函数的摘要
%   此处显示详细说明
%UNTITLED7 此处显示有关此函数的摘要
%   此处显示详细说明
%======================================
%ret_val 为fft变换后返回的频域序列
%N 为点数
%vector 为变换前的序列
%======================================
vector_size = size(vector);
N = vector_size(2);
c = zeros(1,N);
%
%变址运算
%
j1 = 0;
for i = 1 : Nif i < j1 + 1tmp = vector(j1 + 1);vector(j1 + 1) = vector(i);vector(i) =tmp;endk = N / 2;while k <= j1j1 = j1 - k;k = k / 2;endj1 = j1 + k;
end%
%蝶形运算
%
%%%%%%%计算 N 的
dig = 0;
k = N;
while k > 1dig = dig + 1;k = k / 2;
end
%%%%%%
% m 为级; dist 为蝶形运两点的距离; n 为蝶形运算组数
%
n = N / 2;
for m = 1 : digdist = 2 ^ (m - 1);idx = 1;for i = 1 : nidx1 = idx;for j1 = 1 : N / (2 * n)r = (idx - 1) * 2 ^ (dig - m);coef = exp(j * (-2 * pi * r / N));tmp                 = vector(idx);vector(idx)         = tmp + vector(idx + dist) * coef;vector(idx + dist)  = tmp - vector(idx + dist) * coef; idx = idx + 1;endidx = idx1 + 2 * dist;endn = n / 2;
endret_val = vector;
end

测试代码:

clc;
clear;
AD_fre = 1023     %修改采样频率和采样点数,采样时间没有修改,通过修改改值可以观察周期截取对信号频谱的影响
Adc=2; %直流分量幅度
A1=3;   %频率F1信号的幅度
A2=1.5; %频率F2信号的幅度
F1=50; %信号1频率(Hz)
F2=75; %信号2频率(Hz)
Fs=AD_fre; %采样频率(Hz)
P1=0; %信号1相位(度)
P2=0; %信号相位(度)
N=AD_fre; %采样点数
t=[0:1/Fs:N/Fs]; %采样时刻%信号
vector=Adc+A1*cos(2*pi*F1*t+pi*P1/180)+A2*cos(2*pi*F2*t+pi*P2/180);
%显示原始信号
figure(1)
plot(vector);
title('原始信号');
Y = FFT1024(vector); %做FFT变换
Ayy = (abs(Y)); %取模
Ayy=Ayy/(N/2);   %换算成实际的幅度
Ayy(1)=Ayy(1)/2;
F=([1:N]-1)*Fs/N; %换算成实际的频率值,Fn=(n-1)*Fs/N
figure(2)
stem(F(1:N/2),Ayy(1:N/2));   %显示换算后的FFT模值结果
title('幅度-频率曲线图');
%
% Pyy=[1:N/2];
% for i=1:N/2
% Pyy(i)=angle(Y(i)); %计算相位
% Pyy(i)=Pyy(i)*180/pi; %换算为角度
% end;
% subplot(414);stem(F(1:N/2),Pyy(1:N/2));   %显示相位图
% title('相位-频率曲线图');

自己实现FFT--matlab版本相关推荐

  1. matlab版本之间的单双引号问题

    matlab版本之间的单双引号问题 问题描述 运行matlab文件的时候出现错误提示 Creating a string using double quotes is not supported. U ...

  2. Windows下Faster R-CNN 配置/Matlab版本编译

    配置环境: Windows10x64 Matlab2015Ra VS2013 Opencv2.4.11 CUDA7.5 GTX950M CUDA7.5安装 因为Cuda7.5做了很大的优化改进,而且对 ...

  3. 【caffe-MATLAB】自己编译faster-rcnn的MATLAB版本

    今天在自己的电脑上编译MATLAB版本的faster-RCNN代码,将过程在这作一记录. 1.我的环境:Windows10 ,VS2013 , MATLAB2017a ,CUDA7.5 首先下载作者的 ...

  4. 机器学习快速截图工具matlab版本——文件夹批量处理(原创)

    简要说明: 1.打开文件夹后,遍历所有JPG格式图片,在同目录下新建一个CROP的文件夹存放裁剪的图片. 2.对每张图片, (1)初步框选你要裁剪的矩形框,会自动以你框选的左上点为起点,裁剪大小为长宽 ...

  5. Faster R-CNN的安装及测试(Python版本和Matlab版本)

    rbg的Python版本 一.拉取源码 git clone --recursive https://github.com/rbgirshick/py-faster-rcnn.git 拉取完成后,在/h ...

  6. matlab pdist如何实现,在MATLAB版本7中相当于pdist2

    在MATLAB版本7中相当于pdist2 我需要计算matlab中2个matrix之间的欧式距离. 目前我使用bsxfun和计算距离如下(我附上一段代码): for i=1:4754 test_dat ...

  7. matlab2012b函数问题,MATLAB版本(2012b 64bit)在尝试调用svmtrain函数时报错

    MATLAB版本(2012b 64bit)在尝试调用svmtrain函数时报错 MATLAB版本(2012b 64bit),在尝试调用svmtrain函数时报错 问题:MATLAB版本(2012b 6 ...

  8. matlab ifft频率分辨率,[FFT] matlab中关于FFT的使用(理解频率分辨率、补零问题)

    [FFT] matlab中关于FFT的使用(理解频率分辨率.补零问题).txt我这人从不记仇,一般有 仇当场我就报了.没什么事不要找我,有事更不用找我!就算是believe中间也藏了一个lie! 我那 ...

  9. 高斯投影法正反算代码MATLAB版本

    高斯投影法正反算代码MATLAB版本 说明 高斯投影正算 高斯投影反算 说明 之前一个帖子给出了正反算的C语言代码 链接如下: link 我把它移植到了matlab中 支持向量输入 高斯投影正算 高斯 ...

  10. NSGA3算法及其MATLAB版本实现(转载)

    wayjj的博客 "NSGA3算法及其MATLAB版本实现" https://blog.csdn.net/wayjj/article/details/78954506 一丶NSGA ...

最新文章

  1. 报名 | 清华大数据论坛之深度学习技术与应用
  2. 趣谈网络协议笔记-二(第十一讲)
  3. AlertDialog的使用(二):分别创建
  4. Blazor University (4)组件 — 单向绑定
  5. 2019-03-21-算法-进化(合并两个有序链表)
  6. 【Spring】Spring autowire-candidate解决注入的时候有多个符合的bena
  7. 20-10-025-安装-KyLin-2.6.0-单机版安装(MAC官网下载)成功
  8. Vision GUI programming products
  9. Best MSI to EXE Convert tool
  10. 【mobile】安卓图案解锁尝试次数过多导致 要解锁需要GOOGLE账户登录,解决方案...
  11. N720实现4G的TCP连接,数据上云的方法
  12. 乔布斯的创新故事_创新工作的真实故事
  13. 软件测试mysql数据库相关操作
  14. This Week in Spring - December 24th, 2019
  15. NX二次开发-重命名装配组件
  16. Xgboost简单原理推导(手写图片)
  17. POI-Excel导入与导出
  18. python xlwt
  19. MyCAT数据库分片(一)
  20. 3d空间中球体的动量守恒

热门文章

  1. python文本聚类 词云图_数据思维实践 | TASK 12 文本分析
  2. 就业信息追踪|基于Springboot+Vue开发实现就业信息追踪系统
  3. C#之CAD二次开发
  4. Linux修改文件/目录所有者
  5. win系统下根据端口号关闭进程
  6. 图片自动切图java源代码_Sketch 和 PS中的设计图如何实现“自动切图”?
  7. 为什么说人工智能和机器学习是生产力的未来
  8. 抖音服务器维护中播放0,抖音总是0播放?其实关键原因在这里!
  9. python量化交易:quantOS_金融终端使用指南、下载地址及安装疑难解答
  10. 四, Kafka 消费者知识点总结