如何对数字化音频信号进行调频
出处:维库电子市场网 发布于:2023-04-12 16:27:58
在本文中,我们会将声音文件转换为典型的 Scilab 数据阵列,然后使用此真实数据作为基带信号执行频率调制。对于那些对软件无线电感兴趣的人来说,这应该是一个有价值的练习。当我们生成 FM 波形的数字化表示时,我们正在创建一系列可以发送到数模转换器、过滤、放大和传输的值。这允许您在不设计调制电路的情况下实现定制的 RF 系统。
集成基带信号
Scilab 命令integrate()允许我们创建一系列值,这些值对应于现有值系列的不定积分。(这与定积分相反,定积分只是给出从指定下限到指定上限的曲线下面积。)让我们从基本正弦波开始:
缓冲区长度 = 2000; n = 0:(缓冲区长度 - 1); 基带频率 = 5e3; 采样频率 = 1e6; 基带信号 = sin(2*%pi*n / (采样频率/基带频率)); 绘图(n,基带信号)

integrate ()命令需要四个参数。前两个是字符串(Scilab字符串用单引号或双引号括起来),第三个是数字,第四个是一串数字。
- 个参数:要积分的函数,例如'f(x) = sin(x)',但没有'f(x) ='部分。
- 第二个参数:在作为个参数给出的表达式中找到的积分变量,例如“x”。
- 第三个参数:开始积分过程的下限。
- 第四个参数:建立多个集成上限的一系列值。
例如:
BasebandSignal_integrated = integrate('sin(2*%pi*n / (SamplingFrequency/BasebandFrequency))', 'n', 0, n);
绘图(n,BasebandSignal_integrated)
我们知道正弦波的积分是一个负余弦波(加上一个常数),integrate()命令确实产生了一个负余弦波,但是它有一个直流偏移,幅度与原始信号。这些问题很容易纠正。首先,我们通过取整个波形的平均值并从数组中的每个值中减去它来消除直流偏移:
BasebandSignal_integrated = BasebandSignal_integrated - 均值(BasebandSignal_integrated); 绘图(n,BasebandSignal_integrated)

接下来,我们将数组中的所有值除以值:
BasebandSignal_integrated = BasebandSignal_integrated ./ max(BasebandSignal_integrated); 绘图(n,BasebandSignal_integrated)

合并音频文件
我了一个人说“电路”这个词的 mp3 录音,然后我将它转换为 WAV 文件并将其加载到 Scilab 中:
audio = wavread("C:\Users\Robert\Downloads\circuit.wav");
生成的阵列有超过 28,000 个样本;我将其缩减为 2000 个样本摘录。我还调换了它(使用 ' 运算符),使其尺寸为 1×2000 而不是 2000×1:
音频=音频(11000:12999); 音频=音频'; 情节(n,音频)

集成音频信号
我们将使用inttrap()命令来执行我们的音频数据的集成。看起来这个过程在数学上等同于我们上面使用integrate()命令所做的;我使用inttrap()的原因是没有办法(据我所知)直接使用integrate()处理不能用表达式(如“sin(x)”)表示的数据。
inttrap ()命令使用梯形插值来计算由数据数组表示的波形的定积分(即,曲线下的面积)。通过重复使用上限稳定增加的inttrap() ,我们可以生成一系列与integrate()生成的不定积分相对应的定积分;如果您使用此技术生成正弦波的不定积分,您会发现结果与通过integrate()获得的结果一致。
以下是我用来集成阵列音频的命令:
因为我=1:2000 > audio_integrated(i) = inttrap(audio(1:i)); > 结束
现在我们将移除 DC 偏移(如果波形有一个)并将值缩放到大约 –1 到 +1 的范围内。
audio_integrated = audio_integrated - 意思是(audio_integrated); audio_integrated = audio_integrated ./ max(audio_integrated); 情节(n,audio_integrated)

改变采样率
在执行调制之前,我们还需要做一件事。在上一篇文章中,我们通过在载波频率上生成正弦波并将集成基带信号作为附加相位项包括在内来创建 FM 信号。不过,一个重要的细节是我们使用的基带采样频率对于载频信号来说足够高。我在本文中使用的 WAV 文件的采样频率为 44.1 kHz,这意味着我们不能将基带采样频率用于调制过程——采样频率必须至少是调制信号中频率的两倍,对于一个现实的系统,您可能希望采样频率至少是载波频率的五倍。
那么下一步就是提高集成基带信号的采样率。我们可以使用intdec()命令来做到这一点。例如,假设载波频率为 800 kHz,我们决定使用 4.41 MHz 采样频率。这意味着我们将按如下方式修改audio_integrated数组:
SampleRate_IncreaseFactor = 4.41e6 / 44.1e3; audio_integrated_upsampled = intdec(audio_integrated, SampleRate_IncreaseFactor);
以下两个图传达了采样率修改的结果。

波形看起来相同,横轴显示上采样信号的数据点是原始信号的 100 倍。
版权与免责声明
凡本网注明“出处:维库电子市场网”的所有作品,版权均属于维库电子市场网,转载请必须注明维库电子市场网,https://www.dzsc.com,违反者本网将追究相关法律责任。
本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。
如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。
- 深度解析信号链设计:从基础架构到实战要领2026/8/26 16:54:02
- 从频率到应用,晶振与时钟芯片选型攻略2026/8/21 16:34:37
- 低频时钟下,边沿辐射问题的成因与排查策略2026/8/19 16:20:02
- 深入剖析!高速信号串联电容尺寸的选择真相2026/7/20 15:26:04
- GMSL 信号链中的错误藏身之处2026/7/17 15:58:11









