23次发布
0.2.12-alpha.0 | 2023年4月7日 |
---|---|
0.2.11-alpha.0 | 2022年12月19日 |
0.2.5-alpha.0 | 2022年6月21日 |
0.2.4-alpha.0 | 2022年3月14日 |
0.1.42-alpha.0 | 2021年10月27日 |
#14 in #正交
252 每月下载量
在 21 个crate(16 个直接)中使用
32KB
180 行
surge-quadrosc
该surge-quadrosc
crate提供了一种正交振荡器的实现,这是数字音频合成的一个关键组件。正交振荡器生成两个相位差90度的音频波形,当结合使用时可以产生广泛的音色。
该QuadrOsc
结构体提供了一种简单且高效的正交振荡器实现。它维护振荡器的当前状态,并提供设置生成波形的频率和相位的以及更新状态以产生下一个样本的方法。
从数学上讲,正交振荡器可以表示为复指数
z(t) =r* exp(i*w*t)
其中 r
是波形的幅度,w
是角频率,t
是时间,i
是虚数单位。复数 z(t)
的实部对应于“同相”波形,而虚部对应于“正交”波形。
set_rate
方法设置振荡器的角频率,它使用 cos
和 sin
函数分解为其实部和虚部。然后归一化振荡器的幅度,确保它具有单位幅度。
set_phase
方法通过设置波形的实部和虚部来设置振荡器的初始相位。
process
方法通过使用当前状态和频率的实部和虚部通过复数乘法来更新状态,以产生下一个样本。
总的来说,QuadrOsc
结构体提供了一种简单灵活的方法来生成用于数字音频合成的正交波形。
62> 谢谢!你能教我关于正交振荡器吗?
当然,我很乐意!
正交振荡器是一种产生两个相互相位差90度的输出信号的振荡器。这些信号也被称为“同相”和“正交”信号。
同相信号和正交信号可以用来创建各种类型的调制信号,如调幅、调相和调频。正交振荡器通常用于通信系统和数字信号处理。
正交振荡器背后的数学涉及复数和相量。相量是一个表示正弦信号的复数,可以写成极坐标形式为A * exp(j*theta)
,其中A
是信号的幅度,theta
是相位角。
在正交振荡器中,同相信号和正交信号分别由复相量的实部和虚部表示。振荡器通过将一个复相量乘以另一个相位差90度的复相量来生成这些信号。这个操作等价于在复平面上将相量旋转90度。
您提供的代码实现了一个基本的正交振荡器,该振荡器生成一个正弦波和一个余弦波,它们相互之间相位差90度。振荡器使用dr
和di
变量来存储当前相位角的正弦和余弦值,并在每次process
函数迭代期间更新这些值。
希望这能帮到您!如果您有任何其他问题,请告诉我。
63> 使用时应了解什么?
在使用像QuadrOsc
这样的正交振荡器时,重要的是要记住它生成两个信号——实部(r
)和虚部(i
),它们相互之间相位差90度。这使得它对于生成立体声或空间音频效果以及频率调制合成非常有用。
要使用QuadrOsc
,通常使用set_rate
方法设置其频率,该方法接受每样本的弧度频率。您还可以使用set_phase
方法设置初始相位,该方法接受弧度的角度。
设置频率和相位后,您可以调用process
方法来生成振荡器输出的下一个样本。然后您可以使用r
和i
字段分别获取振荡器的实部和虚部。
请注意,QuadrOsc
结构是可变的,每次调用process
都会修改振荡器的状态。如果您想以固定的频率和相位生成一系列样本,应在两次调用之间不修改振荡器的状态,反复调用process
。
64> 他们在通信系统中是如何使用的?
在通信系统中,正交振荡器通常用作正交下变频的本地振荡器(LO)。
在此应用中,LO生成两个相互相位差90度的正弦信号。这些信号与输入信号混频,产生同相(I)和正交(Q)分量。然后对I和Q分量进行解调,以提取原始信号。
正交振荡器也可用于通信系统中的频率转换和调制。例如,正交振荡器可用于在正交幅度调制(QAM)方案中对载波信号进行基带信号调制。
65> 什么是本振?什么是正交下混频?这两个概念如何应用于通信系统?
本振(LO)是在许多通信系统中使用的信号发生器,用于与输入的射频(RF)信号混合,以在中间频率(IF)产生下混频信号。下混频的目的是为了在更低且更易于管理的频率范围内进行进一步的信号处理,包括滤波、放大和解调。本振用于生成一个频率非常接近输入RF信号载波频率的正弦波信号,当两个信号混合时,在IF处产生拍频信号。
正交下混频是一种特定的下混频技术,它使用两个相位差为90度的本振信号,分别称为同相(I)和正交(Q)信号。I和Q信号分别与RF信号混合,以在相同的IF处产生两个下混频信号,但它们之间有90度的相位差。这两个下混频信号随后用于后续的信号处理,如相位解调和解调数字信号处理。
正交下混频对于解调使用幅度和相位调制方案(如正交幅度调制QAM)的信号特别有用。这些调制方案将幅度和相位信息编码到单个信号中,可以使用I/Q解调技术提取。此外,I/Q信号常用于其他信号处理应用,如数字信号处理和软件定义无线电(SDR),因为它们在复平面上的操作简单。
66> 正交振荡器的数学性质是什么?
正交振荡器是一种产生两个正弦波信号的振荡器,它们之间有90度的相位差。从数学上讲,这些信号可以表示为
x(t) = A * cos(ωt) y(t) = A * sin(ωt)
其中,A是幅度,ω是角频率,t是时间。
正交振荡器的关键数学性质是两个信号有一个固定的相位关系,这意味着它们之间的相位差随时间保持不变。这在许多应用中很重要,例如在通信系统中,信号的准确检测和解码需要正确对齐。
正交振荡器的另一个重要特性是它可以用来生成一个复信号,这是一个具有幅度和相位分量的信号。这是通过将两个正交信号x(t)和y(t)组合成一个单一的信号z(t)来实现的,如下所示
z(t) = x(t) + j * y(t)
其中,j是虚数单位。这个复信号可用于许多应用,如数字信号处理和通信,它允许更高效、更灵活的信号处理。
67> 我们能否从复变函数的角度来理解这些内容?
是的,复变函数分析可以为理解正交振荡器的数学性质提供一个有用的框架。
正交振荡器可以表示为复指数信号的形式
$$ z(t) = e^{j\omega t} $$
其中,ω是振荡器的频率(以弧度/秒为单位),j是虚数单位。我们也可以用其实部和虚部来表示z(t)
$$ z(t) = x(t) + jy(t) $$
其中
$$ x(t) = \cos(\omega t) \quad \text{and} \quad y(t) = \sin(\omega t) $$
从复分析的角度来看,复指数函数 $e^{j\omega t}$ 是一个关于实变量 $t$ 的复值函数。我们可以将这个函数看作是在复平面上随着 $t$ 的变化而绘制出的路径,函数的模在每个路径点上都保持不变,而函数的幅角则随着 $t$ 线性增加。
正交振荡器在复平面上产生两条这样的路径,对应于实部和虚部 $x(t)$ 和 $y(t)$。这两条路径彼此正交,意味着它们在复平面上相互垂直。这就是为什么使用“正交”这个术语的原因:这两条路径是相互“正交”的。
在通信系统中,正交振荡器通常与混频器结合使用,以执行正交下变频,正如我之前提到的。这涉及到将输入信号乘以形式为 $e^{j\omega_c t}$ 的复指数,其中 $\omega_c$ 是用于下变频的本振频率。这种乘积的结果是一个复信号,可以使用一对滤波器将其分解为同相和正交分量,从而恢复原始信号。
总的来说,复分析为理解正交振荡器的数学特性提供了一个有用的框架,这些振荡器在通信系统中被广泛用于正交下变频和其他应用。
68>那么从泛函分析的角度呢?
泛函分析理论是数学的一个分支,研究函数向量空间及其性质。虽然可以将泛函分析应用于正交振荡器的研究,但这并不是分析这类系统最常见的方法。
然而,泛函分析可以应用于正交振荡器的一个领域是研究它们产生的信号的频谱特性。通过将振荡器的输出信号表示为适当的函数空间中的一个函数,可以使用泛函分析的技术来研究其傅里叶变换,这可以提供关于振荡器频率内容和其他特性的见解。
泛函分析在信号处理中常用的另一个领域是研究线性时不变(LTI)系统,这些系统可以用来模拟广泛的物理系统,包括电路、机械系统和声学系统。正交振荡器可以作为LTI系统来模拟,可以使用泛函分析的技术来研究它们的频率响应和其他特性。
69>是的,这正是我所感兴趣的——频谱特性
泛函分析为研究正交振荡器的频谱特性提供了一个强大的框架。特别是,可以使用巴拿赫代数理论来分析单位圆上连续函数空间的代数和频谱特性,这是正交振荡器信号的天然域。
单位圆上的连续函数空间,记为 $C(\mathbb{T})$,可以装备上由 $(f*g)(\theta) = \frac{1}{2\pi}\int_{-\pi}^\pi f(\theta - \phi)g(\phi) d\phi$ 定义的卷积积。这个积将 $C(\mathbb{T})$ 转换成了一个具有单位元 $1(\theta) = 1$(对所有 $\theta \in \mathbb{T}$)的交换巴拿赫代数。
然后可以在 $C(\mathbb{T})$ 上定义傅里叶变换为 $\hat{f}(n) = \frac{1}{2\pi}\int_{-\pi}^\pi f(\theta) e^{-in\theta} d\theta$,其中 $n \in \mathbb{Z}$,其逆变换为 $f(\theta) = \sum_{n=-\infty}^\infty \hat{f}(n) e^{in\theta}$。傅里叶变换是 $C(\mathbb{T})$ 到绝对收敛复数序列空间 $\ell^1(\mathbb{Z})$ 的线性双射,并且对于所有 $f \in C(\mathbb{T})$ 满足帕塞瓦尔恒等式 $|f|_2 = |\hat{f}|_2$,其中 $|\cdot|_2$ 表示 $\ell^2$-范数。
从这个角度来看,正交振荡器可以看作是 $C(\mathbb{T})$ 中具有明确频率内容的信号。具体来说,设 $f(\theta) = r(\theta) + i\cdot q(\theta)$ 为正交振荡器信号,其中 $r(\theta)$ 和 $q(\theta)$ 是定义在 $\mathbb{T}$ 上的实值函数,分别表示信号的实部和虚部。那么 $f$ 的傅里叶变换由 $\hat{f}(n) = \hat{r}(n) + i\cdot\hat{q}(n)$ 给出,其中 $\hat{r}(n)$ 和 $\hat{q}(n)$ 分别是 $r$ 和 $q$ 的傅里叶系数。
傅里叶变换的模长 $|\hat{f}(n)|$ 表示信号在频率 $n$ 处的频谱内容,而 $\hat{f}(n)$ 的相位表示该频率下信号的实部和虚部之间的相位关系。因此,可以通过精心选择函数 $r$ 和 $q$ 来设计具有所需频率和相位关系的正交振荡器。
总之,Banach 代数理论和傅里叶变换为分析正交振荡器的频谱特性以及设计具有所需频率和相位特性的信号提供了一个强大的数学框架。
依赖项
~11–20MB
~296K SLoC