public void run() { for (int s = firstSlice; s < lastSlice; s++) { for (int r = 0; r < rows; r++) { fftColumns.realInverseFull(a[s][r], scale); } } } });
public void run() { for (int s = firstSlice; s < lastSlice; s++) { for (int r = 0; r < rows; r++) { fftColumns.realInverseFull(a[s][r], scale); } } } });
/** * Computes 1D inverse DFT of real data leaving the result in <code>a</code> * . This method computes the full real inverse transform, i.e. you will get * the same result as from <code>complexInverse</code> called with all * imaginary part equal 0. Because the result is stored in <code>a</code>, * the size of the input array must greater or equal 2*n, with only the * first n elements filled with real data. * * @param a data to transform * @param scale if true then scaling is performed */ public void realInverseFull(DoubleLargeArray a, boolean scale) { realInverseFull(a, 0, scale); }
/** * Computes 1D inverse DFT of real data leaving the result in <code>a</code> * . This method computes the full real inverse transform, i.e. you will get * the same result as from <code>complexInverse</code> called with all * imaginary part equal 0. Because the result is stored in <code>a</code>, * the size of the input array must greater or equal 2*n, with only the * first n elements filled with real data. * * @param a data to transform * @param scale if true then scaling is performed */ public void realInverseFull(DoubleLargeArray a, boolean scale) { realInverseFull(a, 0, scale); }
/** * Computes 1D inverse DFT of real data leaving the result in <code>a</code> * . This method computes the full real inverse transform, i.e. you will get * the same result as from <code>complexInverse</code> called with all * imaginary part equal 0. Because the result is stored in <code>a</code>, * the size of the input array must greater or equal 2*n, with only the * first n elements filled with real data. * * @param a data to transform * @param scale if true then scaling is performed */ public void realInverseFull(double[] a, boolean scale) { realInverseFull(a, 0, scale); }
/** * Computes 1D inverse DFT of real data leaving the result in <code>a</code> * . This method computes the full real inverse transform, i.e. you will get * the same result as from <code>complexInverse</code> called with all * imaginary part equal 0. Because the result is stored in <code>a</code>, * the size of the input array must greater or equal 2*n, with only the * first n elements filled with real data. * * @param a data to transform * @param scale if true then scaling is performed */ public void realInverseFull(double[] a, boolean scale) { realInverseFull(a, 0, scale); }
public void run() { for (int s = firstSlice; s < lastSlice; s++) { int idx1 = s * sliceStride; for (int r = 0; r < rows; r++) { System.arraycopy(a, idx1 + r * rowStride, temp2[s][r], 0, columns); fftColumns.realInverseFull(temp2[s][r], scale); } } } });
public void run() { for (int s = firstSlice; s < lastSlice; s++) { int idx1 = s * sliceStride; for (int r = 0; r < rows; r++) { System.arraycopy(a, idx1 + r * rowStride, temp2[s][r], 0, columns); fftColumns.realInverseFull(temp2[s][r], scale); } } } });
public void run() { double[] temp = new double[twon3]; for (int s = firstSlice; s >= lastSlice; s--) { int idx1 = s * sliceStride; int idx2 = s * twoSliceStride; for (int r = rows - 1; r >= 0; r--) { System.arraycopy(a, idx1 + r * rowStride, temp, 0, columns); fftColumns.realInverseFull(temp, scale); System.arraycopy(temp, 0, a, idx2 + r * twoRowStride, twon3); } } } });
public void run() { double[] temp = new double[twon3]; for (int s = firstSlice; s >= lastSlice; s--) { int idx1 = s * sliceStride; int idx2 = s * twoSliceStride; for (int r = rows - 1; r >= 0; r--) { System.arraycopy(a, idx1 + r * rowStride, temp, 0, columns); fftColumns.realInverseFull(temp, scale); System.arraycopy(temp, 0, a, idx2 + r * twoRowStride, twon3); } } } });
public void run() { for (long s = firstSlice; s < lastSlice; s++) { long idx1 = s * sliceStridel; for (long r = 0; r < rowsl; r++) { LargeArrayUtils.arraycopy(a, idx1 + r * rowStridel, temp2, s * rowsl * twon3 + r * twon3, columnsl); fftColumns.realInverseFull(temp2, s * rowsl * twon3 + r * twon3, scale); } } } });
public void run() { for (long s = firstSlice; s < lastSlice; s++) { long idx1 = s * sliceStridel; for (long r = 0; r < rowsl; r++) { LargeArrayUtils.arraycopy(a, idx1 + r * rowStridel, temp2, s * rowsl * twon3 + r * twon3, columnsl); fftColumns.realInverseFull(temp2, s * rowsl * twon3 + r * twon3, scale); } } } });
public void run() { for (int r = firstRow; r < lastRow; r++) { double[] row = new double[2 * columns]; System.arraycopy(elements[r], 0, row, 0, columns); fftRows.realInverseFull(row, scale); C.viewRow(r).assign(row); } } });
public void run() { DoubleLargeArray temp = new DoubleLargeArray(twon3); for (long s = firstSlice; s >= lastSlice; s--) { long idx1 = s * sliceStridel; long idx2 = s * twoSliceStride; for (long r = rowsl - 1; r >= 0; r--) { LargeArrayUtils.arraycopy(a, idx1 + r * rowStridel, temp, 0, columnsl); fftColumns.realInverseFull(temp, scale); LargeArrayUtils.arraycopy(temp, 0, a, idx2 + r * twoRowStride, twon3); } } } });
public void run() { DoubleLargeArray temp = new DoubleLargeArray(twon3); for (long s = firstSlice; s >= lastSlice; s--) { long idx1 = s * sliceStridel; long idx2 = s * twoSliceStride; for (long r = rowsl - 1; r >= 0; r--) { LargeArrayUtils.arraycopy(a, idx1 + r * rowStridel, temp, 0, columnsl); fftColumns.realInverseFull(temp, scale); LargeArrayUtils.arraycopy(temp, 0, a, idx2 + r * twoRowStride, twon3); } } } });
public void run() { for (int c = firstColumn; c < lastColumn; c++) { double[] column = new double[2 * rows]; System.arraycopy(viewColumn(c).copy().elements(), 0, column, 0, rows); fftColumns.realInverseFull(column, scale); C.viewColumn(c).assign(column); } } });
realInverseFull(new DoubleLargeArray(a), offa, scale); } else { final int twon = 2 * n;
/** * Returns new complex matrix which is the inverse of the discrete Fourier * (IDFT) transform of this matrix. * * @return the inverse of the discrete Fourier transform (IDFT) of this * matrix. */ public DenseDComplexMatrix1D getIfft(boolean scale) { int oldNthreads = ConcurrencyUtils.getNumberOfThreads(); ConcurrencyUtils.setNumberOfThreads(ConcurrencyUtils.nextPow2(oldNthreads)); final double[] elems; if (isNoView == true) { elems = elements; } else { elems = (double[]) this.copy().elements(); } DenseDComplexMatrix1D c = new DenseDComplexMatrix1D(size); final double[] elementsC = (c).elements(); System.arraycopy(elems, 0, elementsC, 0, size); if (fft == null) { fft = new DoubleFFT_1D(size); } fft.realInverseFull(elementsC, scale); ConcurrencyUtils.setNumberOfThreads(oldNthreads); return c; }
double[] row = new double[2 * columns]; System.arraycopy(elements[r], 0, row, 0, columns); fftRows.realInverseFull(row, scale); C.viewRow(r).assign(row);
double[] column = new double[2 * rows]; System.arraycopy(viewColumn(c).copy().elements(), 0, column, 0, rows); fftColumns.realInverseFull(column, scale); C.viewColumn(c).assign(column);