qq_40277764 2023-05-23 19:03 采纳率: 66.7%
浏览 123
已结题

进行中频采样后频谱展宽是怎么回事

中频采样,M取3,fs=500khz,按理说时域采样,频域以FS间隔搬移,但是我这个既没有按FS搬移,频谱还发生了展宽,这是怎么回事
代码段如下:
M=3;
fs_Ds=round(2f0/(M-0.5)) ; %2f0/(M-0.5) fs_Ds>2B=2*f0/Q 相当于M-0.5<Q,且M为整数M=4 B=156k,fs_Ds=357k
num_Ds=fs/fs_Ds; %隔多少取一个点
fs_Ds_NUM=floor(length(s_rec_bp)/num_Ds); %采样后信号点数

s_rec_bp_ADC=s_rec_bp(1:num_Ds:length(s_rec_bp));%采样后的信号
s_rec_bp是625Khz的信号,采样后频谱图如下(正负频谱都画了):
[s_rec_bp_ADC_f,s_rec_bp_ADC_fft]=myfft(s_rec_bp_ADC,fs);
[s_rec_bp_f,s_rec_bp_fft]=myfft(s_rec_bp,fs);
其中myfft的内容是
L_s=length(s);
NFFT = 2^nextpow2(L_s); % Next power of 2 from length of L_s
s_fft=abs(fft(s,NFFT))/max(abs(fft(s,NFFT)));
s_fft_2=s_fft(1:NFFT/2); s_fft=[fliplr(s_fft_2),s_fft_2];
s_f=(-NFFT/2:NFFT/2-1)*fs/NFFT;

img

原本的信号频谱是这样:

img

  • 写回答

4条回答 默认 最新

  • @晓码自在 2023-05-23 20:20
    关注

    该回答引用GPT与博主@晓码自在合作编写:

    从您的描述和代码看,这里出现频谱展宽的原因很有可能是采用的 FFT 算法导致的。FFT 转换会产生频谱泄漏(spectral leakage)的效应,导致频谱出现一定的展宽。

    具体在此情况下,有以下几点需要注意:

    1. FFT 算法要求信号长度为 2 的幂次,所以在计算 FFT 时添加了补零,这会引入一定的频谱泄漏。可以尝试在信号长度接近 2 的幂次时不添加补零,减小泄漏影响。
    2. 中频采样后,信号时间长度减小,采样定理导致频谱间隔增大。但 FFT 算法的频谱分辨率是定的,这会引入一定的频谱重构误差,表现为频谱展宽。可以增加 FFT 点数提高分辨率以减小该影响。
    3. 中频采样后,信号可能不再保持周期性,会引入频率泄漏,这也会导致一定的频谱展宽。可以在中频采样前对信号加窗,减小频率泄漏的影响。
    4. 画频谱时取的 FFT 点数会影响频谱展宽效果。点数太少,无法准确重构信号频谱,会出现更严重的展宽。可以适当增加 FFT 点数以改善情况。

    除上述之外,其他造成频谱展宽的因素还包括:

    1. 频率分辨率设置过大,无法准确描绘信号频谱结构。
    2. 窗函数选择不当,某些窗函数的频谱泄漏更严重。
    3. 信号存在噪声或失真,这会在一定程度上破坏信号的周期性或频率结构。

    针对此问题,我的建议是:

    1. 评估频率分辨率是否适当,如果过大可以适当减小。
    2. 尝试使用不同的窗函数,观察频谱展宽效果。Hanning 窗等泄漏较小的窗函数。
    3. 在不丢失信息的前提下,尽量减小补零点数或直接不补零。
    4. 中频采样前对信号加窗,选用适当的窗函数。
    5. 适当增加 FFT 点数以提高频谱计算精度。
    6. 检查信号的噪声或失真情况,进行必要的滤波或修复。
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 6月1日
  • 已采纳回答 5月24日
  • 修改了问题 5月23日
  • 修改了问题 5月23日
  • 展开全部