java - FFT 除法 复数,Java

标签 java matlab fft division polynomials

我在 matlab 文件中看到了这一点。 freqz.m 文件

   h = dividenowarn(fft([b zeros(1,s*nfft-nb)]),...
                   fft([a zeros(1,s*nfft-na)])).';

示例:

x = fft([1.5,0,1,0,0,0,1,3]')

x =

   6.5000          
   3.6213 + 2.1213i
  -0.5000 + 3.0000i
  -0.6213 + 2.1213i
   0.5000          
  -0.6213 - 2.1213i
  -0.5000 - 3.0000i
   3.6213 - 2.1213i

现在

y = fft([1,1,2,3,1,0,9,3]')

y =

20.0000          
 0.7071 + 6.2929i
-9.0000 + 5.0000i
-0.7071 - 7.7071i
 6.0000          
-0.7071 + 7.7071i
-9.0000 - 5.0000i
 0.7071 - 6.2929i

fft 并不重要,我需要如何执行此操作..

z = (x./y)

z =

   0.3250          
   0.3968 - 0.5309i
   0.1840 - 0.2311i
  -0.2656 - 0.1050i
   0.0833          
  -0.2656 + 0.1050i
   0.1840 + 0.2311i
   0.3968 + 0.5309i

我需要一个算法(没有 matlab 代码),我需要 Java,或者一步一步的微积分...

» a

a =

   1.0000 + 2.0000i   3.0000 + 4.0000i   5.0000 + 6.0000i        0          

» b

b =

   5.0000 + 2.0000i   1.0000 - 2.0000i        0                  0          

» c = a./b
Warning: Divide by zero.

c =

   0.3103 + 0.2759i  -1.0000 + 2.0000i      Inf +    Infi      NaN -    NaNi

» 

最佳答案

./ 运算符执行逐元素除法。您可以从除号之前的 . 看出它是逐元素运算符。这意味着结果将是一个 vector ,其中的元素是使用规则 x[i]/y[i] 获得的。

如果您想在 Java 中执行此操作,您需要实现自己的 Complex 数字类,编写 division code您自己,或者您可以使用Apache commons math Complex类。

假设您使用 apache commons,Java 中的按元素划分将如下所示:

List<Complex> elementWiseDivision(List<Complex> dividend, List<Complex> divisor) 
{
  if (dividend.size() != divisor.size()) 
  { 
    throw new IllegalArgumentException("Must have same size"); 
  }
  List<Complex> result = new ArrayList<>();
  // using iterators to get O(n) with both LinkedList and ArrayList inputs
  for (Iterator<Complex> xit = dividend.iterator(), yit = divisor.iterator(); xit.hasNext();) 
  {
    result.add(xit.next().divide(yit.next()));
  }
  return result;
}

关于java - FFT 除法 复数,Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27831957/

相关文章:

java - Java从文本文件中读取记录

matlab - 如何在 m 的窗口中选择序列的 n 个元素? (matlab)

Python numpy 相当于来自 MATLAB 的 bandpower()

java - 如何将一组离散数据传输到频域并返回(最好是无损)

python - numpy.fft.fft 中参数 n 的影响是什么

java - 从 ArrayList 的 ArrayList 中删除重复项

java - 如何安装 Selenium 作为 Unix 守护进程?

Java:验证文本字段输入是否仅包含字母字符

matlab - 带 softmax 激活的神经网络

matlab - 求解 Ax = B ==> 错误 : Matrix is close to singular or badly scaled 形式的矩阵