Julia中奈奎斯特频率之上采样信号的代码错误排查求助
信号构建与采样错误修正
你要构建包含1Hz(幅值1)和10Hz(幅值10)的信号,原代码存在几个关键错误,导致输出不符合预期:
错误分析
- 角频率计算逻辑错误:你用
omega = 0.5*pi/delta推导的角频率对应25Hz(频率=ω/(2π)),后续10*omega对应250Hz,远超过采样频率(1/0.01=100Hz)的奈奎斯特频率(50Hz),会发生严重混叠,完全偏离目标信号的频率要求。 - 信号频率与角频率映射错误:正弦信号的角频率与频率的关系为
ω=2πf,因此1Hz对应的角频率应为2π*1,10Hz对应的角频率是2π*10,原代码的映射逻辑完全错误。 - 绘图未使用时间轴:直接
plot(f)会以采样点索引为x轴,无法直观展示信号随时间的变化趋势。
修正后的代码
using Plots T = 10 # 总时间长度 delta = 0.01 # 采样间隔,采样频率fs=1/delta=100Hz,奈奎斯特频率50Hz ts = 0:delta:T # 时间序列 # 构建1Hz(幅值1)和10Hz(幅值10)的合成信号 f = sin.(2π * 1 * ts) + 10 * sin.(2π * 10 * ts) # 绘制带时间轴的信号图 plot(ts, f, xlabel="时间(s)", ylabel="信号幅值", title="1Hz+10Hz合成信号")
说明
修正后的代码中,采样频率100Hz远高于10Hz信号的奈奎斯特频率(20Hz),满足采样定理要求,不会发生混叠。同时以时间序列ts作为x轴,能清晰展示信号的时域特征。
内容的提问来源于stack exchange,提问作者loop
相关产品推荐
相关产品推荐

