gpt4 book ai didi

math - 如何在 Matlab 中生成信号的低频版本?

转载 作者:太空宇宙 更新时间:2023-11-03 20:27:03 24 4
gpt4 key购买 nike

对于正弦输入,我试图修改它的频率,在频谱中切割一些较低的频率,将主频率移向零。由于信号未经过 fftshifted,我尝试通过消除 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');

但它并没有像预期的那样工作。我还尝试移除频谱的中心部分,但它也使用了更高频率的正弦波。

如何做到正确?

最佳答案

@las3rjock:

它更像是对信号本身进行下采样,而不是 FFT..看看<强>downsample .

或者您可以创建一个 timeseries对象,并使用 resample 对其重新采样方法。

编辑:

类似的例子:)

% generate a signal
Fs = 200;
f = 5;
t = 0:1/Fs:1-1/Fs;
y = sin(2*pi * f * t) + sin(2*pi * 2*f * t) + 0.3*randn(size(t));

% downsample
n = 2;
yy = downsample([t' y'], n);

% plot
subplot(211), plot(t,y), axis([0 1 -2 2])
subplot(212), plot(yy(:,1), yy(:,2)), axis([0 1 -2 2])

screenshot

关于math - 如何在 Matlab 中生成信号的低频版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1478560/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com