gpt4 book ai didi

java - FastSineTransformer - 用零填充数组以适应长度

转载 作者:行者123 更新时间:2023-12-01 04:53:51 25 4
gpt4 key购买 nike

我正在尝试在Java中实现用于图像混合的泊松解算器。用五星级方法去离散化后,真正的工作开始了。为此,我对颜色值执行以下三个步骤:

  1. 对行和列使用正弦变换
  2. 乘以特征值
  3. 对行和列使用反正弦变换

到目前为止,这有效。为了在 Java 中进行正弦变换,我使用了 Apache Commons Math 包。

但是FastSineTransformer有两个限制:

  1. 数组中的第一个值必须为零(没关系,第二个值才是真正的问题)
  2. 输入的长度必须是2的幂

所以现在我的摘录长度是 127、255 等等。(我在开头插入一个零,这样 1 和 2 就满足了)这很愚蠢,因为我想选择自由调整我的摘录的大小。

我的问题是:有没有办法扩展我的数组,例如长度为 100 以满足 Apache FastSineTransformer 的限制?

在 FastFourierTransfomer 类中提到,您可以用零填充以获得 2 的幂。但是当我这样做时,我得到了错误的结果。也许我做错了,但我真的不知道当我用零填充时是否需要记住什么

最佳答案

据我所知 http://books.google.de/books?id=cOA-vwKIffkC&lpg=PP1&hl=de&pg=PA73#v=onepage&q&f=false和来源http://grepcode.com/file/repo1.maven.org/maven2/org.apache.commons/commons-math3/3.2/org/apache/commons/math3/transform/FastSineTransformer.java?av=f

规则如下:

  • 根据实现,数据集大小应为 2 的幂 - 为了算法保证 O(n*log(n)) 执行时间。
  • 根据 James S. Walker 的说法,函数必须是奇数,即上述假设必须得到满足,并且实现信任这一点。
  • 根据实现,由于某种原因,第一个和中间的元素必须为 0:x'[0] = x[0] = 0,x'[k] = x[k] 如果 1 <= k < N,x'[N] = 0,x'[k] = -x[2N-k] 如果 N + 1 <= k < 2N。

对于您的情况,当您的数据集可能不是 2 的幂时,我建议您可以调整大小并用零填充间隙,而不违反上述规则。但我建议先引用这本书。

关于java - FastSineTransformer - 用零填充数组以适应长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14497858/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com