-void\r
-ProcessSignal::shuffleNaturalToFourierOrder (double* pdVector, const int n)\r
-{\r
- double* pdTemp = new double [n];\r
- int i;\r
- if (n % 2) { // Odd\r
- int iHalfN = (n - 1) / 2;\r
- \r
- pdTemp[0] = pdVector[iHalfN];\r
- for (i = 0; i < iHalfN; i++)\r
- pdTemp[i + 1] = pdVector[i + 1 + iHalfN];\r
- for (i = 0; i < iHalfN; i++)\r
- pdTemp[i + iHalfN + 1] = pdVector[i];\r
- } else { // Even\r
- int iHalfN = n / 2;\r
- pdTemp[0] = pdVector[iHalfN];\r
-#if USE_BROKEN_SHUFFLE\r
- for (i = 0; i < iHalfN; i++)\r
- pdTemp[i + 1] = pdVector[i + iHalfN];\r
- for (i = 0; i < iHalfN - 1; i++)\r
- pdTemp[i + iHalfN + 1] = pdVector[i];\r
-#else\r
- for (i = 0; i < iHalfN - 1; i++)\r
- pdTemp[i + 1] = pdVector[i + iHalfN + 1];\r
- for (i = 0; i < iHalfN; i++)\r
- pdTemp[i + iHalfN] = pdVector[i];\r
-#endif\r
- }\r
- \r
- for (i = 0; i < n; i++)\r
- pdVector[i] = pdTemp[i];\r
- delete pdTemp;\r
-}\r
-\r
-void\r
-ProcessSignal::shuffleNaturalToFourierOrder (std::complex<double>* pdVector, const int n)\r
-{\r
- std::complex<double>* pdTemp = new std::complex<double> [n];\r
- int i;\r
- if (n % 2) { // Odd\r
- int iHalfN = (n - 1) / 2;\r
- \r
- pdTemp[0] = pdVector[iHalfN];\r
- for (i = 0; i < iHalfN; i++)\r
- pdTemp[i + 1] = pdVector[i + 1 + iHalfN];\r
- for (i = 0; i < iHalfN; i++)\r
- pdTemp[i + iHalfN + 1] = pdVector[i];\r
- } else { // Even\r
- int iHalfN = n / 2;\r
- pdTemp[0] = pdVector[iHalfN];\r
-#if USE_BROKEN_SHUFFLE\r
- for (i = 0; i < iHalfN; i++)\r
- pdTemp[i + 1] = pdVector[i + iHalfN];\r
- for (i = 0; i < iHalfN - 1; i++)\r
- pdTemp[i + iHalfN + 1] = pdVector[i];\r
-#else\r
- for (i = 0; i < iHalfN - 1; i++)\r
- pdTemp[i + 1] = pdVector[i + iHalfN + 1];\r
- for (i = 0; i < iHalfN; i++)\r
- pdTemp[i + iHalfN] = pdVector[i];\r
-#endif\r
- }\r
- \r
- for (i = 0; i < n; i++)\r
- pdVector[i] = pdTemp[i];\r
- delete [] pdTemp;\r
-}\r
-\r
-\r
-void\r
-ProcessSignal::shuffleNaturalToFourierOrder (float* pdVector, const int n)\r
-{\r
- float* pdTemp = new float [n];\r
- int i;\r
- if (n % 2) { // Odd\r
- int iHalfN = (n - 1) / 2;\r
- \r
- pdTemp[0] = pdVector[iHalfN];\r
- for (i = 0; i < iHalfN; i++)\r
- pdTemp[i + 1] = pdVector[i + 1 + iHalfN];\r
- for (i = 0; i < iHalfN; i++)\r
- pdTemp[i + iHalfN + 1] = pdVector[i];\r
- } else { // Even\r
- int iHalfN = n / 2;\r
- pdTemp[0] = pdVector[iHalfN];\r
-#if USE_BROKEN_SHUFFLE\r
- for (i = 0; i < iHalfN; i++)\r
- pdTemp[i + 1] = pdVector[i + iHalfN];\r
- for (i = 0; i < iHalfN - 1; i++)\r
- pdTemp[i + iHalfN + 1] = pdVector[i];\r
-#else\r
- for (i = 0; i < iHalfN - 1; i++)\r
- pdTemp[i + 1] = pdVector[i + iHalfN + 1];\r
- for (i = 0; i < iHalfN; i++)\r
- pdTemp[i + iHalfN] = pdVector[i];\r
-#endif\r
- }\r
- \r
- for (i = 0; i < n; i++)\r
- pdVector[i] = pdTemp[i];\r
- delete pdTemp;\r
-}\r
-\r
-\r
-\r
-void\r
-ProcessSignal::shuffleFourierToNaturalOrder (double* pdVector, const int n)\r
-{\r
- double* pdTemp = new double [n];\r
- int i;\r
- if (n % 2) { // Odd\r
- int iHalfN = (n - 1) / 2;\r
- \r
- pdTemp[iHalfN] = pdVector[0];\r
- for (i = 0; i < iHalfN; i++)\r
- pdTemp[i + 1 + iHalfN] = pdVector[i + 1];\r
- for (i = 0; i < iHalfN; i++)\r
- pdTemp[i] = pdVector[i + iHalfN + 1];\r
- } else { // Even\r
- int iHalfN = n / 2;\r
- pdTemp[iHalfN] = pdVector[0];\r
- for (i = 0; i < iHalfN; i++)\r
- pdTemp[i] = pdVector[i + iHalfN];\r
- for (i = 0; i < iHalfN - 1; i++)\r
- pdTemp[i + iHalfN + 1] = pdVector[i+1];\r
- }\r
- \r
- for (i = 0; i < n; i++)\r
- pdVector[i] = pdTemp[i];\r
- delete pdTemp;\r
-}\r
-\r
-\r
-void\r
-ProcessSignal::shuffleFourierToNaturalOrder (std::complex<double>* pdVector, const int n)\r
-{\r
- std::complex<double>* pdTemp = new std::complex<double> [n];\r
- int i;\r
- if (n % 2) { // Odd\r
- int iHalfN = (n - 1) / 2;\r
- \r
- pdTemp[iHalfN] = pdVector[0];\r
- for (i = 0; i < iHalfN; i++)\r
- pdTemp[i + 1 + iHalfN] = pdVector[i + 1];\r
- for (i = 0; i < iHalfN; i++)\r
- pdTemp[i] = pdVector[i + iHalfN + 1];\r
- } else { // Even\r
- int iHalfN = n / 2;\r
- pdTemp[iHalfN] = pdVector[0];\r
- for (i = 0; i < iHalfN; i++)\r
- pdTemp[i] = pdVector[i + iHalfN];\r
- for (i = 0; i < iHalfN - 1; i++)\r
- pdTemp[i + iHalfN + 1] = pdVector[i+1];\r
- }\r
- \r
- for (i = 0; i < n; i++)\r
- pdVector[i] = pdTemp[i];\r
- delete [] pdTemp;\r
-}\r
-\r
-\r
-\r
-\r
-void\r
-ProcessSignal::shuffleFourierToNaturalOrder (float* pVector, const int n)\r
-{\r
- float* pTemp = new float [n];\r
- int i;\r
- if (n % 2) { // Odd\r
- int iHalfN = (n - 1) / 2;\r
- \r
- pTemp[iHalfN] = pVector[0];\r
- for (i = 0; i < iHalfN; i++)\r
- pTemp[i + 1 + iHalfN] = pVector[i + 1];\r
- for (i = 0; i < iHalfN; i++)\r
- pTemp[i] = pVector[i + iHalfN + 1];\r
- } else { // Even\r
- int iHalfN = n / 2;\r
- pTemp[iHalfN] = pVector[0];\r
- for (i = 0; i < iHalfN; i++)\r
- pTemp[i] = pVector[i + iHalfN];\r
- for (i = 0; i < iHalfN - 1; i++)\r
- pTemp[i + iHalfN + 1] = pVector[i+1];\r
- }\r
- \r
- for (i = 0; i < n; i++)\r
- pVector[i] = pTemp[i];\r
- delete [] pTemp;\r
-}\r
-\r