Manipulate[ (*Nasser M. Abbasi, June 20, 2014*) (*the signal is cosine, and the SNR is given as ratio of variances*) Module[{nPoints, x0, varx0, n, x, del}, nPoints = 128; del = 4 Pi/(nPoints - 1); x0 = Cos[Range[0, 4*Pi, del]]; varx0 = Variance[x0]; SeedRandom[0]; n = RandomVariate[NormalDistribution[0, 1], nPoints]; x = x0 + Sqrt[varx0/snr]*n; Show[ListLinePlot[x0, PlotStyle -> Blue], ListLinePlot[x, PlotStyle -> Red], PlotRange -> {{0, Round[xmax/del]}, {-ymax, ymax}}, ImagePadding -> {{40, 15}, {40, 40}}, Frame -> True, ImageSize -> 400, FrameLabel -> {{"y(t)", None}, {"time", "Adding noise to signal"}}, Axes -> None] ], Grid[{ {"SNR", Manipulator[Dynamic[snr, {snr = #} &], {1, 999, 1}, ImageSize -> Tiny], Dynamic@Row[{NumberForm[snr, 3], " (", NumberForm[10. Log[10, snr], 4], " db)"}] }, {"x max", Manipulator[Dynamic[xmax, {xmax = #} &], {.1, 4.*Pi, .1}, ImageSize -> Tiny], Dynamic[xmax] }, {"y max", Manipulator[Dynamic[ymax, {ymax = #} &], {.1, 1.4, .1}, ImageSize -> Tiny], Dynamic[ymax] } }, Alignment -> Left ], {{snr, 50}, None}, {{xmax, 4.*Pi}, None}, {{ymax, 1.4}, None} ]