很多时候,信号处理算法的基础是复数运算,尤其在涉及频谱分析时复数运算十分常见,因此本文介绍常见的复数运算及C语言代码。
下面提到的函数,基于以下数据结构:

typedef  struct xy
{float re;float im;
}comp;
  • 复数加法
    函数申明 :comp cadd(comp a,comp b);
    函数体:
comp cadd(comp a,comp b){comp c;c.re = a.re + b.re;c.im = a.im + b.re;return c;
}
  • 复数减法
    函数申明 :comp csub(comp a,comp b);'
    函数体:
comp csub(comp a,comp b){comp c;c.re = a.re - b.re;c.im = a.im - b.re;return c;
}
  • 复数乘法
    函数申明:comp cmul(comp a,comp b);
    函数体 :
comp cmul(comp a,comp b){comp c;c.re = (a.re*b.re) - (a.im*b.im);c.im = (a.re*b.im) + (b.re*a.im);return c;
}
  • 复数求模
    函数申明:float cabs1(comp a);
    函数体 :
float cabs1(comp a){float c;c =(float)sqrt(a.re*a.re + a.im*a.im);return c;
}
  • 复数求共轭
    函数申明:comp conjg(comp a);
    函数体 :
comp conjg(comp a){comp c;c.re = a.re;c.im = -a.im;return c;
}
  • 函数的幂
    函数申明:comp cpow(comp a,double n);
    函数说明:这里幂次不是整数幂,不能使用for循环执行复数乘法,这里介绍另外一种方法。根据欧拉公式,任意一个复数可以表示成一个实数和三角函数相乘的形式:
    Z n = ( ρ e j w ) n = ρ n e j w n = ρ n ( cos ⁡ ( w n ) + j sin ⁡ ( w n ) ) {{Z}^{n}}={{(\rho {{e}^{jw}})}^{n}}={{\rho }^{n}}{{e}^{jwn}}={{\rho }^{n}}(\cos (wn)+j\sin (wn)) Zn=(ρejw)n=ρnejwn=ρn(cos(wn)+jsin(wn))

comp cpow(comp a,double n){comp c;float cabs; float cthe;cabs = cabs1(a) ^ n;  //先求(a的模的N次幂);cthe = atan(a.im/a.re); // 再求相角 wc.re = cabs*cos(cthe*n);c.im = cabs*sin(cthe*n);return c;
}

复数的常规运算与C代码实现相关推荐

  1. 《Python Cookbook 3rd》笔记(3.6):复数的数学运算

    复数的数学运算 问题 你写的最新的网络认证方案代码遇到了一个难题,并且你唯一的解决办法就是使用复数空间.再或者是你仅仅需要使用复数来执行一些计算操作. 解法 复数可以用使用函数 complex(rea ...

  2. 复数加减java_用java实现复数的加减乘除运算

    用java实现复数的加减乘除运算 1. 背景 老师在课上布置了几道java编程题,此为其中之一 2. 题目内容 设计一个类Complex,用于封装对复数的下列操作: (1)一个带参数的构造函数,用于初 ...

  3. 定义复数类Complex,重载运算符“+”,使之用于复数的加法运算

    定义复数类Complex,重载运算符"+",使之用于复数的加法运算.将运算符函数重载为非成员.非友元的普通函数. C++代码实现: #include<iostream> ...

  4. 使用c++实现复数类的运算

    复数的运算 一.前言 二.复数的运算 1.头文件(Complex.h) 2.源文件(实现函数) 3.源文件(测试函数) 4.运行截图 三.总结 一.前言 为了更深入的学习c++,小编将带领大家一起使用 ...

  5. java 复数的除法_复数的除法运算

    [java]代码库/** * 复数的除法运算. * c = a / b 的运算法则是: * c.实部 = (a.实部 * b.实部 + a.虚部 * b.虚部) / (b.实部 *b.实部 + b.虚 ...

  6. java中两个复数相乘_用java实现复数的加减乘除运算

    用java实现复数的加减乘除运算 1. 背景 老师在课上布置了几道java编程题,此为其中之一 2. 题目内容 设计一个类Complex,用于封装对复数的下列操作: (1)一个带参数的构造函数,用于初 ...

  7. 关于SubSonic3.0生成的表名自动加复数(s)的“用户代码未处理SqlException,对象名‘xxxs‘无效”异常处理

    关于SubSonic3.0生成的表名自动加复数(s)的"用户代码未处理SqlException,对象名'xxxs'无效"异常处理 参考文章: (1)关于SubSonic3.0生成的 ...

  8. 1、定义一个复数类Complex,使得下面的代码能够工作。 Complex c1(3,5); Complex c2=4.5; c1.add(c2); c1.show();

    一.问题描述 1.定义一个复数类Complex,使得下面的代码能够工作. Complex c1(3,5); Complex c2=4.5; c1.add(c2); c1.show(); #includ ...

  9. 复数的 加减乘除 运算。

    用友员运算符重载函数 来实现复数的加减乘除运算. 两个复数a+bi和c+di加减乘除的方法如下: 加法:(a+bi)+(c+di)=(a+c)+(b+d)i 减法:(a+bi)-(c+di)=(a-c ...

最新文章

  1. oracle断电 ora01110,oracle在做备份的时候断电
  2. java 网络传输中发送byte[]和接收到的不一致_为什么JAVA对象需要实现序列化?
  3. C语言实现拓扑排序topological sort算法(附完整源码)
  4. 第一章 1 常用库之time
  5. TeXworks 0.4.5 发布,TeX 编辑器
  6. android对象申明,Kotlin中的对象表达式和对象声明的具体使用
  7. 12345组成三个不重复数java,求大神帮忙!五子棋!只能识别按顺序识别!例如 12345 不能...
  8. APAC SharePoint Conference 2007 讲义与资源下载
  9. C++智能指针shared_ptr使用实例
  10. 为什么苹果Mac的初始用户不在“/etc/passwd”文件中?
  11. 单片机蓝牙模块与手机蓝牙通信(3)
  12. php 评论插件,typecho插件:TeComment评论增强插件
  13. oracle no cache,seuqnce的cache,nocache,order,noorder的理解,望指正!
  14. Springboot+mybatis
  15. 电子日历插件(阳历转阴历工具...)
  16. 2017京东实习生笔试题之异或
  17. 黄金时代 —— Pytorch学习记录(一)
  18. 分布式多爬虫系统——架构设计
  19. Flink Checkpoint/Savepoint
  20. Kafka 核心源码解读【一】--日志模块

热门文章

  1. 搜索引擎优化SEO初探
  2. 设置Outlook关闭但不退出程序
  3. SAP 英文调研提纲---20多页珍贵收藏
  4. linux 删除文件(批量删除文件)
  5. 流程图怎么画的使用教程
  6. 什么东西改善睡眠?大多数失眠人群都不知道的好物
  7. python编程else是什么意思_python条件判断if/else - python基础入门(8)
  8. 渡一教育公开课web前端开发JavaScript精英课学习笔记(二十六)JavaScript 打砖块
  9. python解析json多层_python解析多层json操作示例
  10. 【CS-Notes】工欲善其事必先利其器(Code、Git、Docker、Linux)