(*Rectangular pulse and its Fourier transform
by Nasser M. Abbasi
version December 27 2009*)
Manipulate[
process[a, T, t0],
Item[Grid[{
{
Control[{{a, .5, "A"}, .1, maxA, .1, ImageSize -> Small,
Appearance -> "Labeled"}],
Control[{{T, 50, "T"}, 1, maxT, 1, ImageSize -> Small,
Appearance -> "Labeled"}],
Control[{{t0, 0, "\!\(\*SubscriptBox[\(t\), \(0\)]\)"}, -maxt0,
maxt0, .1, ImageSize -> Small, Appearance -> "Labeled"}]
}
}, Alignment -> Center, Spacings -> {0.85, 1}, Frame -> All]],
{maxT, 100, ControlType -> None},
{maxA, 1, ControlType -> None},
{maxt0, 10, ControlType -> None},
{nZeros, 5, ControlType -> None},
FrameMargins -> 0,
ImageMargins -> 0,
AutorunSequencing -> {1, 2, 3},
Initialization :>
{
rect[a_, T_, t0_, t_] :=
Piecewise[{ {a, Abs[(t - t0)/T] <= (1/2)}, {0, True}}];
f[a_, T_, t0_, w_] :=
Piecewise[{{a T,
w == 0}, {a*T Sin[Pi w T]/(Pi w T)*Exp[-I 2 Pi w t0], True}}];
process[a_, T_, t0_] := Module[{p1, p2, p3, w},
p1 =
Plot[rect[a, T, t0, t], {t, (t0 - T), (t0 + T)},
PlotRange -> {{-(maxT/2 + maxt0), (maxT/2 + maxt0)}, {0,
maxA + .1}},
Frame -> True,
ImagePadding -> {{44, 2}, {33, 30}},
ImageMargins -> 5,
ImageSize -> 300,
AspectRatio -> .35,
FrameTicksStyle -> Directive[10],
AxesOrigin -> {0, 0},
PlotStyle -> Red,
FrameLabel -> {{Row[{Style["g", Italic], "(",
Style["t", Italic], ")"}],
None}, {Row[{Style["t", Italic], " (sec)"}],
Style["A rect(\!\(\*FractionBox[\(t - \*SubscriptBox[\(t\), \
\(0\)]\), \(T\)]\))", Bold]}},
Epilog -> {{Red, Line[{{t0 - T/2, a}, {t0 - T/2, 0}}]}, {Red,
Line[{{t0 + T/2, a}, {t0 + T/2, 0}}]}}];
p2 = Plot[Abs[Evaluate[f[a, T, t0, w]]], {w, -nZeros/T, nZeros/T},
Frame -> True,
AxesOrigin -> {0, 0},
ImagePadding -> {{44, 4}, {45, 25}},
ImageMargins -> 5,
ImageSize -> 252,
AspectRatio -> .5,
PlotStyle -> Red,
PlotRange -> {{-(nZeros/maxT), (nZeros/maxT)}, {-.1,
maxA*maxT + 1}},
FrameTicks -> {{Automatic,
None}, {Table[i/T, {i, -nZeros, nZeros}], None}},
FrameLabel -> {{Row[{"|", Style["G", Italic], "(",
Style["f", Italic], ")|"}],
None}, {Row[{Style["f", Italic], " (Hz)"}],
Style["magnitude of spectrum", Bold]}},
ImagePadding -> {{40, 5}, {15, 2}}];
p3 =
Plot[180/Pi * Arg[f[a, T, t0, w]], {w, -nZeros/T, nZeros/T},
Frame -> True,
AxesOrigin -> {0, 0},
ImagePadding -> {{44, 4}, {45, 25}},
ImageMargins -> 5,
ImageSize -> 252,
AspectRatio -> .5,
PlotStyle -> Red,
FrameTicksStyle -> Directive[10],
FrameLabel -> {{"degrees",
None}, {Row[{Style["f", Italic], " (Hz)"}],
Style["phase of spectrum", Bold]}},
PlotRange -> {{-(nZeros/maxT), (nZeros/maxT)}, {-185, 185}},
FrameTicks -> {{{-180, -90, 0, 90, 180},
None}, {Table[i/T, {i, -nZeros, nZeros}], None}}
];
Grid[
{
{Item[p1, ItemSize -> Full], SpanFromLeft},
{p2, p3}
},
Alignment -> Center]
]
}
]