标签: fft

来自信号的 Octave 频谱图“频谱图”如何工作?

我正在尝试测试位于 Octave 信号包中的 specgram 函数,但我对 specgram 的输入/输出变量有点困惑。我想要做的是能够将频谱图数据放入一个数组中,该数组将显示频率开始和停止时的频率和时间长度。

请参阅下面的示例代码:我试图让数组显示 t1 的长度为 7hz,t2 为 12hz,t3 为 2hz。我该怎么做呢?

我正在使用 ubuntu 12.04 和 Octave 3.2.4 以及信号包 1.0.11

% combines sig with spectra plot
clear all,clc,tic;
fs=1000;
t1=linspace(0,2*pi,fs/0.1); %need to round off no decimals
t2=linspace(0,2*pi,fs/0.3); %need to round off no decimals
t3=linspace(0,2*pi,fs/0.6); %need to round off no decimals

%Create signal in different arrays
y1=sin(7*t1);
y2=sin(12*t2);
y3=sin(2*t3);

%append arrays to test specgram
yt = [y1 y2 y3];

%plot(yt) %will show combined plot

%Spectrum section
yts=specgram(yt',20,500, 2,1); …
Run Code Online (Sandbox Code Playgroud)

matlab fft octave spectrogram

1
推荐指数
2
解决办法
1万
查看次数

FFT 后 x 轴上的单位

我的信号是由具有 N 个像素和间距 p 的线性光电二极管阵列检测到的静态 1D 模式。

FFT 到频谱后,我将沿 X 轴得到什么单位?

matlab signal-processing fft

1
推荐指数
1
解决办法
875
查看次数

为什么我们将零频率分量移动到图像的频谱中心?

F = round(fftshift(abs(fft2(A))))
Run Code Online (Sandbox Code Playgroud)

其中 A 是图像。

我正在研究数字图像处理中的对比度拉伸。我不明白零频率分量。我搜索了它,但我无法理解它,请参阅有关零频率分量的一些文档。

matlab fft image-processing

1
推荐指数
1
解决办法
3024
查看次数

绘制在窄范围内采样的复杂信号的频谱的正确方法是什么?

我有一些我很想绘制的复杂数据(设定频率周围的小带宽),但我对如何继续解释在特定范围内采样的复杂信号感到有些困惑。

因此,例如,这是我编写的代码(以及我对问题的相当糟糕的尝试),因此我有一个干净的示例来试验人工信号,该示例生成 78 KHz 波的复杂表示。我想要做的是得到一个以 120 KHz 为中心,跨度从 70 到 170 KHz 的图,模拟真实接收器的窄采样范围。

import numpy as np
import matplotlib.pyplot as plt

#sampling rate, samples/second; 100 KHz
rate = 100*10**3
#sample spacing in time, seconds/sample
interval = np.true_divide(1, rate)
#length of the fourier transform
n = 256
#time vector
t = np.linspace(0.0, n*interval, n)

#frequency of artificial signal; 78 KHz
f = 78*10**3
#complex signal
s = np.exp(1j*2*np.pi*f*t)

#dft of the data
dft = np.fft.fft(s)
#frequency bins
x = np.fft.fftfreq(n, d=interval) …
Run Code Online (Sandbox Code Playgroud)

python signal-processing numpy fft scipy

1
推荐指数
1
解决办法
5202
查看次数

快速傅立叶变换中以零为中心的尖峰

我有时间相关的数据,我想对其执行傅立叶变换。数据位于http://pastebin.com/2i0UGJW9。问题是数据不是均匀间隔的。为了解决这个问题,我尝试对数据进行插值,然后执行快速傅立叶变换。

import numpy as np
from scipy.fftpack import fft, fftfreq, fftshift 
from scipy.interpolate import interp1d 
import matplotlib.pyplot as plt

x = np.linspace(min(times), max(times), len(times))
y = interp1d(times, data)(x)
yf = fft(y)
xf = fftfreq(len(times), (max(times)-min(times))/len(times))
xf = fftshift(xf)
yplot = fftshift(yf)
plt.figure()
plt.plot(xf, 1.0/len(times) * np.abs(yplot))
plt.grid()
plt.show()
Run Code Online (Sandbox Code Playgroud)

然而,这给出了以零为中心的单个尖峰,而不是预期的频率图。我怎样才能得到这个以给出准确的结果?

python numpy fft scipy

1
推荐指数
1
解决办法
2010
查看次数

如何从录音机麦克风输入数据计算频率电平

我正在 android 中做声音分析器应用程序。我可以使用 AudioTrack Api 生成 18 khz 到 20 khz 的超声波。我可以使用 AudioRecord Api 录制音频。但我不知道如何计算麦克风输入数据的频率。我看到了多个问题如何从fft结果中获取频率?使用 FFT 和 Complex 类获取频率 wav 音频它没有给出正确的频率。请帮助我。对不起,我的沟通。

这是我的频率计算代码

int bufferSizeInBytes = 1024; 
short[] buffer = new short[bufferSizeInBytes];
class Recording extends Thread {
    @Override
    public void run() {

        while (true) {

                bufferReadResult = audioInput.read(buffer, 0, bufferSizeInBytes); // record data from mic into buffer                    

                if(bufferReadResult > 0){
                   calculate();
                }              
        }
    }   


public void calculate() {
    DoubleFFT_1D fft1d = new DoubleFFT_1D(bufferSizeInBytes);//using JTransforms lib
    double[] fftBuffer …
Run Code Online (Sandbox Code Playgroud)

audio android fft audio-recording arduino-ultra-sonic

1
推荐指数
1
解决办法
4960
查看次数

Python:一维数组的快速汉克尔变换

我正在尝试在 Python 中找到 Hankel 变换的任何现有实现(实际上我更喜欢两个 2d 径向对称函数的对称傅立叶变换,但它可以很容易地简化为 hankel 变换)。

我确实了解hankelpython 模块,但它需要 lambda 函数进行输入,而我只有一维数组。

有什么想法吗?

python numpy fft transform

1
推荐指数
2
解决办法
2650
查看次数

一维快速傅立叶变换

下面是什么算法?

我从以下源代码中了解到的是:

  1. dir 是FFT的方向:forward=1,inverse=-1。
  2. x 是真实的部分
  3. y 是虚部

什么是m在这里吗?

如果x= {1, 1, 1, 1, 0, 0, 0, 0}, and, y= {0,0,0,0,0,0,0,0,0}, 的值是m多少?

        //Inplace 1D FFT
        public static void FFT1D(int dir, int m, ref double[] x, ref double[] y)
        {
            long nn, i, i1, j, k, i2, l, l1, l2;
            double c1, c2, tx, ty, t1, t2, u1, u2, z;
            /* Calculate the number of points */
            nn = 1;
            for (i = 0; …
Run Code Online (Sandbox Code Playgroud)

c# fft

1
推荐指数
1
解决办法
352
查看次数

为什么 Swift 中的 FFT 与 Python 中的不同?

我正在尝试使用 Accelerate 框架将一些 python numpy 代码移植到 Swift。

在python中我写

import numpy as np
frames = np.array([1.0, 2.0, 3.0, 4.0])
fftArray = np.fft.fft(frames, len(frames))
print(fftArray)
Run Code Online (Sandbox Code Playgroud)

输出是:

[10.+0.j -2.+2.j -2.+0.j -2.-2.j]
Run Code Online (Sandbox Code Playgroud)

所以在 Swift 中,我试图像这样计算 FFT:

import Foundation
import Accelerate

    func fftAnalyzer(frameOfSamples: [Float]) {
        // As above, frameOfSamples = [1.0, 2.0, 3.0, 4.0]            

        let analysisBuffer = frameOfSamples
        let frameCount = frameOfSamples.count

        var reals = [Float]()
        var imags = [Float]()
        for (idx, element) in analysisBuffer.enumerated() {
            if idx % 2 == 0 {
                reals.append(element)
            } …
Run Code Online (Sandbox Code Playgroud)

python signal-processing fft accelerate-framework swift

1
推荐指数
2
解决办法
870
查看次数

ImageMagick 带通滤波器

我一直在使用斐济的 FFT 带通滤波器并取得了巨大成功,但我想在命令行中使用 ImageMagick 执行此操作。我看到 ImageMagick 有FFT 滤波器,他们的文档包括低通高通滤波器,但我可以执行带通滤波器吗?

斐济的带通滤波器设置似乎对我来说效果很好:在此处输入图片说明

(很抱歉,我的过滤器和 FFT 知识......真的很糟糕,所以如果我知道将什么链接在一起,这可能很容易实现,等等......)

image fft imagemagick image-processing filter

1
推荐指数
1
解决办法
378
查看次数