100.Complex[]同时储存实数和虚数两组double的数组 C#例子

在信号处理中,IQ 数据(In-phase and Quadrature)通常表示复数形式的信号,其中实部表示同相分量,虚部表示正交分量。Complex[] data 是一个包含 IQ 数据的数组,每个元素是一个复数,表示一个信号样本。

为了自动计算每个信号样本的幅度和相位,可以使用以下方法:

示例代码

cs 复制代码
using System;
using System.Numerics; // 引入复数支持

public class SignalProcessor
{
    public static void CalculateMagnitudeAndPhase(Complex[] data, out double[] magnitudes, out double[] phases)
    {
        int length = data.Length;
        magnitudes = new double[length];
        phases = new double[length];

        for (int i = 0; i < length; i++)
        {
            // 计算幅度
            magnitudes[i] = data[i].Magnitude;

            // 计算相位
            phases[i] = Math.Atan2(data[i].Imaginary, data[i].Real);
        }
    }
}

public class Program
{
    public static void Main()
    {
        // 示例 IQ 数据
        Complex[] data = new Complex[]
        {
            new Complex(3, 4),
            new Complex(1, 1),
            new Complex(-1, 1),
            new Complex(-1, -1),
            new Complex(1, -1)
        };

        // 计算幅度和相位
        double[] magnitudes;
        double[] phases;
        SignalProcessor.CalculateMagnitudeAndPhase(data, out magnitudes, out phases);

        // 输出结果
        for (int i = 0; i < data.Length; i++)
        {
            Console.WriteLine($"Sample {i + 1}: Magnitude = {magnitudes[i]}, Phase = {phases[i]} radians");
        }
    }
}

输出示例

假设输入的 IQ 数据为:

复制代码
Complex[] data = new Complex[]
{
    new Complex(3, 4),
    new Complex(1, 1),
    new Complex(-1, 1),
    new Complex(-1, -1),
    new Complex(1, -1)
};

输出结果将是:

复制代码
Sample 1: Magnitude = 5, Phase = 0.9272952180016122 radians
Sample 2: Magnitude = 1.4142135623730951, Phase = 0.7853981633974483 radians
Sample 3: Magnitude = 1.4142135623730951, Phase = 2.356194490192345 radians
Sample 4: Magnitude = 1.4142135623730951, Phase = -2.356194490192345 radians
Sample 5: Magnitude = 1.4142135623730951, Phase = -0.7853981633974483 radians

说明

  • 幅度:表示信号的强度,单位通常为伏特(V)或分贝(dB)。

  • 相位 :表示信号的角度,单位为弧度(radians)。如果需要转换为度数,可以使用 phases[i] * (180 / Math.PI)

希望这个介绍和示例代码对你有帮助!如果你有其他问题,欢迎随时提问。

相关推荐
luj_176827 分钟前
星火科技助力边远地区防病攻坚
c语言·开发语言·c++·经验分享·算法
geats人山人海3 小时前
数据结构第六章c语言 树的存储下二叉树的概念和存储
c语言·数据结构·算法
漂流瓶jz4 小时前
UVA-12627 奇怪的气球膨胀 题解答案代码 算法竞赛入门经典第二版
算法·图论·递归·aoapc·算法竞赛入门经典·uva·12627
jarvisuni4 小时前
DeepSeekFlash前端依旧拉垮,而且变慢了很多!
前端·javascript·算法
kobesdu4 小时前
流形上的优化:SO(3)与SE(3)的广义加减法在FAST-LIO中如何简化状态估计
人工智能·算法·fastlio
白狐_7985 小时前
408 数据结构算法题 01:线性表暴力求解保分指南
java·数据结构·算法
乐观勇敢坚强的老彭5 小时前
C++信奥:开关门、开关灯问题
开发语言·c++·算法
冻柠檬飞冰走茶5 小时前
PTA基础编程题目集 7-31 字符串循环左移(C语言实现)
c语言·开发语言·数据结构·算法
Hi李耶5 小时前
【LeetCode】4-寻找两个正序数组的中位数
算法·leetcode·职场和发展
图灵机z5 小时前
【算法提高课】AcWing 1027. 方格取数 长期攻克提高课-day3(3/219)
算法