【发布时间】:2020-01-13 01:55:45
【问题描述】:
我有一个带有模拟值的 TXT-Doc https://www.mikrocontroller.net/attachment/428580/Probe_1.txt。我在 Matlab 中使用 FFT 和 Pwelch 来查找模拟信号的频率。从理论上讲,频率应该在~300 Hz 左右。这就是为什么我想到了 0-500 Hz 的区域。
我试过fft:
>> load pr_1.txt;
>> Fs = 1000;
>> T = 1/Fs;
>> L = length(pr_1);
>> FFT = fft(pr_1);
>> P2 = abs(FFT/L);
>> P1 = P2(1:L/2+1);
>> P1(2:end-1) = 2*P1(2:end-1);
>> f = Fs*(0:(L/2))/L;
>> plot(f,20*log10(P1))
和 pwelch:
>> len = 2050;
>> h = kaiser(len,4.53);
>> pwelch(pr_1,h,[],len,Fs)
两者都向我展示了相同的答案:峰值约为 300 Hz。 但我的问题是如何定义正确的采样频率 Fs? 例如,如果我将 Fs 更改为 Fs=10000 而不是 Fs=1000,我将在 ~3000 Hz 而不是 300 Hz 处获得峰值点。如果我将 Fs = 500 更改为 150 Hz 的峰值。我很难理解和定义正确的 Fs。
【问题讨论】:
-
首先,这个问题的本质是信号处理,而不是编程。但是,关于 FS,并不是您定义它,它是由对值进行采样然后保存到文本文件的设备给出的。在您对它们进行采样的那一刻,您不再考虑它们继续进行而是在时间上离散化(采样),并且这个过程是以一定的采样率完成的。所以答案是,谁给了你文件,问他你的数据被采样的频率。
-
对不起,把它放在错误的线程中。在 TXT 文件中,我给出了 9997.4286613483 Hz 的频率。你是说这是采样频率吗?
-
对不起,我无法回答这个问题。不知道这个文件来自哪里以及它包含什么样的信息是不可能做出任何声明的。
标签: matlab fft frequency sampling frequency-analysis