Skip to main content
added 129 characters in body
Source Link
hotpaw2
  • 36k
  • 10
  • 49
  • 94

Yes. You can do the calculation. But, no, it's not a shortcut.

If you want to obtain your DFT magnitudes fast (e.g. using the O(NlogN) FFT algorithm), then you will need the complex math (or its computational equivalent). This is because the cosine and sine forms of the DFT basis vectors are orthogonal, and you need both to completely be able to represent arbitrary input waveforms. The sine portions of the basis vectors are represented by the imaginary components of an FFT's complex result. So the full complex result of an FFT needs to be computed to end up with enough information for a magnitude or amplitude result.

If a slow DFT computation is acceptable, then you could just compute the cosine components using strictly real arithmetic and then separately compute the sine components also using reals. Then compute the hypotenuse of the real triangle for the amplitude. No complex numbers needed. But this method is O(N^2), which would take a lot longer.

For just magnitude results (computed slowly), N Goertzel filters is another possibility, and may save in trig function calls.

Yes. You can do the calculation. But, no, it's not a shortcut.

If you want to obtain your DFT magnitudes fast (e.g. using the O(NlogN) FFT algorithm), then you will need the complex math (or its computational equivalent). This is because the cosine and sine forms of the DFT basis vectors are orthogonal, and you need both to completely be able to represent arbitrary input waveforms. The sine portions of the basis vectors are represented by the imaginary components of an FFT's complex result. So the full complex result of an FFT needs to be computed to end up with enough information for a magnitude or amplitude result.

If a slow DFT computation is acceptable, then you could just compute the cosine components using strictly real arithmetic and then separately compute the sine components also using reals. Then compute the hypotenuse of the real triangle for the amplitude. No complex numbers needed. But this method is O(N^2), which would take a lot longer.

Yes. You can do the calculation. But, no, it's not a shortcut.

If you want to obtain your DFT magnitudes fast (e.g. using the O(NlogN) FFT algorithm), then you will need the complex math (or its computational equivalent). This is because the cosine and sine forms of the DFT basis vectors are orthogonal, and you need both to completely be able to represent arbitrary input waveforms. The sine portions of the basis vectors are represented by the imaginary components of an FFT's complex result. So the full complex result of an FFT needs to be computed to end up with enough information for a magnitude or amplitude result.

If a slow DFT computation is acceptable, then you could just compute the cosine components using strictly real arithmetic and then separately compute the sine components also using reals. Then compute the hypotenuse of the real triangle for the amplitude. No complex numbers needed. But this method is O(N^2), which would take a lot longer.

For just magnitude results (computed slowly), N Goertzel filters is another possibility, and may save in trig function calls.

added 10 characters in body
Source Link
hotpaw2
  • 36k
  • 10
  • 49
  • 94

Yes. You can do the calculation. But, no, it's not a shortcut.

If you want to obtain your DFT magnitudes fast (e.g. using the O(NlogN) FFT algorithm), then you will need the complex math (or its computational equivalent). This is because the cosine and sine forms of the DFT basis vectors are orthogonal, and you need both to completely be able to represent arbitrary input waveforms. The sine portions of the basis vectors are represented by the imaginary components of the DFT'san FFT's complex result. So the full complex result of an FFT needs to be computed to end up with enough information for a magnitude or amplitude result.

If a slow DFT computation is acceptable, then you could just compute the cosine components using strictly real arithmetic and then separately compute the sine components also using reals. Then compute the hypotenuse of the real triangle for the amplitude. No complex numbers needed. But this method is O(N^2), which would take a lot longer.

Yes. You can do the calculation. But, no, it's not a shortcut.

If you want to obtain your DFT magnitudes fast (e.g. using the O(NlogN) FFT algorithm), then you will need the complex math (or its computational equivalent). This is because the cosine and sine forms of the DFT basis vectors are orthogonal, and you need both to completely be able to represent arbitrary input waveforms. The sine portions of the basis vectors are represented by the imaginary components of the DFT's complex result. So the full complex result needs to be computed.

If a slow DFT computation is acceptable, then you could just compute the cosine components using strictly real arithmetic and then separately compute the sine components also using reals. Then compute the hypotenuse of the real triangle for the amplitude. No complex numbers needed. But this method is O(N^2), which would take a lot longer.

Yes. You can do the calculation. But, no, it's not a shortcut.

If you want to obtain your DFT magnitudes fast (e.g. using the O(NlogN) FFT algorithm), then you will need the complex math (or its computational equivalent). This is because the cosine and sine forms of the DFT basis vectors are orthogonal, and you need both to completely be able to represent arbitrary input waveforms. The sine portions of the basis vectors are represented by the imaginary components of an FFT's complex result. So the full complex result of an FFT needs to be computed to end up with enough information for a magnitude or amplitude result.

If a slow DFT computation is acceptable, then you could just compute the cosine components using strictly real arithmetic and then separately compute the sine components also using reals. Then compute the hypotenuse of the real triangle for the amplitude. No complex numbers needed. But this method is O(N^2), which would take a lot longer.

added 2 characters in body
Source Link
hotpaw2
  • 36k
  • 10
  • 49
  • 94

Yes. You can do the calculation. But, no, it's not a shortcut.

If you want to obtain your DFT magnitudes fast (e.g. using the O(NlogN) FFT algorithm), then you will need the complex math (or its computational equivalent), unless you data is strictly symmetric, or strictly antisymmetric. This is because the cosine and sine forms of the DFT basis vectors are orthogonal, and you need both to completely be able to represent arbitrary input waveforms. And the The sine portions of the basis vectors are represented by the imaginary components of the DFT's complex result. So the full complex result needs to be computed.

If a slow DFT computation is acceptable, then you could just compute the cosine components using strictly real matharithmetic and then separately compute the sine components also using real mathreals. Then compute the hypotenuse of the real triangle for the amplitude. No complex numbers needed. But this method is O(N^2), which would take a lot longer.

Yes. You can do the calculation. But, no, it's not a shortcut.

If you want to obtain your DFT magnitudes fast (e.g. using the O(NlogN) FFT algorithm), then you will need the complex math (or its computational equivalent), unless you data is strictly symmetric, or strictly antisymmetric. This is because the cosine and sine forms of the DFT basis vectors are orthogonal, and you need both to completely be able to represent arbitrary input waveforms. And the sine portions of the basis vectors are represented by the imaginary components of the complex result.

If a slow DFT computation is acceptable, then you could just compute the cosine components using real math and then separately compute the sine components using real math. Then compute the hypotenuse of the real triangle for the amplitude. No complex numbers needed. But this method is O(N^2), which would take a lot longer.

Yes. You can do the calculation. But, no, it's not a shortcut.

If you want to obtain your DFT magnitudes fast (e.g. using the O(NlogN) FFT algorithm), then you will need the complex math (or its computational equivalent). This is because the cosine and sine forms of the DFT basis vectors are orthogonal, and you need both to completely be able to represent arbitrary input waveforms. The sine portions of the basis vectors are represented by the imaginary components of the DFT's complex result. So the full complex result needs to be computed.

If a slow DFT computation is acceptable, then you could just compute the cosine components using strictly real arithmetic and then separately compute the sine components also using reals. Then compute the hypotenuse of the real triangle for the amplitude. No complex numbers needed. But this method is O(N^2), which would take a lot longer.

Source Link
hotpaw2
  • 36k
  • 10
  • 49
  • 94
Loading