(*Illustrating ordinary amplitude modulation power efficiency by Nasser M. Abbasi version August 31 2009*) Manipulate[ am[\[Micro], fc, fm, showCarrier, showMessage], Style["modulation parameters", Bold], {{\[Micro], 0.8, "\[Micro]"}, 0, 1.3, .1, Appearance -> "Labeled", ImageMargins -> -2, ImageSize -> Small}, {{fc, 7000, "\!\(\*SubscriptBox[\(f\), \(c\)]\) (hz)"}, 5000, 10000, 100, Appearance -> "Labeled", ImageMargins -> -2, ImageSize -> Small}, {{fm, 500, "\!\(\*SubscriptBox[\(f\), \(m\)]\) (hz)"}, 300, 1000, 10, Appearance -> "Labeled", ImageMargins -> -2, ImageSize -> Small}, Delimiter, Style["modulated carrier plot options", Bold], {{showCarrier, True, "show carrier "}, {True, False}}, {{showMessage, True, "show message "}, {True, False}} , ControlPlacement -> Left, Initialization :> ( maxCarrierFreq = 10000; maxMessageFreq = 1000; tmax = 3; fontSizeForTitles = 14; fontSizeForSubTitles = 11; am[\[Micro]_, fc_, fm_, showCarrier_, showMessage_] := Module[{plotStyleForCarrier, messagePlot, envelopePlot, carrierPlot, p}, carrierPlot = (1 + \[Micro] Cos[2 Pi fm t/1000]) Cos[ 2 Pi fc t/1000]; messagePlot = Cos[2 Pi fm t/1000]; envelopePlot = 1 + \[Micro] Cos[2 Pi fm t/1000]; If[showCarrier == True && showMessage == True, {plotStyleForCarrier = {Red, Blue, {Black, Dashed, Thin}}, p = {carrierPlot, messagePlot, envelopePlot}}]; If[showCarrier == True && showMessage == False, {plotStyleForCarrier = {Red, {Black, Dashed, Thin}}, p = {carrierPlot, envelopePlot}}]; If[showCarrier == False && showMessage == True, {plotStyleForCarrier = {Blue, {Black, Dashed, Thin}}, p = {messagePlot, envelopePlot}}]; If[showCarrier == False && showMessage == False, {plotStyleForCarrier = {{Black, Dashed, Thin}}, p = envelopePlot}]; GraphicsGrid[{ { Plot[ Cos[2 Pi fc t/1000] , {t, 0, 2}, TicksStyle -> Small, Ticks -> {{0, 1, 2}, {-1, 0, 1}}, AxesLabel -> {Style[Row[{Style["t", Italic], " (ms)"}], Larger]}, PlotLabel -> Style["carrier signal", fontSizeForTitles], PlotStyle -> Red, Exclusions -> {1}], Plot[ Cos[2 Pi fm t/1000] , {t, 0, 2}, TicksStyle -> Small, Ticks -> {{0, 1, 2}, {-1, 0, 1}}, AxesLabel -> {Style[Row[{Style["t", Italic], " (ms)"}], Larger]}, PlotLabel -> Style["message signal", fontSizeForTitles], PlotStyle -> Blue, Exclusions -> {1}] }, {Plot[p, {t, 0, tmax }, PlotRange -> {All, {-2.5, 2.5}}, TicksStyle -> Small, AxesLabel -> {Style[Row[{Style["t", Italic], " (ms)"}], Larger]}, PlotLabel -> Column[{Style["modulated carrier", fontSizeForTitles], Style["with envelope and orginal message superimposed", fontSizeForSubTitles]}, Center], PlotStyle -> plotStyleForCarrier, ImagePadding -> Full, Exclusions -> {1}], SpanFromLeft }, {frequencyPlot[fm, fc, \[Micro]], SpanFromLeft}}, Spacings -> {Scaled[.1], Scaled[.1]}, Frame -> {False, All}, Dividers -> None, AspectRatio -> Full, ImageSize -> 320] ]; frequencyPlot[fm_, fc_, \[Micro]_] := Module[{carrierRight, carrierLeft, upperRight, upperleft, lowerRight, lowerleft, carrierPower, sidePower, z = 0.7*maxCarrierFreq, g, plotLabel}, carrierRight = {Red, Arrow[{{fc, 0}, {fc, .5*fc}}] }; carrierLeft = {Red, Arrow[{{-fc, 0}, {-fc, 0.5*fc}}]}; upperRight = {Blue, Arrow[{{fc + fm, 0}, {fc + fm, fc*\[Micro]/4.}}]}; upperleft = {Blue, Arrow[{{fc - fm, 0}, {fc - fm, fc*\[Micro]/4.}}]}; lowerRight = {Blue, Arrow[{{-fc + fm, 0}, {-fc + fm, fc*\[Micro]/4.}}]}; lowerleft = {Blue, Arrow[{{-fc - fm, 0}, {-fc - fm, fc*\[Micro]/4.}}]}; carrierPower = 0.5; sidePower = \[Micro]^2/4.; g = { Line[{{-maxCarrierFreq - 0.1*maxCarrierFreq, 0}, {maxCarrierFreq + 0.1*maxCarrierFreq, 0}}], Line[{{0, 0}, {0, .25*z}}], carrierRight, carrierLeft, upperRight, upperleft, lowerRight, lowerleft, Text[ Style["-\!\(\*SubscriptBox[\(f\), \(c\)]\)", Small], {-fc, -0.1*z}], Text[ Style["\!\(\*SubscriptBox[\(f\), \(c\)]\)", Small], {fc, -0.1*z}], Text[Style["0", Small], {0, -0.1*z}] }; plotLabel = Style[Column[{ Style["modulated carrier frequency (magnitude)", fontSizeForTitles] , Row[{Style["carrier power = 0.5 watt, ", fontSizeForSubTitles], Style["sidebands power = " <> ToString[NumberForm[sidePower, {3, 3}]] <> " watt", fontSizeForSubTitles]}], Style["modulation efficiency = " <> ToString[ NumberForm[\[Micro]^2/(\[Micro]^2 + 2)*100, {3, 2}]] <> "%", fontSizeForSubTitles] }, Center]] ; ListPlot[{{0, 0}}, PlotRange -> {{-maxCarrierFreq - 0.3*maxCarrierFreq, maxCarrierFreq + 0.3*maxCarrierFreq}, {-10, 0.5*maxCarrierFreq}}, PlotLabel -> plotLabel, Ticks -> {{-fc, 0, fc}, None}, AxesLabel -> {Style[Row[{Style["f", Italic], " (hz)"}], Larger]}, ImagePadding -> Full, Epilog -> g] ] ) ]