首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将通带信号转换为基带等效模型以降低采样率和样本数

将通带信号转换为基带等效模型以降低采样率和样本数
EN

Stack Overflow用户
提问于 2017-03-15 10:53:17
回答 1查看 1.8K关注 0票数 3

我试图检测特定的信号调制在fc=75kHz与匹配滤波。此外,检测是在一个7分钟的音频文件中实现的,采样率为312.5kHz (这导致了大量的样本--约1.35亿)。这使得处理和过滤过程花费了太多的时间,不适用于实时应用。然后,我决定用以下代码将信号转换为基带等效模型(以改变采样频率,从而减少样本数):

代码语言:javascript
复制
    audio = audioread(file);
    fc = 75000;
    t = (1:length(audio)).';
    y = audio*sqrt(2).*exp(-i*2*pi*fc*t);

但这是行不通的,我把原始信号和基带转换后的信号进行傅里叶变换,在频域上观察频谱。

正如你所看到的,75千赫信号的频谱不会移动到零点。

我的问题是:

  1. 我转换为基带的代码出错了吗?如果是,如何将此信号转换为基带信号?
  2. 是否有其他方法可以在不丢失75 the信号的情况下显著减少该文件的样本数(我尝试了采样率为150 the的下采样,但仍然有太多的样本)?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-15 13:29:24

正如@路易斯·门多在评论中提到的,要将采样率为312.5kHz的频谱从75 the移到0,您需要将时间变量除以采样率:

代码语言:javascript
复制
fs = 312500;
t = (1:length(audio)).'/fs;
y = audio*sqrt(2).*exp(-i*2*pi*fc*t);

这将改变整个输入频谱(包括图像约312.5-75=237.5Hz,其他导频音调你有约33千赫和66千赫和低通成分在0赫兹附近)。为了摆脱这些问题,你应该先对y信号进行低通滤波.您可能可以调整滤波器过渡带,但从您的图表来看,它似乎需要包括信号在大约4-5千赫的75千赫中心频率,并排除下一个干扰在66千赫左右(9千赫远离你的75千赫中心频率)。基于基于Matlab文件的Kaiser窗口低通滤波器设计实例,您可以使用以下方法来设计这样的过滤器:

代码语言:javascript
复制
fcuts = [4000 9000];
mags = [1 0];
devs = [0.05 0.01];

[n,Wn,beta,ftype] = kaiserord(fcuts,mags,devs,fs);
hh = fir1(n,Wn,ftype,kaiser(n+1,beta),'noscale');

filtered_signal = filter(hh, 1, y);

然后,您应该能够抽取大约24倍的信号(给出~13 the的最终采样率,以适应8000 by的近似信号带宽和过渡频带):

代码语言:javascript
复制
decimation_factor = 24;
baseband = filtered_signal(1:decimation_factor:end);

这个过程,尽管可视化相当简单,但也是相当浪费的,因为您最终会丢弃大部分已过滤的输出。然后,一个有效的实现将使用一种多相FIR抽取器,使用与上面设计的相同的滤波器系数:

代码语言:javascript
复制
firdecim = dsp.FIRDecimator ('DecimationFactor',decimation_factor, 'Numerator', hh);
baseband = firdecim(y); 
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42807677

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档