【问题标题】:Can't get FFT to work in Octave无法让 FFT 在 Octave 中工作
【发布时间】:2012-10-26 14:20:46
【问题描述】:

我一直在做一个(可能超级简单的)任务,其中一个步骤是获得傅里叶变换。我按照我大学的指导来转换波声which can be found here(通道:2,采样:17600,采样频率:16KHz)。

看图,好像可行:

[y,fs,wmode,fidx]=readwav('piano.wav','r',-1,0);
left=y(:,1);
amountOfSlices = 6;
samplesPerSlice = fix(length(left) / 6);
frames=enframe(left, samplesPerSlice);
frames=transpose(frames);
fftdata=rfft(frames);
fftdata=fftdata.*conj(fftdata);
plot(fftdata);

接下来,我创建了一个以教程代码为基础的代码文件,并添加了接受参数(分配所需的参数,但为简洁起见省略了)。

samplerate = 512;
% Read the file with raw unscaled audio data from begin to end
[multiData,fs,wmode,fidx]=readwav(filename,'r',-1,0);
disp(sprintf('Number of channels: %d', fidx(5)))
disp(sprintf('Number of samples: %d', fidx(4)))
disp(sprintf('Sample frequency: %d Hz', fs))

% Extract the left channel of the data
leftData = multiData(:, 1);

% Slice the left channel into pieces of the size of 'samplerate'
samplesPerSlice = samplerate

% Splits the leftData vector up into frames of length equal to sample rate
slicedLeftData = enframe(leftData, samplerate)';

% Apply the real data fast fourrier transformation on each data slice
fftdata=rfft(slicedLeftData);
fftdata=fftdata.*conj(fftdata);

plot(fftdata);

你们知道我在这里做错了什么吗?

我的实际问题是: 为什么第二个数据不在 0 到 16.000 Hz 的频域中?我做错了什么?

【问题讨论】:

    标签: matlab audio fft octave


    【解决方案1】:

    我猜“这里有什么问题”是指多种颜色?如果是这样,看起来两个图像中的 fftdata plottet 都是矩阵(你想要一个数组,对吗?)。 .* 不是对每个元素都执行操作吗?检查您传入参数的尺寸。

    此外,请记住奈奎斯特定理:您永远无法解析任何大于采样频率一半的频率。在采样频率为 16KHz 的情况下,您可能有超过 8kHz 的数据点,但它不会包含任何信息,因此无需将其包含在频域图中。

    【讨论】:

    • 'fftdata' 变量包含每一行(或每一列,不确定)的傅立叶变换,但这个问题是为什么第一个图的输出与第二个图的输出非常不同。它应该是相似的。我正在寻求帮助,为什么不是这样。
    • 为什么 fftdata 是一个矩阵?它不应该是一个简单的数组吗?您对 FFT 的输入的尺寸是多少? (输入信号是数组还是矩阵?)。
    • 顺便说一下,我使用的是VoiceBox,RFFT 函数对真实数据执行 FFT。 FFTData 是一个矩阵,因为每个数据切片(每个切片 512 个样本)都经过 FFT 处理。我特别添加了所有代码和 WAVE 文件,以便你们任何人都可以复制它,也许这将是不言自明的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-15
    • 1970-01-01
    • 2020-08-15
    • 1970-01-01
    • 2018-02-26
    • 2019-07-06
    • 2015-11-27
    相关资源
    最近更新 更多