尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

傅里叶变换时移与频移性质:从原理到工程实践

傅里叶变换时移与频移性质:从原理到工程实践 1. 项目概述从信号“搬家”到理解傅里叶变换的基石如果你接触过信号处理、通信或者图像分析傅里叶变换这个名字一定如雷贯耳。它就像一副“数学眼镜”能把我们看到的随时间变化的信号时域转换成由不同频率成分组成的谱频域。但很多人学到这里就卡住了公式记住了却不知道它到底怎么用尤其是那两个听起来很抽象的性质时移性质和频移性质。今天我们不堆公式就从一个工程师的实操视角来彻底拆解这两个性质。你可以把它们理解为信号在时域和频域之间“搬家”的规则手册搞懂了它们你才算真正摸到了傅里叶变换应用的门道。简单来说时移性质描述的是一个信号在时间轴上整体往后或往前挪动一下比如你的录音延迟了0.5秒播放它的傅里叶变换会怎么变答案是频谱的幅度谱完全不变只在相位谱上增加了一个线性相位偏移。而频移性质则描述相反的操作如果你想在频域里把信号的频谱整体搬个家比如把一段音频的音调整体升高那么对应在时域里就需要给原始信号乘上一个复指数项也就是进行“调制”。这两个性质是通信系统里调制解调、雷达信号处理中测距测速、乃至音频变速不变调等众多技术的核心数学基础。无论你是正在啃书本的学生还是需要处理实际信号问题的工程师吃透这两个性质都能让你在面对复杂系统时心里更有底。2. 核心原理拆解时移与频移的物理意义与数学本质2.1 时移性质时间延迟如何“烙印”在相位上我们先从时移性质入手因为它更直观。假设我们有一个信号x(t)它的傅里叶变换是X(f)这里用频率f表示也可以用角频率ω关系是ω 2πf。现在我们把这个信号整体延迟了t0时间得到新信号x(t - t0)。时移性质的数学表达非常简洁F{ x(t - t0) } X(f) * e^(-j2πf t0)其中F{ }表示傅里叶变换j是虚数单位。这个公式告诉我们什么我们拆开来看X(f)这是原始信号的频谱。它本身是个复数包含幅度信息|X(f)|和相位信息∠X(f)。e^(-j2πf t0)这是一个复指数因子它的模始终为1相位是-2πf t0。两者相乘根据复数乘法规则结果的幅度是两者幅度相乘相位是两者相位相加。因为复指数因子幅度为1所以相乘后频谱的幅度谱|X(f)|保持不变。而相位则变成了原始相位∠X(f)加上-2πf t0。这就是时移性质的物理核心时间上的平移不会改变信号所包含的频率成分的多少幅度谱不变但会给每个频率分量带来一个与频率成正比的额外相位偏移。这个偏移量-2πf t0是一个关于频率f的线性函数。频率越高相位变化越大。一个生活化的类比想象一个乐队演奏同一段旋律。如果所有乐手同时晚起拍0.1秒整体时移你听到的旋律频率成分完全没有变但整个乐曲的“起始时间”感觉推迟了。在频域看来就是每个音符频率的“发声时机”相位被线性地调整了。在工程上的直接应用雷达测距。雷达发射一个脉冲信号遇到目标反射回来接收到的信号就是发射信号的一个时移版本延迟了Δt 2R/cR是距离c是光速。通过比较接收信号与发射信号的相位差利用时移性质我们就能精确计算出时延Δt从而得到距离R。这里的关键就在于时移信息完全编码在了相位谱的线性变化中。2.2 频移性质频谱搬家的“调制”钥匙频移性质是时移性质的“对偶”。它描述的是如果一个信号在时域乘以一个复指数项那么它的频谱将会在频域发生平移。其数学表达式为F{ x(t) * e^(j2πf0 t) } X(f - f0)同样拆解一下x(t)原始时域信号。e^(j2πf0 t)一个频率为f0的复正弦波复指数。X(f - f0)原始频谱X(f)整体向右向正频率方向平移了f0。物理意义在时域给信号“调制”上一个高频载波e^(j2πf0 t)等效于在频域把原信号的频谱从基带低频处搬移到了以f0为中心的位置。这几乎是所有现代通信系统的基石比如AM/FM广播、4G/5G、Wi-Fi。为什么是复指数e^(j2πf0 t)因为它是最简单的单频率复正弦波。在实际工程中我们常用实正弦/余弦波作为载波例如cos(2πf0 t)。根据欧拉公式cos(2πf0 t) [e^(j2πf0 t) e^(-j2πf0 t)] / 2。因此用cos(2πf0 t)调制信号x(t)后其频谱将是X(f - f0)/2和X(f f0)/2的和即频谱会对称地搬移到f0和-f0两个位置。这就是实信号调制后频谱具有对称性的原因。一个实操中的关键点频移性质中的f0可以是正数也可以是负数。f0为正频谱右移向更高频率f0为负频谱左移。这在软件无线电SDR中非常有用比如你需要将接收到的中频信号通过数字下变频DDC搬回基带进行处理本质上就是乘以一个e^(-j2πf_IF t)来实现频谱左移。注意时移和频移性质完美地体现了傅里叶变换的“对偶性”。时域的平移对应频域的线性相位变化而时域的线性相位变化即乘以复指数则对应频域的平移。这种对称美是傅里叶变换理论的核心魅力之一。3. 数学推导与深度解析不仅仅是记忆公式很多资料只给结论但我们作为实践者必须理解公式从哪里来。这不仅有助于记忆更能让你在遇到变种问题时自己推导。3.1 时移性质的推导我们从傅里叶变换的定义出发X(f) ∫_{-∞}^{∞} x(t) e^(-j2πf t) dt正变换现在对x(t - t0)做变换F{ x(t - t0) } ∫_{-∞}^{∞} x(t - t0) e^(-j2πf t) dt这里的关键是换元。令τ t - t0则t τ t0dt dτ。代入上式 ∫_{-∞}^{∞} x(τ) e^(-j2πf (τ t0)) dτ ∫_{-∞}^{∞} x(τ) e^(-j2πf τ) e^(-j2πf t0) dτ e^(-j2πf t0) ∫_{-∞}^{∞} x(τ) e^(-j2πf τ) dτ e^(-j2πf t0) X(f)推导完毕。可以看到时移因子t0是如何从积分中分离出来变成一个乘在整体频谱前面的复指数相位的。这个过程清晰地展示了时域操作与频域相位变化的直接关联。3.2 频移性质的推导同样从定义出发F{ x(t) e^(j2πf0 t) } ∫_{-∞}^{∞} [x(t) e^(j2πf0 t)] e^(-j2πf t) dt ∫_{-∞}^{∞} x(t) e^(-j2π(f - f0) t) dt仔细观察积分内部e的指数部分-j2π(f - f0)t。这与傅里叶变换定义中的-j2πf t形式完全一致只是把f替换成了(f - f0)。因此这个积分的结果就是原始信号x(t)的傅里叶变换在(f - f0)处的值 X(f - f0)推导完毕。这个推导更直观地显示了时域乘以复指数相当于在频域改变了观察频率的“起点”。深度解析线性相位与群延迟从时移性质e^(-j2πf t0)中我们引出一个重要概念群延迟 (Group Delay)。群延迟定义为相位谱对频率的导数的负值即τ_g(f) -d(∠H(f))/df。对于纯时移系统其相位响应是∠H(f) -2πf t0那么群延迟τ_g(f) -d(-2πf t0)/df t0是一个常数。这意味着什么常数群延迟表示信号中所有频率分量在通过系统时经历的时延是相同的t0。这样输出信号相对输入信号只是整体延迟波形不会发生畸变。如果相位响应不是线性的群延迟随频率变化那么不同频率分量到达的时间就不同合成后的输出波形就会相对输入波形发生失真这称为相位失真。在音频处理或数据传输中我们必须关注这一点。4. 工程应用实例详解从理论到代码理论再美落地才行。下面我们用几个典型的工程场景和可运行的代码以Python为例来展示这两个性质如何应用。4.1 应用一基于时移性质的雷达测距模拟假设我们发射一个线性调频脉冲Chirp信号接收到的回波是它的延迟版本。我们可以通过计算互相关等价于在频域利用时移性质来估计延迟。import numpy as np import matplotlib.pyplot as plt # 参数设置 fs 1000 # 采样率 1kHz T 1.0 # 信号时长 1秒 t np.arange(0, T, 1/fs) # 时间向量 # 1. 生成发射信号一个简单的单频脉冲 f0 50 # 信号频率 50Hz tx_signal np.sin(2 * np.pi * f0 * t) # 给发射信号加一个窗使其能量集中 tx_signal * np.hanning(len(t)) # 2. 模拟接收信号加入时移和噪声 delay_samples 200 # 模拟200个采样点的延迟 rx_signal np.zeros_like(tx_signal) rx_signal[delay_samples:] tx_signal[:-delay_samples] # 简单时移 noise 0.1 * np.random.randn(len(rx_signal)) # 加入高斯噪声 rx_signal noise # 3. 快速傅里叶变换 (FFT) N len(t) freqs np.fft.fftfreq(N, 1/fs) Tx_fft np.fft.fft(tx_signal) Rx_fft np.fft.fft(rx_signal) # 4. 利用时移性质计算互功率谱并获取相位差 # 互相关在频域表示为 conj(Tx_fft) * Rx_fft cross_power_spectrum np.conj(Tx_fft) * Rx_fft # 计算相位差包裹相位 phase_difference np.angle(cross_power_spectrum) # 5. 估计时延相位差是频率的线性函数 phi -2*pi*f*delay # 通过线性拟合求斜率斜率 k -2*pi*delay从而得到 delay -k/(2*pi) # 选择有效频率范围避免直流和Nyquist频率附近 valid_idx (freqs 20) (freqs 80) # 围绕50Hz选择 f_valid freqs[valid_idx] phase_valid phase_difference[valid_idx] # 解包裹相位避免2pi跳变 phase_unwrapped np.unwrap(phase_valid) # 线性拟合 phase a * f b, 其中 a -2*pi*delay coefficients np.polyfit(f_valid, phase_unwrapped, 1) # 1阶多项式拟合 a, b coefficients estimated_delay -a / (2 * np.pi) # 计算时延秒 estimated_delay_samples estimated_delay * fs # 转换为采样点数 print(f真实延迟: {delay_samples/fs:.4f} 秒 ({delay_samples} 个采样点)) print(f估计延迟: {estimated_delay:.4f} 秒 ({estimated_delay_samples:.1f} 个采样点)) # 绘图 fig, axes plt.subplots(3, 2, figsize(12, 10)) # 时域信号 axes[0, 0].plot(t[:400], tx_signal[:400], label发射信号) axes[0, 0].set_title(发射信号 (时域)) axes[0, 0].set_xlabel(时间 (s)) axes[0, 0].legend() axes[0, 1].plot(t[:400], rx_signal[:400], r, label接收信号(含时延和噪声)) axes[0, 1].set_title(接收信号 (时域)) axes[0, 1].set_xlabel(时间 (s)) axes[0, 1].legend() # 幅度谱 axes[1, 0].plot(freqs[:N//2], np.abs(Tx_fft[:N//2]), label发射信号幅度谱) axes[1, 0].set_title(发射信号幅度谱) axes[1, 0].set_xlabel(频率 (Hz)) axes[1, 0].set_ylabel(幅度) axes[1, 1].plot(freqs[:N//2], np.abs(Rx_fft[:N//2]), r, label接收信号幅度谱) axes[1, 1].set_title(接收信号幅度谱) axes[1, 1].set_xlabel(频率 (Hz)) axes[1, 1].set_ylabel(幅度) # 相位差 axes[2, 0].plot(f_valid, phase_valid, ., label包裹相位差) axes[2, 0].plot(f_valid, phase_unwrapped, r-, linewidth2, label解包裹相位差) axes[2, 0].plot(f_valid, a * f_valid b, g--, linewidth2, labelf线性拟合: slope{a:.2f}) axes[2, 0].set_title(互功率谱相位差 (线性相位)) axes[2, 0].set_xlabel(频率 (Hz)) axes[2, 0].set_ylabel(相位 (弧度)) axes[2, 0].legend() axes[2, 1].axis(off) # 留空 plt.tight_layout() plt.show()代码解读与实操心得核心思想接收信号rx_signal是发射信号tx_signal的时移版本。在频域两者的关系满足时移性质Rx_fft Tx_fft * exp(-j*2π*f*delay)。互功率谱conj(Tx_fft) * Rx_fft的结果其相位就等于-2π*f*delay。这正是时移性质中多出来的那个线性相位项。相位解缠绕np.angle()计算出的相位主值在[-π, π]之间当真实相位超过这个范围会发生2π跳变。np.unwrap()函数可以消除这种跳变得到连续的相位值这是进行准确线性拟合的前提。线性拟合解缠绕后的相位与频率f成线性关系。通过线性拟合 (np.polyfit) 得到斜率a代入公式delay -a/(2π)即可估计出时延。注意事项频率选择拟合时一定要选择信噪比高的频率区间。本例中信号能量集中在50Hz附近所以选择20-80Hz。如果全频带拟合低频和高频的噪声相位会严重影响估计精度。整数延迟本例模拟的是整数倍采样延迟。实际中延迟可能是分数倍的这时估计会更复杂可能需要用到更精细的插值方法。实际雷达真实雷达使用Chirp信号通过测量接收与发射Chirp信号的频差来测距FMCW原理但其底层数学也与时移/频移性质密切相关。4.2 应用二基于频移性质的幅度调制AM与解调我们来实现一个简单的幅度调制AM系统直观感受频移性质。import numpy as np import matplotlib.pyplot as plt # 参数设置 fs 10000 # 采样率 10kHz T 0.1 # 信号时长 0.1秒 t np.arange(0, T, 1/fs) # 1. 生成基带信号调制信号一个低频信号 fm 50 # 调制信号频率 50Hz baseband_signal 0.8 * np.cos(2 * np.pi * fm * t) # 幅度小于1避免过调幅 # 2. 生成载波信号 fc 1000 # 载波频率 1kHz carrier np.cos(2 * np.pi * fc * t) # 3. 进行幅度调制 (AM): s(t) [1 m(t)] * c(t) 其中m(t)是归一化的基带信号 # 这里为了简单使用抑制载波的双边带调制 (DSB-SC): s(t) m(t) * c(t) am_signal baseband_signal * carrier # 这就是频移性质的直接体现 # 4. 解调相干解调与载波相乘后低通滤波 demod_signal am_signal * carrier * 2 # 乘以2是为了补偿幅度 # 5. 设计一个简单的低通滤波器移动平均 filter_order 101 # 滤波器阶数 lp_filter np.ones(filter_order) / filter_order demod_filtered np.convolve(demod_signal, lp_filter, modesame) # 6. 计算频谱 N len(t) freqs np.fft.fftfreq(N, 1/fs) Baseband_fft np.fft.fft(baseband_signal) AM_fft np.fft.fft(am_signal) # 绘图 fig, axes plt.subplots(3, 2, figsize(14, 10)) # 时域波形 axes[0, 0].plot(t[:1000], baseband_signal[:1000]) axes[0, 0].set_title(基带信号 m(t) (时域)) axes[0, 0].set_xlabel(时间 (s)) axes[0, 0].grid(True) axes[0, 1].plot(t[:200], am_signal[:200]) # AM信号高频少画点 axes[0, 1].set_title(已调信号 s(t) m(t)*cos(2πfc t) (时域)) axes[0, 1].set_xlabel(时间 (s)) axes[0, 1].grid(True) # 频谱对比 axes[1, 0].plot(freqs[:N//2], np.abs(Baseband_fft[:N//2])) axes[1, 0].set_title(基带信号频谱 |M(f)|) axes[1, 0].set_xlabel(频率 (Hz)) axes[1, 0].set_ylabel(幅度) axes[1, 0].set_xlim([-200, 200]) axes[1, 0].grid(True) axes[1, 1].plot(freqs[:N//2], np.abs(AM_fft[:N//2])) axes[1, 1].set_title(已调信号频谱 |S(f)|) axes[1, 1].set_xlabel(频率 (Hz)) axes[1, 1].set_ylabel(幅度) axes[1, 1].set_xlim([-1500, 1500]) axes[1, 1].grid(True) # 在频谱图上标注频移 axes[1, 1].axvline(xfc, colorr, linestyle--, alpha0.5, labelffc{fc}Hz) axes[1, 1].axvline(x-fc, colorr, linestyle--, alpha0.5) axes[1, 1].legend() # 解调结果 axes[2, 0].plot(t[:1000], demod_signal[:1000], g, alpha0.7, label解调相乘后) axes[2, 0].plot(t[:1000], demod_filtered[:1000], r, linewidth2, label低通滤波后) axes[2, 0].set_title(解调过程信号) axes[2, 0].set_xlabel(时间 (s)) axes[2, 0].legend() axes[2, 0].grid(True) axes[2, 1].plot(t[:1000], baseband_signal[:1000], b--, label原始基带信号) axes[2, 1].plot(t[:1000], demod_filtered[:1000], r, label解调恢复信号) axes[2, 1].set_title(解调恢复信号 vs 原始基带信号) axes[2, 1].set_xlabel(时间 (s)) axes[2, 1].legend() axes[2, 1].grid(True) plt.tight_layout() plt.show() print(频移性质验证) print(基带信号频谱峰值在 ±{} Hz 处。.format(fm)) print(已调信号频谱峰值在 ±{} Hz 和 ±{} Hz 处。.format(fc-fm, fcfm)) print(这正是 M(f) 频谱搬移到 ±fc 位置的结果。)代码解读与实操心得调制过程am_signal baseband_signal * carrier。根据频移性质时域相乘对应频域卷积。基带信号m(t)的频谱M(f)与载波cos(2πfc t)的频谱两个位于±fc的冲激卷积结果就是将M(f)搬移到了±fc处。这就是AM调制的频域解释。频谱观察运行代码后对比左右频谱图。左边基带信号频谱能量集中在±50Hz。右边已调信号频谱能量集中在±(1000-50)950Hz和±(100050)1050Hz附近。这就是频谱搬移的直观体现。解调过程相干解调本质上是调制的逆过程。demod_signal am_signal * carrier在时域再次相乘对应频域再次卷积。这会将已搬到±fc的频谱再次搬移一部分搬回基带0频率附近另一部分搬到±2fc附近。低通滤波器的作用就是滤除±2fc处的高频成分只留下基带成分从而恢复出原始信号。注意事项载波同步相干解调要求接收端本地载波与发射载波严格同频同相。本例中因为是自己生成的信号所以完全同步。实际通信中载波同步是一个关键且复杂的环节。滤波器设计代码中使用了简单的移动平均滤波器实际应用中需要使用性能更好的数字滤波器如FIR或IIR滤波器并仔细设计截止频率和阶数以平衡滤波效果和实时性。DSB-SC本例演示的是抑制载波的双边带调制频谱中不含载波分量功率利用率高但解调必须相干解调。普通AM广播会在调制时加入强载波使得可以用简单的包络检波来解调但功率效率低。5. 常见问题、误区与排查技巧在实际应用和理论学习中围绕时移和频移性质我踩过不少坑也见过很多同行容易混淆的概念。这里集中梳理一下。5.1 时移性质相关问题1信号时移后为什么我的频谱幅度看起来有点不一样这通常是频谱泄露和栅栏效应造成的假象并非时移性质失效。当你对有限长的离散信号做FFT时默认假设信号是周期延拓的。如果你时移信号周期延拓后的信号在边界处可能不连续这种不连续性会在频域引入额外的高频分量导致幅度谱发生改变。排查技巧确保对时移前后的信号施加完全相同的窗函数如汉宁窗并观察频谱的主瓣部分。或者使用更长的信号并在中间部分进行时移操作减少边界影响。在雷达信号处理中通常对完整的脉冲进行处理边界效应不显著。问题2如何从相位谱中准确提取时延直接对np.angle()计算出的相位进行拟合往往会因为2π相位模糊相位缠绕而失败。排查技巧相位解缠绕务必使用np.unwrap()函数处理相位数据。加权拟合在相位-频率线性拟合时应该根据频谱幅度进行加权。幅度大的频率点信噪比高相位更可靠权重应更大。可以使用np.polyfit的w参数传入权重向量权重可以取对应频率点的幅度值|X(f)|。处理群延迟对于非恒定时延的系统即相位非线性直接拟合一条直线会引入误差。此时应计算群延迟τ_g(f) -dφ/df观察其随频率的变化情况来判断系统是否具有线性相位。5.2 频移性质相关问题1用实载波cos(2πf0 t)调制后为什么频谱是双边带的而用复载波exp(j2πf0 t)调制后是单边带的这是初学者最容易困惑的点。根源在于实信号频谱的共轭对称性。一个实信号x(t)其傅里叶变换满足X(-f) conj(X(f))即频谱幅度偶对称相位奇对称。cos(2πf0 t)的频谱是0.5[δ(f-f0) δ(ff0)]它与X(f)卷积后会在f0和-f0处各产生一个X(f)的镜像形成对称的双边带。exp(j2πf0 t)的频谱是δ(f-f0)只有正频率分量它与X(f)卷积后只将X(f)搬移到f0处形成单边带。实操意义在通信中单边带调制可以节省一半带宽但实现复杂。复指数调制在数字信号处理中非常常见例如在软件无线电中用于数字上/下变频。问题2数字域实现频移调制/解调时有什么注意事项混叠将基带信号调制到高频时必须确保调制后的最高频率f_max f0小于采样率的一半奈奎斯特频率否则会发生混叠无法恢复信号。在代码设计中采样率fs的选择必须满足fs 2*(f_max f0)。正交调制实际传输中我们需要传输实信号。因此通常采用正交调制用两路正交的载波cos(2πf0 t)和sin(2πf0 t)分别调制信号的同相分量I路和正交分量Q路然后相加。这样可以在频域形成单边带或抑制一个边带提高频谱效率。这背后的数学支撑正是频移性质和复信号表示。5.3 综合应用排查表现象可能原因排查思路与解决方法时延估计值跳动大不准确1. 信号信噪比太低。2. 用于拟合的频带选择不当。3. 存在非整数倍采样延迟。1. 提高信号功率或进行滤波降噪。2. 选择信号能量集中的频段进行相位拟合避开噪声大的频段。3. 使用更精细的时延估计算法如基于FFT插值的相关峰检测。调制后信号失真1. 调制指数过大AM中导致过调幅。2. 载波频率过低不满足带通采样定理。3. 数字实现时乘法运算导致数据溢出或精度损失。1. 确保调制信号幅度在合适范围内如AM中调制信号绝对值小于1。2. 提高载波频率使其远大于调制信号带宽。3. 使用定点或浮点数时注意动态范围必要时进行缩放。解调后信号有高频毛刺低通滤波器性能不足未能有效滤除乘法产生的高频分量如2fc分量。重新设计低通滤波器增加滤波器阶数或降低截止频率。确保截止频率设置在f_max(调制信号最高频率) 和2fc - f_max之间。复指数调制后信号无法用实设备播放/发射复信号在物理世界无法直接表示。需要将复信号的实部和虚部分别作为两路实信号处理I/Q两路或者将复信号转换为实信号形式如通过希尔伯特变换生成解析信号再取实部。6. 扩展思考从性质到系统设计理解了时移和频移你可以将它们作为基础模块去理解更复杂的系统。分数时延滤波器在实际中我们常常需要对信号进行采样点之间的精细时延分数延迟这无法通过简单的样本移位实现。这时就需要设计一个分数时延滤波器其核心设计目标之一就是让它的相位响应在通带内尽可能线性即∠H(f) ≈ -2πf * ττ为分数延迟这正是时移性质在离散时间系统的体现。正交频分复用OFDM5G和Wi-Fi的核心技术。它将高速数据流分成许多低速子流用不同的正交子载波调制并同时传输。每个子载波上的调制本质上就是一次频移。而整个OFDM系统对时延扩展多径效应的抵抗能力也与循环前缀CP引入的“类时移”操作有关。同步与锁相环PLL在通信接收机中需要从已调信号中恢复出载波载波同步和符号定时时钟同步。载波同步可以看作是在频域进行精细的频偏校正频移的逆过程而时钟同步则是在时域进行采样时刻的调整时移的逆过程。锁相环是实现这些同步的经典电路其背后的数学模型深刻依赖于对相位时移的体现的跟踪与控制。我个人在实际项目中的体会是傅里叶变换的这几个基本性质就像螺丝刀和扳手之于工程师。时移和频移性质看似简单却是你分析和设计任何涉及“时间”和“频率”相互转换的系统时最趁手、最基础的工具。下次当你看到调制、滤波、同步、波束成形这些复杂的名词时不妨先试着用“时移”和“频移”这两面镜子去照一照往往能穿透表象直击问题的本质。最后分享一个小技巧在MATLAB或Python中验证一个新想法时先构造一个最简单的单频正弦波信号对它进行时移或频移操作然后分别观察时域波形和频域频谱的变化这种直观的对比能极大地加深你的理解比死记硬背公式有效得多。
返回列表