例如,我以每秒100个样本的采样率测量了一些数据
a = [1, 4, 5, 6, 7, 8, 9, 6, 3, 2, 7, 1, 6]
此数据表示汽车长时间行驶时的振动(位移),可以说我只希望以一定速度行驶时查看振动,因此在进行采样后(也许通过设置无用的值到0)我得到类似
b = [1, 4, 5, 0, 0, 0, 0, 6, 3, 0, 0, 1, 6]
现在,如果我要查看该数据的傅立叶变换数据,该如何用作域和采样率?
我使用
b = [1, 4, 5, 0, 0, 0, 0, 6, 3, 0, 0, 1, 6]
与以前一样,采样率为1/100?
还是我要删除其他值
c = [1, 4, 5, 6, 3, 1, 6]
和不同的采样率?
答案 0 :(得分:0)
用这几个信息很难说,但我会尝试从我的经验中猜测: 您不能像这样放弃您不感兴趣的值。您正在尝试在频域中转换时间信号,并且以此方式,我认为您正在改变测试的物理性质。您要做的是删除与某个速度相对应的信号的频率内容。 我会尝试使用低通滤波器,而不是将不需要的值删除或将其设置为0。这样,您可以保持相同的采样率,并且可以人为地修改测试数据。 振动频率应该以某种方式与行驶速度相关(将频率越高,速度越高)。
希望这对您有帮助
Ciao
答案 1 :(得分:0)
我认为您混淆了什么采样率。采样率是由传感器生成的。没有恒定的采样率,您将无法计算出正确的频率。歌曲和麦克风的标准采样频率为44kHz。它不会改变。它的标准。
计算频谱的标准方法是将信号切成时间块,并对这些块进行频谱分析。与吉他的Tone调音器完全一样。
因此,您的采样频率为fs = 100hz
。假设您的块将为0.5s
->这意味着您的块将具有fs*0.5s = 50
值。您将对这些块进行频谱分析,而不是整个time_signal
因此,以这种态度,您可以过滤您感兴趣的大块->高于特定汽车速度。
代码示例:
all_data = [1,2,8,1,2,6,4,7,8,1,3.........]
chunks = [[1,2,8...],[4,5,7,8,],...]
>>>len(chunks[0])
50
interesting_chunks = chunks that were measured when car reached 40mph
for interesting_chunk in interesting_chunks:
FFT = np.fft(interesting_chunk)
简单的方法:
您不能削减纯信号中的值,但如果将信号按块分组,则可以削减这些块并仅获取您感兴趣的那些
您当然可以只包含一个部分-恰好涵盖了汽车达到您的速度的时间段。但是请记住,您不能将单独的信号连接在一起。块需要连续,而不是从头到尾都粘在一起
注意,块越大,FFT越准确,但时间窗口越大。 块较小,FFT精度较低,但是时间窗口较小-适用于实时应用