I asked a question some days ago and it was very well answer. However, I have a new one. I don't understand why the phase of the discrete fourier transformation is not correct. It has the correct answer, but it also has other points that are not correct.
Here, the correct analytical answer:
FourierTransform[Exp[-t]*UnitStep[t], t, w,
FourierParameters -> {1, -1}]
Plot[Abs[-(I/(-I + 2*Pi*f))], {f, -5, 5}, PlotRange -> All]
Plot[Arg[-(I/(-I + 2*Pi*f))], {f, -5, 5}, PlotRange -> All]
Here, the numerical results I obtained:
signal[i_] := Exp[-(i*samplingPeriode)]*UnitStep[(i*samplingPeriode)]
initialTime = -10;
finalTime = 10;
signalDuration = finalTime - initialTime;
bandwidth = 50;
nyquistRate = 2*bandwidth;
nyquistSamplingPeriode = 1/nyquistRate;
samplingFrequency = 2*nyquistRate;
samplingPeriode = 1/samplingFrequency;
numberOfSamples = signalDuration/samplingPeriode;
yValuesSampledSignal =
Table[signal[i], {i, initialTime/samplingPeriode,
finalTime/samplingPeriode,samplingPeriode}];
xValuesSampledSignal =
Table[i*samplingPeriode, {i, initialTime/samplingPeriode,
finalTime/samplingPeriode,samplingPeriode}];
sampledSignal =
Partition[Riffle[xValuesSampledSignal, yValuesSampledSignal], 2];
yValuesDiscreteFourierTransform =
samplingPeriode*
Fourier[yValuesSampledSignal, FourierParameters -> {1, -1}];
rotatedYValuesDiscreteFourierTransform =
RotateRight[yValuesDiscreteFourierTransform, numberOfSamples/2];
xValuesDiscreteFourierTransform =
Table[i*(1/signalDuration), {i, -(numberOfSamples/2),
numberOfSamples/2}];
discreteFourierTransform =
Partition[
Riffle[xValuesDiscreteFourierTransform,
yValuesDiscreteFourierTransform], 2];
absYValuesDiscreteFourierTransform =
Abs[rotatedYValuesDiscreteFourierTransform];
absDiscreteFourierTransform =
Partition[
Riffle[xValuesDiscreteFourierTransform,
absYValuesDiscreteFourierTransform], 2];
argYValuesDiscreteFourierTransform =
Arg[rotatedYValuesDiscreteFourierTransform];
argDiscreteFourierTransform =
Partition[
Riffle[xValuesDiscreteFourierTransform,
argYValuesDiscreteFourierTransform], 2];
yValuesRecontructedSignal = (1/samplingPeriode)*
InverseFourier[yValuesDiscreteFourierTransform,
FourierParameters -> {1, -1}];
xValuesRecontructedSignal = xValuesSampledSignal;
reconstructedSignal =
Partition[
Riffle[xValuesRecontructedSignal, yValuesRecontructedSignal], 2];
ListLinePlot[sampledSignal, PlotRange -> All]
ListPlot[Take[
absDiscreteFourierTransform, {numberOfSamples/2 - 100,
numberOfSamples/2 + 100}], Filling -> Axis, PlotRange -> All]
ListPlot[Take[
argDiscreteFourierTransform, {numberOfSamples/2 - 100,
numberOfSamples/2 + 100}], Filling -> Axis, PlotRange -> All]
ListLinePlot[reconstructedSignal, PlotRange -> All]




yValuesSampledSignal = Table[signal[i], {i, 1, signalDuration/samplingPeriode}]; xValuesSampledSignal = Table[i*samplingPeriode, {i, 1, signalDuration/samplingPeriode}];– andre314 Dec 26 '15 at 23:29