OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5470|回复: 9

stm32f103能进行复数运算吗?

[复制链接]

3

主题

22

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
233
金钱
233
注册时间
2016-4-24
在线时间
62 小时
发表于 2016-5-24 00:51:14 | 显示全部楼层 |阅读模式
1金钱
在keil5里天假了c99之后  添加了头文件#include“complex.h”  能够定义complex 类型  但是不知道如何表示一个变量的实部和虚部?

最佳答案

查看完整内容[请看2#楼]

示例: [mw_shl_code=cpp,true] double complex a = 3 + 4*I; printf("creal = %g\r\n", creal(a)); printf("cimag = %g\r\n", cimag(a)); printf("carg = %g\r\n", carg(a)); [/mw_shl_code] complex.h 下面有常用的三角函数、反三角函数、指数对数函数、绝对值等,已经声明,直接调用就行了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

1097

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3571
金钱
3571
注册时间
2014-12-2
在线时间
365 小时
发表于 2016-5-24 00:51:15 | 显示全部楼层
示例:

[mw_shl_code=cpp,true]
    double complex a = 3 + 4*I;
    printf("creal = %g\r\n", creal(a));
    printf("cimag = %g\r\n", cimag(a));
    printf("carg = %g\r\n", carg(a));
    [/mw_shl_code]

z.png


complex.h 下面有常用的三角函数、反三角函数、指数对数函数、绝对值等,已经声明,直接调用就行了



坚决不用寄存器,拒绝重复造轮子。
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11569
金钱
11569
注册时间
2014-4-1
在线时间
1320 小时
发表于 2016-5-24 20:57:46 | 显示全部楼层
xkwy 发表于 2016-5-24 20:11
示例:

[mw_shl_code=cpp,true]


厉害,这也知道!


回复

使用道具 举报

6

主题

1097

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3571
金钱
3571
注册时间
2014-12-2
在线时间
365 小时
发表于 2016-5-24 21:05:37 | 显示全部楼层
xuande 发表于 2016-5-24 20:57
厉害,这也知道!

其实半个小时前我对此一无所知,看了一下.h文档和百度现学现卖罢

坚决不用寄存器,拒绝重复造轮子。
回复

使用道具 举报

3

主题

22

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
233
金钱
233
注册时间
2016-4-24
在线时间
62 小时
 楼主| 发表于 2016-5-26 08:50:59 | 显示全部楼层
本帖最后由 circle 于 2016-5-26 09:22 编辑
xkwy 发表于 2016-5-24 00:51
示例:

[mw_shl_code=cpp,true]

你这个是在keil5中编译的吗? 我已经添加头文件#include“complex.h”但是还是在定义        double complex a = 3 + 4*I; 它时出错。
回复

使用道具 举报

6

主题

1097

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3571
金钱
3571
注册时间
2014-12-2
在线时间
365 小时
发表于 2016-5-26 09:48:56 | 显示全部楼层
circle 发表于 2016-5-26 08:50
你这个是在keil5中编译的吗? 我已经添加头文件#include“complex.h”但是还是在定义        double comp ...

keil520
坚决不用寄存器,拒绝重复造轮子。
回复

使用道具 举报

3

主题

22

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
233
金钱
233
注册时间
2016-4-24
在线时间
62 小时
 楼主| 发表于 2016-5-26 14:18:50 | 显示全部楼层
本帖最后由 circle 于 2016-5-26 16:04 编辑

C:\Users\Administrator.USER-20151005RN\Desktop
QQ截图20160526141050.png
回复

使用道具 举报

3

主题

22

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
233
金钱
233
注册时间
2016-4-24
在线时间
62 小时
 楼主| 发表于 2016-5-26 16:03:12 | 显示全部楼层

C:\Users\Administrator.USER-20151005RN\Desktop\QQ截图20160526141050.png
回复

使用道具 举报

3

主题

22

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
233
金钱
233
注册时间
2016-4-24
在线时间
62 小时
 楼主| 发表于 2016-5-26 16:04:59 | 显示全部楼层

这是怎么回事?
回复

使用道具 举报

3

主题

22

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
233
金钱
233
注册时间
2016-4-24
在线时间
62 小时
 楼主| 发表于 2016-5-26 16:06:26 | 显示全部楼层
xkwy 发表于 2016-5-24 00:51
示例:

[mw_shl_code=cpp,true]

下面是我的complex.h文件   你看下和你的一样吗?

/*
* complex.h: ISO/IEC 9899:1999 (C99), section 7.3
*
* Copyright (C) ARM Ltd., 2006. All rights reserved
* RCS $Revision: 179217 $
* Checkin $Date: 2013-03-12 14:03:19 +0000 (Tue, 12 Mar 2013) $
* Revising $Author: kwalker $
*/

#if __STDC_VERSION__ < 199901L && !defined(__GNUC__)
#  error complex.h requires c99 mode or gnu mode
#endif
#define __ARMCLIB_VERSION 5040049

/*
  In order to get the float, double, and long double versions
  this file includes itself twice, for a total of three inclusions,
  each time defining __CFLOAT __FLOAT and __CFUNC appropriately
  so that we get three versions of each function
*/

/* defined once we have been included thrice */
#ifndef __complex_h

#if defined(__complex_h_twice) && !defined(__complex_h_thrice)
#  define __complex_h_thrice
#  undef __CFLOAT
#  define __CFLOAT long double complex
#  undef __FLOAT
#  define __FLOAT long double
#  undef __CFUNC
#  define __CFUNC(x) x##l
#endif /* complex_h_thrice */


#if defined(__complex_h_once) && !defined(__complex_h_twice)
#  define __complex_h_twice
#  undef __CFLOAT
#  define __CFLOAT float complex
#  undef __FLOAT
#  define __FLOAT float
#  undef __CFUNC
#  define __CFUNC(x) x##f
#endif /* complex_h_twice */


#ifndef __complex_h_once
#  define __complex_h_once

#  define complex _Complex
#  define _Complex_I ((float _Complex)__I__)

   /* imaginary types not supported in gnu mode */
#  if !defined(__GNUC__) && !defined(__ARM_NO_IMAGINARY_TYPE)
#    define imaginary _Imaginary
#    define _Imaginary_I ((float _Imaginary)__I__)
#    define I _Imaginary_I
#  else
#    define I _Complex_I
#  endif

#  define __CFLOAT double complex
#  define __FLOAT double
#  define __CFUNC(x) x

/* _ARMABI may have been defined by math.h */
#  ifndef _ARMABI
#    define _ARMABI __declspec(__nothrow)
#  endif

#endif /* __complex_h_once */


/* trigonometric */
extern _ARMABI __CFLOAT __CFUNC(cacos)(__CFLOAT /*z*/);
extern _ARMABI __CFLOAT __CFUNC(casin)(__CFLOAT /*z*/);
extern _ARMABI __CFLOAT __CFUNC(catan)(__CFLOAT /*z*/);
extern _ARMABI __CFLOAT __CFUNC(ccos)(__CFLOAT /*z*/);
extern _ARMABI __CFLOAT __CFUNC(csin)(__CFLOAT /*z*/);
extern _ARMABI __CFLOAT __CFUNC(ctan)(__CFLOAT /*z*/);

/* hyperbolic */
extern _ARMABI __CFLOAT __CFUNC(cacosh)(__CFLOAT /*z*/);
extern _ARMABI __CFLOAT __CFUNC(casinh)(__CFLOAT /*z*/);
extern _ARMABI __CFLOAT __CFUNC(catanh)(__CFLOAT /*z*/);
extern _ARMABI __CFLOAT __CFUNC(ccosh)(__CFLOAT /*z*/);
extern _ARMABI __CFLOAT __CFUNC(csinh)(__CFLOAT /*z*/);
extern _ARMABI __CFLOAT __CFUNC(ctanh)(__CFLOAT /*z*/);

/* exponential and logarithmic */
extern _ARMABI __CFLOAT __CFUNC(cexp)(__CFLOAT /*x*/);
extern _ARMABI __CFLOAT __CFUNC(clog)(__CFLOAT /*z*/);

/* power and absolute-value */
extern _ARMABI __FLOAT __CFUNC(cabs)(__CFLOAT /*z*/);
extern _ARMABI __CFLOAT __CFUNC(cpow)(__CFLOAT /*x*/, __CFLOAT /*y*/);
extern _ARMABI __CFLOAT __CFUNC(csqrt)(__CFLOAT /*z*/);

/* manipulation */
extern _ARMABI __FLOAT __CFUNC(carg)(__CFLOAT /*z*/);
extern _ARMABI __FLOAT __CFUNC(cimag)(__CFLOAT /*z*/);
extern _ARMABI __CFLOAT __CFUNC(conj)(__CFLOAT /*z*/);
extern _ARMABI __CFLOAT __CFUNC(cproj)(__CFLOAT /*z*/);
extern _ARMABI __FLOAT __CFUNC(creal)(__CFLOAT /*z*/);


#if defined(__complex_h_thrice)
#  define __complex_h
#  undef __CFUNC
#  undef __CFLOAT
#  undef __FLOAT
#else
#  include <complex.h>
#endif

#endif /* __complex_h */

/* end of complex.h */
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-8 15:09

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表