高数
文章平均质量分 71
高数
@一头雾水@
这个作者很懒,什么都没留下…
展开
-
傅里叶变换 一维和二维快速傅里叶变换(代码和性能的优化)
在类FourierUtils的fftProgress方法中,有这个代码段,我们可以将Complext.euler(flag * i)提前计算好,设置大小为2次幂N,如果没有的话,也要调节到2次幂N。我们设置大小为N,求得复数数组,前半部分存储给FFT使用的,后半部分给IFFT使用。中测试大小为行为800,列为900时,花费了时间4s多。而现在只要2s左右。中测试大小为1百万时,花费了时间6s多。2、其中复数类和工具类代码不变。5、测试一维快速傅里叶。6、测试二维快速傅里叶。的复数类和工具类代码。原创 2019-11-13 23:35:56 · 17648 阅读 · 3 评论 -
傅里叶变换 二维快速傅里叶变换(快速的二维离散傅里叶变换、分治法)
可以看作M行N列的二维数组,先对每行做一维FFT,将结果作为一个新的二维数组。而在处理二维IFFT的时候,跟二维FFT差不多,只要在公共方法中控制正负值,来区分是FFT还是IFFT。如果是FFT的话,刚开始的时候,要将double转为Complex复数,如果是IFFT的话,要在结束的时候,将每个值都除以MN。还要将DFT的代码注释了,不然跑不动。设置行列大小都为128的时候,发现二维DFT和二维FFT差距还是很明显的,随着行列的增大,差距只会越来越大。的写法,相结合的话,就可以很容易得出二维FFT的写法。原创 2019-11-13 17:20:03 · 18475 阅读 · 2 评论 -
傅里叶变换 二维离散傅里叶变换(代码和性能的优化)
而在处理二维IDFT的时候,跟二维DFT差不多,只要在公共方法中控制正负值,来区分是DFT还是IDFT。如果是DFT的话,刚开始的时候,要将double转为Complex复数,如果是IDFT的话,要在结束的时候,将每个值都除以MN。中处理60行60列的二维数据,就要花费6s多的时间,而现在只要不到1s的时间。而且处理200行200列的二维数据是,也只要7s多的时间。可以看作M行N列的二维数组,先对每行做一维DFT,将结果作为一个新的二维数组。2、一维DFT的处理代码。3、二维DFT的处理代码。原创 2019-11-13 17:02:30 · 15161 阅读 · 5 评论 -
傅里叶变换 一维快速傅里叶变换(快速的一维离散傅里叶变换、分治法)
1、一维离散傅里叶变换DFT。DFT:(Discrete Fourier Transform)离散傅里叶变换是傅里叶变换在时域和频域上都呈离散的形式,将信号的时域采样变换为其DTFT的频域采样。在形式上,变换两端(时域和频域上)的序列是有限长的,而实际上这两组序列都应当被认为是离散周期信号的主值序列。即使对有限长的离散信号作DFT,也应当将其看作其周期延拓的变换。根据欧拉公式,其中,i为虚数单位,即。公式:,可看作:。2、一维逆离散傅里叶变换IDFT。原创 2019-11-12 21:46:57 · 18889 阅读 · 4 评论 -
傅里叶变换 二维离散傅里叶变换
DFT:(Discrete Fourier Transform)离散傅里叶变换是傅里叶变换在时域和频域上都呈离散的形式,将信号的时域采样变换为其DTFT的频域采样。会发现原数组和经过离散傅里叶变换DFT及逆离散傅里叶变换IDFT之后的数组是一模一样的,就可以验证出算法和公式是对的。二维离散傅里叶因为涉及到4个嵌套循环,时间复杂度十分的大,所以在实际应用场景上得不到使用,现在的照片小的差不多也要500*500的大小,但是二维离散傅里叶处理大小60*60的时候,就已经显得十分的吃力了。2、生成随机的二维数组。原创 2019-11-07 17:09:37 · 20529 阅读 · 13 评论 -
傅里叶变换 一维离散傅里叶变换
DFT:(Discrete Fourier Transform)离散傅里叶变换是傅里叶变换在时域和频域上都呈离散的形式,将信号的时域采样变换为其DTFT的频域采样。在形式上,变换两端(时域和频域上)的序列是有限长的,而实际上这两组序列都应当被认为是离散周期信号的主值序列。会发现原数组和经过离散傅里叶变换DFT及逆离散傅里叶变换IDFT之后的数组是一模一样的,就可以验证出算法和公式是对的。可以先将随机数组的大小设小点,然后将打印日志的代码开起来,这样子才会对流程有更多的了解。2、生成随机的一维数组。原创 2019-11-07 00:03:28 · 21043 阅读 · 19 评论 -
高数 分治法的矩阵乘法
当矩阵是行列是512的话,可以看到分治法花费的时间比普通的算法来的慢。很大一份原因是因为java其实使用c语言写的,底层库是c语言,如果我们直接使用c语言来写的话,结果可能就不是这样子了。当矩阵是行列是1024的话,可以看到分治法花费的时间比普通的算法来的快。当矩阵越大的时候,这个差距就会越明显。原创 2019-11-11 18:03:39 · 14950 阅读 · 1 评论 -
高数 矩阵的基本运算
1、介绍。矩阵的运算,本质上就是二维数组的运算。2、公共代码。/*** 打印二维数组* @param a 二维数组a*//*** 打印二维数组* @param a 二维数组a* @param precision 如果是浮点型的话,保留几位小数*/i++) {j++) {/*** 打印二维数组* @param a 二维数组a* @param precision 如果是浮点型的话,保留几位小数*/i++) {j++) {原创 2019-11-11 16:40:34 · 16704 阅读 · 1 评论 -
高数 高斯公式、泰勒公式、麦克劳伦公式、欧拉公式、傅里叶公式
1)FFT(Fast Fourier Transformation)是离散傅氏变换(DFT)的快速算法,即利用计算机计算离散傅里叶变换(DFT)的高效、快速计算方法的统称。如果定义在一个包含aa的区间上的函数f在a点处n+1次可导,那么对于这个区间上的任意x都可以用泰勒公式来表示。如果函数足够平滑的话,在已知函数在某一点的各阶导数值的情况之下,泰勒公式可以用这些导数值做系数构建一个多项式来近似函数在这一点的邻域中的值。就是欧拉公式中的x,而且cos(-x)=cosx,sin(-x)=-sinx。原创 2019-11-07 10:33:30 · 19058 阅读 · 1 评论 -
高数 复数的四则运算
1、代码。package com.zxj.reptile.utils.number;public class Complex { private double real;//实数 private double image;//虚数 public Complex() { real = 0; image = 0; } ...原创 2019-11-07 09:53:33 · 16120 阅读 · 0 评论 -
高数 向量、矩阵回顾
一、一些术语1、线性运算。 是加法和数量乘法, 在实数领域像只包含加法和数量乘法二元一次方程就属于线性运算,如y=3x+5。如果是矩阵的加法和数乘运算,就称为矩阵的线性运算;如果是向量的加法和数乘运算,统称为向量的线性运算。对于不同线性运算一般有不同的形式,它们满足交换律、结合律、分配律等。2、隐函数:可以转为显函数如,不可转为显函数如。3、显函数:y=2x+1。...原创 2019-10-23 21:42:28 · 14243 阅读 · 0 评论