php 做fft,什么是numpy.fft.rfft和numpy.fft.irfft及其在MATLA...
numpy中的实际FFT使用这样的事实:实值函数的傅立叶变换就是说“偏斜对称”,即频率k处的值是频率Nk处k = 1的值的复共轭. N-1(正确的术语是Hermitian).因此,rfft仅返回与非正频率相对应的结果部分.
对于大小为N的输入,rfft函数返回对应于N / 2或低于N / 2的频率的FFT输出部分.因此,如果N是偶数(所有频率从0到N / 2),则rfft的输出大小为N / 2 1,如果N为奇数,则输出(N 1)/ 2(所有频率从0到(N-1)/ 2).观察功能层(n / 2 1)为偶数和奇数输入大小返回正确的输出大小.
所以要在matlab中重现rfft
function rfft = rfft(a)
ffta = fft(a);
rfft = ffta(1:(floor(length(ffta)/2)+1));
end
例如
a = [1,1,1,1,-1,-1,-1,-1];
rffta = rfft(a)
会产生
rffta =
Columns 1 through 3:
0.00000 + 0.00000i 2.00000 - 4.82843i 0.00000 + 0.00000i
Columns 4 through 5:
2.00000 - 0.82843i 0.00000 + 0.00000i
现在将它与python进行比较
>>> np.fft.rfft(a)
array([ 0.+0.j , 2.-4.82842712j, 0.-0.j ,
2.-0.82842712j, 0.+0.j ])
再现irfft
要重现irfft的基本功能,您需要从rfft输出中恢复丢失的频率.如果所需的输出长度是偶数,则输出长度可以从输入长度计算为2(m – 1).否则它应该是2(m – 1)1.
以下代码可行.
function irfft = irfft(x,even=true)
n = 0; % the output length
s = 0; % the variable that will hold the index of the highest
% frequency below N/2, s = floor((n+1)/2)
if (even)
n = 2 * (length(x) - 1 );
s = length(x) - 1;
else
n = 2 * (length(x) - 1 )+1;
s = length(x);
endif
xn = zeros(1,n);
xn(1:length(x)) = x;
xn(length(x)+1:n) = conj(x(s:-1:2));
irfft = ifft(xn);
end
现在你应该有
>> irfft(rfft(a))
ans =
1.00000 1.00000 1.00000 1.00000 -1.00000 -1.00000 -1.00000 -1.00000
并且
abs( irfft(rfft(a)) - a ) < 1e-15
对于奇数输出长度,你得到
>> irfft(rfft(a(1:7)),even=false)
ans =
1.0000 1.0000 1.0000 1.0000 -1.0000 -1.0000 -1.0000
php 做fft,什么是numpy.fft.rfft和numpy.fft.irfft及其在MATLA...相关推荐
- C语言使用CUDA中cufft函数做GPU加速FFT运算,与调用fftw函数的FFT做运算速度对比
目录 任务介绍 环境所需相关软件下载与安装 C语言:不调用库的GPU加速FFT代码 C语言:调用fftw库的未使用GPU的FFT代码 C语言:调用cufft库的GPU加速FFT gnuplot安装画图 ...
- matlab函数fftshift,matlab中fft算法_matlab中fftshift函数_matlab中fft函数的用法(2)
plot([0 : PointNum/2 - 1], x1(1:PointNum/2)); grid on subplot(3,1,2); % [REX IMX] am = sqrt(abs(REX. ...
- 离散傅里叶变换DFT与FFT,MATLAB的FFT函数使用(原创)——如何使用fft()绘制出真正的频谱图像
以前一直对MATLAB中fft()函数的使用一直存在疑惑,为什么要加一 些参数,并且如何确定这些参数,也查了许多资料,但很多都感觉只是 表面一说根本没有讲清其本质.但随着学习的推进,慢慢有所领悟,所 ...
- 数据分析之numpy基础/matplotlib绘图/numpy常用函数/杂项功能
文章目录 数据分析 numpy概述 numpy`历史` numpy的核心:多维数组 numpy基础 ndarray数组 内存中的ndarray对象 ndarray数组对象的特点 ndarray数组对象 ...
- python之numpy之伪逆numpy.linalg.pinv
文章目录 解释及实现 笔记 伪逆在最简单的线性回归中的应用 解释及实现 记XXX的伪逆为pinv(X)pinv(X)pinv(X),则有 pinv(X)=(XTX)−1XTpinv(X)=(X^TX) ...
- numpy 随机数_数据分析numpy基础看着一篇就够了
1,Numpy基础数据结构 2,Numpy通用函数 3,Numpy索引及切片 4,Numpy随机数 5,Numpy数据的输入输出 1,Numpy基础数据结构 NumPy数组是一个多维数组对象,称为nd ...
- python numpy常用操作、Numpy 多维数组、矩阵相乘、矩阵乘以向量
python numpy常用操作 Numpy基本操作 # 导入numpy import numpy as np # 生成numpy数组 x = np.array([1.0, 2.0, 3.0]) pr ...
- numpy中求解范数(numpy.linalg.norm)以及各阶范数详解
numpy.linalg.norm 语法 numpy.linalg.norm(x,ord=None,axis=None,keepdims=False) Parameters x: array_like ...
- [转载] python numpy.random.randn()与numpy.random.rand()的区别 (正态分布公式)(标准正态分布 standard normal distribution
参考链接: Python中的numpy.random.randn 引用文章: numpy.random.randn()与numpy.random.rand()的区别 https://www.cnblo ...
最新文章
- OpenCV后投影,利用阈值函数分割指定区域生成掩膜,通过直方图分布查找其他图像相同区域。
- 解决cisco路由器cpu占用率100%问题
- code iban 是有什么组成_「面试」new String(abc)和abc有什么区别?反编译看看原理吧...
- 如何快速学会嵌入式?
- Mysql的两种“排名第几且有可能为空的记录”写法(力扣176)
- 认识Java异步编程
- 软银准备以超400亿美元向英伟达出售Arm,交易最快下周达成
- JAVA 第1课 开始前的准备
- PTA 2-1 列出连通集【DFS+BFS基础】
- 2017级C语言大作业 - 奇怪的大冒险
- 微信小游戏源码及H5开源小程序游戏源码1000套
- 抽奖活动软件 html,webAPP最常用的活动促销案例:大转盘H5抽奖特效
- 两种MBR分区表恢复方法
- 外星人 AW3423DWF 评测
- HDOJ 6045-Is Derek lying?
- 80后年轻老板创业心经
- java大马后门_【猥琐流】制作一个隐藏在黑页下的大马并且添加后门
- Scrapy--CrawlSpider
- 思维模型 DISC色彩性格
- CA6140机床法兰盘(代号831004)课程设计——说明书 CAD图纸 工艺卡 过程卡……
热门文章
- 06 / LiveVideoStack主编观察:六岁的Frame.io被收购
- ​手把手教你如何进行 Golang 单元测试
- Python pip更换升级源
- go基础库之环境变量的获取与设置以及如何使用默认值
- 【PAT甲级 最长公共子串】1007 Maximum Subsequence Sum (25 分) C++ 全部AC
- 听说版本会说话,你相信吗?
- 分布式数据库产品总结
- Windows Azure Storage论文解读
- wpf加载上千张图片部分图片不显示_开源WPF控件库MaterialDesignInXAML推荐
- charles 手机证书下载安装