dft

Frequency detection on Android - AudioRecord

眉间皱痕 提交于 2020-01-02 21:49:29
问题 This is my second question because i hawe a problem. I've to implement a simple Frequency detection on Android. For the DFT i've found the jTransform library (https://sites.google.com/site/piotrwendykier/software/jtransforms). In the API of jTransform http://incanter.org/docs/parallelcolt/api/edu/emory/mathcs/jtransforms/fft/DoubleFFT_1D.html#complexForward%28double%5B%5D%29 i had seen that i've to pass a double vector at the complexForward() method, and obliviously not a File. So, for first,

PERFORMING FFT on EEG SIGNAL USING MATLAB

烂漫一生 提交于 2020-01-01 19:13:20
问题 i have acquired a 5 minutes raw eeg from NEXUS 10 mark 2 equipment and it is giving me output in the matlab as 1 x 76800 row vector. as i understand , the sampling frequency choosen is 256 hz , hence it is giving me total 76800 sampling points. no wat i m perfoming N point FFT on this raw eeg signal. since N can only be power of 2 i am EXTRACTING 65536(2 ^16) SAMPLING POINTS FROM RAW EGG i.e. from 76800 points i have taken 65536. now i am not able to perform fft on the this vector (65536

FFTW vs. OpenCV cvDFT

南楼画角 提交于 2019-12-31 22:37:19
问题 Can I expect a speedup when using FFTW (http://www.fftw.org/) instead of OpenCV's cvDFT (http://goo.gl/YCHj0)? My program's runtime is heavily determined by the application of inverse and forward DFT and I am thinking about using FFTW instead of OpenCV cvDFT. IIRC FFTW does some kind of "runtime compilation" whereas cvDFT is a simple FFT implementation, so I guess it could speed up my processing a bit. So before I am trying it out by myself, I thought to ask in here in case anyone stumbled

How to Plot fft of ascii values in MATLAB? [closed]

…衆ロ難τιáo~ 提交于 2019-12-31 07:42:12
问题 Closed. This question is off-topic. It is not currently accepting answers. Want to improve this question? Update the question so it's on-topic for Stack Overflow. Closed 6 years ago . I have a ascii file containing 2048 x and y value pairs. I just want to know how to plot fft of y in MATLAB. I am writing following MATLAB code but could not be able to find appropriate result. How can I do this? This is what I have tried: I = load('data1.asc'); for i = 1:2048 y = I(:,2); end plot(x) Fs = 40000;

14 用DFT计算线性卷积

我是研究僧i 提交于 2019-12-31 01:47:32
用DFT计算线性卷积 两有限长序列之间的卷积 我们知道,两有限长序列之间的卷积可以用圆周卷积代替,假设两有限长序列的长度分别为 \(M\) 和 \(N\) ,那么卷积后的长度为 \(L=M+N-1\) ,那么用圆周卷积计算线性卷积的具体过程为: 首先将两序列在尾部补零,延拓成长度为L=M+N-1的序列 将两序列进行圆周卷积,卷积后的结果即为线性卷积的结果   而圆周卷积的实现可以通过下图实现 现讨论 \(X[k]\) 的 \(IDFT\) 使用 \(DFT\) 实现 \[ x[n]=\frac{1}{N}\sum_{n=0}^{N-1}X[k]W_N^{-kn}=\frac{1}{N}(\sum_{n=0}^{N-1}X^{*}[k]W_N^{kn})^{*}\rightarrow \frac{1}{N}(DFT\{X^{*}[k]\})^{*} \] 上图可以改进为 所以线性卷积可以完全使用 \(DFT\) 实现,而 \(DFT\) 可以使用其快速算法 \(FFT​\) 大大降低计算量。 有限长序列与无限长序列卷积 或者说有限长序列与另一长度远大于其长度的序列进行卷积,如果按照上面直接用 \(DFT\) 计算的话,有两个问题。 必须知道无限长序列的全部元素,才能进行计算 用DFT计算卷积可能还不如直接进行卷积运算来得快 为解决上述的问题,可以将无限长序列划分为短序列

数字信号处理专题(3)——FFT运算初探

筅森魡賤 提交于 2019-12-30 01:23:43
一、前言   FFT运算是目前最常用的信号频谱分析算法。在本科学习数字信号处理这门课时一直在想:学这些东西有啥用?公式推来推去的,有实用价值么?到了研究生后期才知道,广义上的数字信号处理无处不在:手机等各种通信设备和WIFI的物理层信号处理、摄像头内的ISP、音频信号的去噪等。各种算法中,FFT是查看信号本质,也就是频谱的重要手段。之前仅直接调用FFT/IFFT IP核,今天深入探讨下算法本身和实现方案。 二、FFT运算原理及结构   本文仅对FFT的核心思想、作用和算法结构进行介绍,FFT具体原理和公式推导详见参考文献。FFT是DFT的快速算法,旨在降低计算复杂度以减小处理延迟和占用的软硬件资源,核心思想是将大点数的DFT运算拆分成多个小点数的DFT运算。因此FFT核心公式与DFT相同。    DFT运算把原始信号采样点与不同的旋转因子做乘累加运算,而旋转因子经过欧拉公式展开后就是角度成倍数关系的正余弦函数。现在DFT在干什么以及怎么干的一目了然:把一段原始信号采样点与不同频率的正余弦信号做“相关运算”,从而找出信号的频率分量。通俗点说就是 通过查看信号与不同频率值正余弦信号的相似程度分析信号本身的频率成分 。工程应用时,了解到这一点就足够了。   有了上述理解,再来看FFT算法

数字信号处理--FFT与蝶形算法

旧街凉风 提交于 2019-12-30 01:22:39
在数字信号处理中常常需要用到离散傅立叶变换(DFT),以获取信号的频域特征。尽管传统的DFT算法能够获取信号频域特征,但是算法计算量大,耗时长,不利于计算机实时对信号进行处理。因此至DFT被发现以来,在很长的一段时间内都不能被应用到实际的工程项目中,直到一种快速的离散傅立叶计算方法——FFT,被发现,离散傅立叶变换才在实际的工程中得到广泛应用。需要强调的是,FFT并不是一种新的频域特征获取方式,而是DFT的一种快速实现算法。本文就FFT的原理以及具体实现过程进行详尽讲解。 DFT计算公式 本文不加推导地直接给出DFT的计算公式: 其中x(n)表示输入的离散数字信号序列,WN为旋转因子,X(k)为输入序列x(n)对应的N个离散频率点的相对幅度。一般情况下,假设x(n)来自于低通采样,采样频率为fs,那么X(k)表示了从-fs/2率开始,频率间隔为fs/N,到fs/2-fs/N截至的N个频率点的相对幅度。因为DFT计算得到的一组离散频率幅度值实际上是在频率轴上从成周期变化的,即X(k+N)=X(k)。因此任意取连续的N个点均可以表示DFT的计算效果,负频率成分比较抽象,难于理解,根据X(k)的周期特性,于是我们又可以认为X(k)表示了从零频率开始,频率间隔为fs/N,到fs-fs/N截至的N个频率点的相对幅度。 N点DFT的计算量 根据(1)式给出的DFT计算公式

15 FFT及其框图实现

萝らか妹 提交于 2019-12-30 01:22:29
FFT及其框图实现 \(FFT\) 的全称为快速傅里叶变换,但是 \(FFT\) 并不是一种变换,而是实现 \(DFT\) 的一种快速算法。当 \(N\) 比较大时,使用 \(FFT\) 可大大减少进行 \(DFT\) 变换的计算量。 \(N\) 点的 \(DFT\) 所需的计算量为: \[ X[k]=\sum_{n=0}^{N-1}x[n]W_N^{kn} \] 乘法: \(N^2\) 次,加法: \(N(N-1)\) 次。每当 \(N\) 提高一倍,计算量增大四倍。 基 \(2\) 时域抽取 假设有一长度为 \(2N\) 的有限长序列 \(x[n]\) ,现对其进行 \(DFT\) 变换,现有一算法可以将 \(2N\) 点的 \(DFT\) 计算降为 \(N\) 的 \(DFT\) 计算,记 \(g[n]\) 为 \(x[n]\) 的下标为偶数时的序列,即 \(g[n]=x[2n],0\leq n \leq N-1\) ,记 \(v[n]\) 为 \(x[n]\) 的下标为奇数时的序列,即 \(v[n]=x[2n+1],0\leq n \leq N-1\) ,则 \[ \begin{aligned} X[k]&=\sum_{n=0}^{2N-1}x[n]W_{2N}^{kn}\\ &=\sum_{n=0}^{N-1}x[2n]W_{2N}^{k2n}+\sum_{n=0}^{N

快速傅里叶变换

我的未来我决定 提交于 2019-12-28 01:58:00
一、功能 计算复序列的快速傅里叶变换。 二、方法简介 序列 \(x(n)(n=0,1,...,N-1)\) 的离散傅里叶变换定义为 \[ X(k)=\sum_{n=0}^{N-1}x(n)W_{N}^{nk}, \qquad k=0,1,...,N-1 \] 其中 \(W_{N}^{nk}=e^{-j\frac{2\pi nk}{N}}\) ,将序列 \(x(n)\) 按序号 \(n\) 的奇偶分成两组,即 \[ \left.\begin{matrix}\begin{align*}x_{1}(n)=&x(2n)\\ x_{2}(n)=&x(2n+1)\end{align*}\end{matrix}\right\} \qquad n=0,1,...,\frac{N}{2}-1 \] 因此, \(x(n)\) 的傅里叶变换可写成 \[ \begin{align*}X(k) &= \sum_{n=0}^{N/2-1}x(2n)W^{2nk}_{N} + \sum_{n=0}^{N/2-1}x(2n+1)W^{(2n+1)k}_{N}\\&= \sum_{n=0}^{N/2-1}x_{1}(n)W^{nk}_{N/2} + W_{N}^{k}\sum_{n=0}^{N/2-1}x_{2}(n)W^{nk}_{N/2}\end{align*} \] 由此可得 \(X(k)=X_{1}(k)

android dft() function got hang and stopped working

匆匆过客 提交于 2019-12-23 05:26:47
问题 I got a problem, my android stopped working. This is my piece of program: I'm using opencv-tutorial-mixed-processing. case VIEW_MODE_SALIENCY: // input frame has scale format ImgRe = inputFrame.gray(); //ImgIm = inputFrame.(); ImgIm = Mat.zeros(ImgRe.size(), CvType.CV_8U); //List<Mat> ImgReImgIm = Arrays.asList(ImgRe, ImgIm); //Core.merge(ImgReImgIm, Fourier); Core.dft(ImgRe, tmp1, Core.DFT_REAL_OUTPUT, 0); 来源: https://stackoverflow.com/questions/23010407/android-dft-function-got-hang-and