有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

matlab FFT除法复数,Java

我在matlab文件中看到了这个。弗雷克斯。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

» 

共 (1) 个答案

  1. # 1 楼答案

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

    如果您想在Java中实现这一点,您需要自己实现自己的Complex数字类来编写division code,或者您可以使用Apache commons math ^{}

    假设您使用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;
    }