把双精度复数转换为有理数形式的实部和虚部
来源:互联网 发布:创业加盟app软件 编辑:程序博客网 时间:2024/05/01 11:18
Mathematica中涉及到下面的几个函数:
RealDigits
把小数表示成各个位数及其十进制指数的形式(但丢失符号位)
FromDigits
从RealDigits
的结果,还原这个数,但表示为有理数形式(无法恢复丢失的符号位信息)
Sign
考虑到符号的丢失,需要通过Sign
函数获取符号,然后相乘。
这些主要对实数操作,对复数操作的时候,还需要用Im
和Re
函数提取出虚部和实部之后分别处理;然后把实部和虚部乘以虚数单位相加得到转换并复原的复数。
对于向量和矩阵操作的时候,可能用到Map
, Apply
之类的命令(函数)。
举个例子可能更加生动具有可操作性。比如,这个mat二进制数据格式的文件(如果这个链接失效了,用户可以自己用随机数发生器生成一些数据作为练习之用),包含了
如何把它们都变成有理数表示的形式呢?
先用Import
导入数据:
data=Import["e:\\Downloads\\data1.mat"];
所得到的data
是一个包含了两个元素的List
:
复矩阵data[[1]]
中,而实数向量 data[[2]]
中。转换它们的代码分别是:
(Map[FromDigits, RealDigits@(Re@data[[1]]), {2}]* Sign[data[[1]] // Re] + I *Sign[data[[1]] // Im]* Map[FromDigits, RealDigits@(Im@data[[1]]), {2}])
和
(FromDigits @@@ RealDigits[data[[2]]])*Sign[data[[2]]]
从上面可以看出,向量的转换简单一些;实数的转换尤其是。但对矩阵、尤其是复数矩阵作转换时,颇为繁琐。好在万变不离其宗。稍作调整之后,这样就完成了转化。
下面这些图片不知道怎么回事??
0 0
- 把双精度复数转换为有理数形式的实部和虚部
- 将单词转换为它的复数形式
- Java:把汉字为unicode形式的字符串和把unicode字符串转换成汉字
- 抽象数据类型复数和有理数的代码实现
- 类型转换问题(java会把byte,short和char的运算操作转换为int类型即低精度自动向高精度转换)
- Java:转换汉字为unicode形式的字符串和转换unicode形式字符串转换成汉字
- 转换汉字为unicode形式的字符串和转换unicode形式字符串转换成汉字
- MATLAB求复数的实部和虚部
- 把双精度数转换成字符
- 第5.7节 把某年中第几天的表示形式转换为某月某日的日期表示形式
- 自己写的把IP地址转换为XXX.XXX.XXX.XXX形式的函数
- .NET把DataTable转换为List〈Model〉的形式
- Office EXCEL如何批量把以文本形式存储的数字转换为数字
- C和指针之函数递归实现把amount表示的值转换为单词形式written_amount(unsigned int amount,char *buffer)
- C# string字符串转换为字节数组和转换为16进制的字符串形式
- 两个有理数的和
- unicode编码转换为字符的形式
- 在复数类中自定义类型转换函数实现复数和非复数之间的运算
- vmware 虚拟机网络配置
- ip首部校验和计算
- Linux Vi 删除全部内容,删除某行到结尾,删除某段内容 的方法
- No default constructor found; nested exception is java.lang.NoSuchMethodException: com.rong.tms.serv
- JS学习5(面向对象)
- 把双精度复数转换为有理数形式的实部和虚部
- 广播
- 两位数乘以两位数
- PC_Lint在source insight中的集成与配置
- CentOS + PyCharm 环境下使用 LIBSVM(及 unresolved reference 问题的解决)
- Word2016 中插入数学公式和代码高亮
- hibernate注解多字段查询
- 手机归属地及卡类型信息接口(python版)
- 从 MVC 到 MVP