gpt4 book ai didi

algorithm - DSP - 将采样信号从真实样本转换为复杂样本,反之亦然

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:26:30 26 4
gpt4 key购买 nike

如何将基带采样信号从实值样本转换为复值样本(实部、虚部),反之亦然。

我的样本是整数,我正在寻找一种快速(但准确)的转换算法。

C++ 示例代码(真实的,不复杂的;-)将非常受欢迎。

编辑:IPP 代码将非常受欢迎。

编辑:我正在寻找一种将 n 个真实样本转换为 n/2 个复杂样本的方法,反之亦然反之亦然,不会影响带宽。

最佳答案

添加零作为虚部在概念上是您想要执行的操作的第一步。最初你有一个真实的唯一信号,在频域中看起来像这样:

           [r0, r1, r2, r3, ...]

/-~--------\
DC +Fs/2

如果你用零填充它的虚数值,你会发现你确实有正频率和负频率作为镜像:

           [r0 + 0i, r1 + 0i, r2 + 0i, r3 + 0i, ...]

/--------~-\ /-~--------\
-Fs/2 DC +Fs/2

接下来,您将时域中的信号乘以 -Fs/4 的复音(调谐信号)。你的信号看起来像

           ----~-\ /-~--------\ /------
DC

所以现在,您过滤掉中间的一半,您会得到:

           ________/-~--------\________
DC

然后你抽取了两倍,你最终得到:

                   /-~--------\

这是你想要的。

所有这些步骤都可以在时域中高效执行。如果您注意所有中间步骤,您会注意到有很多地方乘以 0、+1、-1、+i 或 -i。此外,半带低通滤波器会有很多零点和一些对称性可以利用。因为你知道你将抽取 2,所以你只需要计算你打算保留的样本。如果您学习了代数,您会发现很多地方可以对其进行简化,以实现简洁、快速的实现。

最终,这都等同于 Hilbert 变换,但我认为当你将它分解成这样的部分时,它更容易理解。

从复数转换回实数是类似的。您将为每个其他样本用零填充它以撤消抽取。您将过滤复杂的信号以删除您刚刚引入的别名。你会把它调高 Fs/4,然后扔掉虚部。 (抱歉,我完全是 ascii 格式的...:-)

请注意,这种转换在边界附近是有损的。您必须使用无限长度的过滤器才能完美地做到这一点。

关于algorithm - DSP - 将采样信号从真实样本转换为复杂样本,反之亦然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3780921/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com