采样率 窗口点数

  1. 采样频率大于2倍信号最高频率后可以无失真的恢复出原始信号

实际中,信号往往是无线带宽的,如何保证带宽有限?所以,我们在模拟信号输入端要加一个低通滤波器,使信号变成带宽有限,再使用2.5~3倍的最高信号频率进行采样。关于此我们下面将模拟数字转换过程将会看到。

虽说是不能小于等于2倍,但选2倍是不是很好呢,理论上,选择的采样频率越高,越能无失真的恢复原信号,但采样频率越高,对后端数字系统的处理速度和存储要求也就越高,因此要选择一个折中的值。

如果后端数字信号处理中的窗口选择过窄,采样率太高,在一个窗口内很难容纳甚至信号的一个周期,这从某方面使得信号无法辨识。比如,数字信号处理的窗口大小为1024个点,采样率为50KHz,则窗口最多容纳1024*(1/50KHz)=20.48ms的信号长度,若信号的一个周期为30ms>20.48ms,这就使得数字信号的处理窗口没法容纳一个周期信号,解决的办法就是在满足要求的前提下使用减小采样率或增加窗口长度。

采样貌似有一套完整的理论,就是《数字信号处理》书中的一堆公式推导,我们这里当然不会那么去说。其实采样最核心的问题就是采样率选择的问题。

  1. 根据实际,选择频率分辨率df
  2. 选择做DFT得点数N,因为DFT时域点数和变换后频域点数相同,则采样率可确定,Fs=N*df
  3. Fs是否满足Nyquist的采样定理?是,OK,否则增加点数N,重新计算2。

我们希望df越小越好,但实际上,df越小,N越大,计算量和存储量随之增大。一般取N为为2的整数次幂,不足则在尾端补0。

这里给出我的一个选择Fs的方案流程图,仅供参考。

采样后还有一个重要的操作是采样保持(S/H)操作,采样脉冲采样后无法立刻量化,这个过程要等待很短的一个时间,硬件上一般0.几个us,等待量化器的量化。

注意,在量化之前,所有的信号都是模拟信号,模拟信号就有很多干扰的问题需要考虑,这里只是从总体上给出我对整个过程的理解。更多细化的方案还需要根据实际信号进行研究。

量化

我们可以先直观的看一下量化的过程,

化有个关键的参数,叫量化位数,在所有的AD转换芯片(如AD7606)上都能看到这个关键的参数,常见的有8bit,10bit,12bits,16bit和24bit。



如上图,以AD7606为例,AD7606是16bit的AD芯片,量化位数指用16bit来表示连续信号的幅值。因此,考虑AD的测量范围(AD7606有两种:±5V和±10V),则AD分辨率是

±5V: (5V-(-5V)) / (2^16) = 152 uV

±10V: (10V-(-10V)) / (2^16) = 305 uV

量化位数越高,AD分辨率越高,习惯上,AD分辨率用常用LSB标示。

因此,AD7606中对于某个输入模拟电压值,因为存在正负电压,若以0V为中间电压值,范围为±5V时AD转换电压可计算为

AD7606若使用内部参考电压,Vref=2.5V。哦对了,这又出现个参考电压。参考电压与AD量化的实现方式有关,从速度上分串行和并行,串行包括逐次逼近型,并行方式包括并行比较式,如下图(左:串行,右:并行)。AD7606是使用逐次逼近型的方式。

AD转换芯片另外两个重要参数是转换时间(转换速率)。并行AD的转换速率比串行的要高。但并行比较的方式中电阻的精度对量化有影响。

接着,我们还将介绍一个重要的概念:量化噪声。量化噪声对应量化信噪比,

SNRq = (6.02N + 4.77) dB

其中N为量化位数,且不去管这个公式是怎么得到的(详细推导可参考文献[2]),对于

N=12, SNRq ≈ 70dB

N=16, SNRq ≈ 94dB

从中可以看出:每增加1bit量化位数,SNRq将提高6.02dB,在设计过程中,如果对方有信噪比的要求,则在ADC选型时就要选择合适位数的ADC芯片。

明显的,并不是量化位数越高越好,量化位数的提高将对成本、转换速度、存储空间与数据吞吐量等众多方面提出更高的要求。同时,我们尽量提高量化噪声的前提是信号的SNR已经比较低了,如果信号的SNR比量化噪声还高,努力提高量化噪声将是舍本求末的做法。



  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
% 读取录音文件 [filename,filepath] = uigetfile('*.wav','请选择录音文件'); file = fullfile(filepath, filename); [audio_data, Fs] = audioread(file); % 获取音频信号和采样率 % 频谱提取 N = length(audio_data); % 采样点数 fft_data = fft(audio_data); % 傅里叶变换 fft_half = fft_data(1:N/2+1); % 取一半频域数据,根据奈奎斯特定律,只需取一半即可表示整个频域 f = Fs * (0:(N/2))/N; % 频率轴 % 抽样和滤波 L = 512; % 每个窗口长度 overlap = L/2; % 窗口之间的重叠长度 hamming_window = hamming(L); % 汉明窗 fs_hop = round(Fs/10); % 采样率为信号采样率的1/10 downsampled_signal = downsample(audio_data, fs_hop); % 下采样 filtered_signal = filter(hamming_window,1,downsampled_signal); % 滤波 % 可视化 figure; subplot(2,2,1); plot(audio_data); title('原始录音文件音频信号'); subplot(2,2,2); plot(f,abs(fft_half)); title('频谱'); subplot(2,2,3); spectrogram(audio_data,hamming(L),overlap,L,Fs, 'yaxis'); % 修改该行代码 title('原始录音文件音频信号的时频谱'); subplot(2,2,4); plot(filtered_signal); title('经过抽样和滤波后的信号'); % 保存处理后的音频文件 processed_file = fullfile(filepath, ['processed_', filename]); audiowrite(processed_file, filtered_signal, fs_hop); % 播放 soundsc(audio_data, Fs); % 播放原始录音文件 pause(5); % 暂停5s,等待处理完毕后再播放处理后的录音文件 soundsc(filtered_signal, fs_hop); % 播放处理后的录音文件
06-06

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值