【发布时间】:2017-08-06 01:39:21
【问题描述】:
我正在尝试使用匹配过滤来检测以 fc=75kHz 调制的特定信号。此外,检测是在一个 7 分钟的音频文件中实现的,采样率为 312.5kHz(这会导致非常大量的样本——大约 1.35 亿)。这使得处理和过滤过程花费太多时间并且不适用于实时应用程序。然后,我决定使用以下代码将信号转换为基带等效模型(以更改采样频率,从而减少采样数):
audio = audioread(file);
fc = 75000;
t = (1:length(audio)).';
y = audio*sqrt(2).*exp(-i*2*pi*fc*t);
但这不起作用,我对原始信号和转换为基带后的信号进行了傅里叶变换,以观察频域中的频谱。
如您所见,75kHz 信号的频谱不会移动到零点。
我的问题是:
- 我转换为基带的代码是否错误?如果可以,如何将此信号转换为基带信号?
- 有没有其他方法可以在不丢失 75kHz 信号信息的情况下显着减少该文件的样本数(我尝试使用采样率 = 150kHz 进行下采样,但仍然太多样本)?
【问题讨论】:
-
我认为您需要将
t = (1:length(audio)).';替换为t = (1:length(audio)).'/312500;以正确定义时间,同时考虑原始采样率。此外,您可能需要在乘以虚指数后应用低通滤波器。也许转换前的带通滤波器也会有所帮助 -
@LuisMendo,样本数量和时间尺度之间的一个误解搞砸了很多,感谢您向我展示我的错误,它确实帮助我解决了很大一部分问题
标签: matlab signals signal-processing sampling