【发布时间】:2010-12-01 12:04:24
【问题描述】:
使用正弦输入,我尝试修改它的频率,以削减频谱中的一些较低频率,将主频率移向零。由于信号没有 fftshift,我试图通过在 fft 向量的开头和结尾消除一些样本来做到这一点:
interval = 1;
samplingFrequency = 44100;
signalFrequency = 440;
sampleDuration = 1 / samplingFrequency;
timespan = 1 : sampleDuration : (1 + interval);
original = sin(2 * pi * signalFrequency * timespan);
fourierTransform = fft(original);
frequencyCut = 10; %% Hertz
frequencyCut = floor(frequencyCut * (length(pattern) / samplingFrequency) / 4); %% Samples
maxFrequency = length(fourierTransform) - (2 * frequencyCut);
signal = ifft(fourierTransform(frequencyCut + 1:maxFrequency), 'symmetric');
但它没有按预期工作。我还尝试去除频谱的中心部分,但它也使用了更高频率的正弦波。
如何做到正确?
【问题讨论】:
-
你可以尝试下采样信号(通过删除样本以较低的速率重新采样)
-
它可以工作。但这是最好的方法吗?使用 for 循环还是使用特定函数?
标签: math matlab signal-processing frequency fft