FFT变换后的复数数据读取问题:Exception has occurred: ValueErrorcould not convert string to float: ‘[9598.-0.j]‘

93 篇文章 4 订阅
7 篇文章 0 订阅

问题描述

问题的起源在于,使用FFT进行了快速傅里叶变换,然后想将数据送入神经网络进行识别。但是读取数据时候却出现了问题。

这道题的本质原因在于傅里叶变换后得到的数据为复数,然后系统没有识别出来,于是报错:字符串不能转化为浮点型。报错图片如下

解决方案

(1)为函数增加了数据类型

不行。

X = np.loadtxt(datatxt, dtype = complex)

报错如下:

Exception has occurred: ValueError

complex() arg is a malformed string

(2)使用genfromtxt函数

仍旧不行,数据读不出来。

X = np.genfromtxt(datatxt, delimiter='\t', dtype=np.complex128)

虽然不报错,但是读出来的数据都是空的:

 但是真实的数据是这样的

(3)不保存中间数据

不要保存FFT生成的数据到txt里,直接送入到CNN即可。

因为数据写入txt的时候,需要强制转换成str格式,但是在使用loadtxt加载这堆复数数据的时候,就出现了问题。

于是我想如果取消中间数据,避免数据转换的错误,是不是就可以直接计算出结果呢?

答案是可以的。

除此之外,进行数据预处理的时候也需要根据个人的数据情况看看是否需要取消预处理。

然后这个复数导入问题就从计算过程中解决了。中间数据如果能够直接使用,就不必再单独保存起来。

仅供参考。

我看github讨论区有大牛说是python版本问题,新版本可以直接导入,这个如果不得不进行从txt导入数据时候可以试着更新一下。

https://github.com/numpy/numpy/pull/5666

这位重写了FFT函数和特征提取的算法,仅供参考。

https://github.com/jindongwang/activityrecognition/issues/4

这篇是傅里叶变换

FFT快速傅里叶变换的python实现 - 思念殇千寻 - 博客园

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ACMSunny

赠人玫瑰,手有余香。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值