PDF PDF
PDF PDF
PDF PDF
Systems Laboratory
By:
Nasser Kehtarnavaz
Philipos Loizou
Mohammad Rahman
An Interactive Approach to Signals and
Systems Laboratory
By:
Nasser Kehtarnavaz
Philipos Loizou
Mohammad Rahman
Online:
< http://cnx.org/content/col10667/1.14/ >
CONNEXIONS
4 Fourier Series
4.1 Fourier Series . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
4.2 Lab 4: Fourier Series and Its Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
Solutions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
8 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
Bibliography . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
Attributions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
iv
1
Preface
A typical undergraduate electrical engineering curriculum includes a signals and systems course during
which students are initially exposed to signal processing concepts such as convolution, Fourier series, Fourier
transform and ltering. Laboratory components of signals and systems courses are primarily based on textual
.m les. Although the ability to write textual codes is an important aspect of a lab component, students can
enhance their understanding of signal processing concepts in these courses if they interactively experiment
with their codes.
Our motivation for writing this book has thus been to present an interactive programming approach as
an alternative to the commonly practiced textual programming in signals and systems labs to provide an
ecient way for students to interact and experiment with their codes. The interactivity achieved via hybrid
programming, that is, a combination of textual and graphical programming, oers students a more eective
tool to better understand signal processing concepts.
Textual programming and graphical programming both have pros and cons. In general, math operations
are easier to code in textual mode. On the other hand, graphical programming oers an easy-to-build inter-
active and visualization environment along with a more intuitive approach toward building signal processing
systems.
To bring together the preferred features of textual and graphical programming, we have designed the labs
associated with a typical signals and systems course by incorporating .m les into the National Instruments
LabVIEW graphical programming environment. This way, although students program the code in textual .m
les, they can easily achieve interactivity and visualization in LabVIEW by just having some basic knowledge
of the software. The rst two labs provide an introduction to LabVIEW and MathScript (.m les) to help
students become familiar with both graphical and textual programming in case they have not already done
so in their earlier courses.
In addition to the signal processing concepts, students cover example applications in each lab to learn
how to relate concepts to actual real-world applications. The applications considered span dierent sig-
nal processing areas including speech processing, telecommunications and digital music synthesis. These
applications provide further incentive for students to stay engaged in the labs.
The chapters in this book are organized into the following labs:
1. Introduction to LabVIEW
Students gain some basic familiarity with LabVIEW, such as how to use controls, indicators and other
LabVIEW graphical features, to make .m les more interactive.
2. Introduction to MathScript
If not already familiar with .m le coding, students learn the basics of this coding.
3. Convolution and Linear Time-Invariant Systems
Students experiment with convolution and linear time-invariant (LTI) systems. Due to the discrete-time
nature of programming, students must make an approximation of the convolution integral. The lab, which
covers convolution properties, shows how to perform numerical approximation of convolution. To apply
convolution concepts, students examine an RLC circuit, and build and analyze an echo cancellation system.
4. Fourier Series and Its Applications
1 This content is available online at <http://cnx.org/content/m19826/1.1/>.
1
2
Students explore the representation of periodic analog signals using Fourier series and discuss the decom-
position and reconstruction of periodic signals using a nite number of Fourier coecients. To apply the
concepts they have learned, students perform an RLC circuit analysis using periodic input signals.
5. Continuous-Time Fourier Transform and Its Applications
Students implement continuous-time Fourier transform (CTFT) and its properties, as well as cover am-
plitude modulation and high-frequency noise removal as CTFT applications.
6. Digital Signals and Their Transforms
Students explore the transforms of digital signals. In the rst part of the lab, students examine analog-to-
digital conversion and related issues including sampling and aliasing. In the second part, students cover the
transformations consisting of discrete Fourier transform (DFT) and discrete-time Fourier transform (DTFT)
and compare them to the corresponding transforms for continuous-time signals, namely Fourier series and
CTFT, respectively. Students also examine applications such as dual-tone multi-frequency (DTMF) signaling
for touch-tone telephones and dithering to decrease signal distortion due to digitization.
7. Analysis of Analog and Digital Systems
During the nal lab, students implement the techniques and mathematical transforms they learned in
the previous labs to perform analog and digital ltering. They build and analyze a square root system and
a ltering system with interactive capabilities.
The codes and les associated with the labs in this book can be downloaded from the website at
www.utdallas.edu/∼kehtar/signals-systems(username = signals-systems, password = labora-
tory). Note that this book is meant only as an accompanying lab book to signals and systems textbooks
and should not be used as a substitute for these textbooks.
We would like to express our gratitude to National Instruments, in particular its Academic Marketing
Division and Mr. Erik Luther, for their support and initial publication of this book through lulu.com. We
hope its publication now through Connexions would facilitate its widespread use in signals and systems
laboratory courses.
Nasser Kehtarnavaz
Philipos C. Loizou
Mohammad T. Rahman
Chapter 1
3
4 CHAPTER 1. LABVIEW PROGRAMMING ENVIRONMENT
1
1.1 LabVIEW Programming Environment
The LabVIEW graphical programming environment can be used to design and analyze a signal processing
system in a more time-ecient manner than with text-based programming environments. This chapter
provides an introduction to LabVIEW graphical programming. Also see [4], [5], and [2] to learn more about
LabVIEW graphical programming.
LabVIEW graphical programs are called virtual instruments (VIs). VIs run based on the concept of
dataow programming. This means that execution of a block or a graphical component is dependent on the
ow of data, or, more specically, a block executes after data is made available at all of its inputs. Block
output data are then sent to all other connected blocks. With dataow programming, one can perform
multiple operations in parallel because the execution of blocks is done by the ow of data and not by
sequential lines of code.
Each tool is used for a specic task. For example, use the wiring tool to wire objects in a block diagram.
If one enables the automatic tool selection mode by clicking on the Automatic Tool Selection button,
LabVIEW selects the best matching tool based on a current cursor position.
1.1.3.1 Controls
Controls make up the inputs to a VI. Controls grouped in the Numeric Controls palette(Controls →
Express → Num Ctrls) Buttons & Switches
are used for numerical inputs, controls grouped in the
palette(Controls → Express → Buttons) are used for Boolean inputs, and controls grouped in the
Text Controls palette(Controls →Express →Text Ctrls) are used for text and enumeration inputs.
These control options are displayed in Figure 1.5.
9
1.1.3.2 Indicators
Indicators make up the outputs of a VI. Indicators grouped in the Numeric Indicators
palette(Controls→ Express → Numeric Inds) are used for numerical outputs, indicators grouped
in the LEDs palette(Controls → Express → LEDs) are used for Boolean outputs, indicators grouped
in the Text Indicators palette(Controls → Express → Text Inds) are used for text outputs, and
indicators grouped in the Graph Indicators palette(Controls → Express → Graph Indicators) are
used for graphical outputs. These indicator options are displayed in Figure 1.6.
10 CHAPTER 1. LABVIEW PROGRAMMING ENVIRONMENT
Figure 1.8: Block Diagram Objects: (a) VI, (b) Express VI, (c) Function
One can display subVIs or Express VIs as icons or expandable nodes. If a subVI is displayed as an
expandable node, the background appears yellow. Icons can be used to save space in a block diagram and
expandable nodes can be used to achieve easier wiring or better readability. One can resize expandable nodes
to show their connection nodes more clearly. Three appearances of a VI/Express VI are shown in Figure 1.9.
12 CHAPTER 1. LABVIEW PROGRAMMING ENVIRONMENT
1.1.4.3 Wires
Wires transfer data from one node to another in a block diagram. Based on the data type of a data source,
the color and thickness of its connecting wires change.
Wires for the basic data types used in LabVIEW are shown in Figure 1.11. In addition to the data
types shown in this gure, there are some other specic data types. For example, the dynamic data type is
always used for Express VIs, and the waveform data type, which corresponds to the output from a waveform
generation VI, is a special cluster of waveform components incorporating trigger time, time interval and data
value.
1.1.4.4 Structures
A structure is represented by a graphical enclosure. The graphical code enclosed in the structure gets
repeated or executed conditionally. A loop structure is equivalent to a for loop or a while loop statement in
text-based programming languages, while a case structure is equivalent to an if-else statement.
indicates a for loop structure, where the count terminal represents the number of times the loop is to
be repeated. It is set by wiring a value from outside of the loop to it. The iteration terminal denotes the
number of completed iterations, which always starts at zero.
14 CHAPTER 1. LABVIEW PROGRAMMING ENVIRONMENT
terminal initiates a stop if the condition is true. Similar to a for loop, the iteration terminal
provides the number of completed iterations, always starting at zero.
execute. The case selector shows the status being executed. Cases can be added or deleted as
needed.
2
1.2 Lab 1: Introduction to LabVIEW
The objective of this lab is to oer an initial hands-on experience in building a VI. More detailed explanations
of the LabVIEW features mentioned here can be found in the [4], [5], and [2]. One can launch LabVIEW
2011 (the latest version at the time of this publication) by double-clicking on the LabVIEW 2011 icon, which
opens the dialog window shown in Figure 1.16.
The number of VI inputs and outputs is dependent on the VI function. In this example, two inputs
and two outputs are needed, one output generating the sum and the other generating the average of two
input values. Create the inputs by locating two numeric controls on the front panel. This can be done by
right-clicking on an open area of the front panel to bring up the Controls palette, followed by choosing
Controls → Modern → Numeric → Numeric Control. Each numeric control automatically places
a corresponding terminal icon on the block diagram. Double-clicking on a numeric control highlights its
counterpart on the block diagram and vice versa.
Tools Palette, which can be
Next, label the two inputs as x and y using the Labeling tool from the
displayed by choosing View → Tools Palette from the menu bar. Choose the Labeling tool and click on
the default labels, Numeric and Numeric 2, to edit them. Alternatively, if the automatic tool selection
mode is enabled by clicking Automatic Tool Selection in the Tools Palette, the labels can be edited
by simply double-clicking on the default labels. Editing a label on the front panel changes its corresponding
terminal icon label on the block diagram and vice versa.
Similarly, the outputs are created by locating two numeric indicators (Controls → Modern → Nu-
meric →Numeric Indicator) on the front panel. Each numeric indicator automatically places a corre-
sponding terminal icon on the block diagram. Edit the labels of the indicators to read Sum and Average.
For a better visual appearance, one can align, distribute and resize objects on a front panel window using
the front panel toolbar. To do this, select the objects to be aligned or distributed and apply the appropriate
option from the toolbar menu. Figure 1.18 shows the conguration of the front panel just created.
19
Now build a graphical code on the block diagram to perform the summation and averaging operations.
Note that <Ctrl-E> toggles between a front panel and a block diagram window. If objects on a block diagram
are too close to insert other functions or VIs in-between, one can insert a horizontal or vertical space by
holding down the <Ctrl> key to create space horizontally and/or vertically. As an example, Figure 1.19b
illustrates a horizontal space inserted between the objects shown in Figure 1.18a.
20 CHAPTER 1. LABVIEW PROGRAMMING ENVIRONMENT
Figure 1.19: Inserting Horizontal/Vertical Space: (a) Creating Space While Holding Down the <Ctrl>
Key, (b) Inserted Horizontal Space.
Next, place an Add function (Functions →Express →Arith & Compar →Express Numeric
→Add) and a Divide function (Functions →Express →Arith & Comp →Express Numeric
→Divide) on the block diagram. Enter the divisor, in this case 2, in a Numeric Constant(Functions
→Express →Arith & Compar →Express Numeric →Numeric Constant) and connect it to the y
terminal of the Divide function using the Wiring tool.
To achieve proper data ow, wire functions, structures and terminal icons on a block diagram using the
Wiring tool. To wire these objects, point the Wiring tool at the terminal of the function or subVI to be wired,
left-click on the terminal, drag the mouse to a destination terminal and left-click once again. Figure 1.20
illustrates the wires placed between the terminals of the numeric controls and the input terminals of the
Add function. Notice that the label of a terminal gets displayed whenever one moves the cursor over the
terminal if the automatic tool selection mode is enabled. Also, note that the Run button on the toolbar
remains broken until one completes the wiring process.
21
For better block diagram readability, one can clean up wires hidden behind objects or crossed over other
wires by right-clicking on them and choosing Clean Up Wire from the shortcut menu. Any broken wires
can be cleared by pressing <Ctrl-B> or Edit →Remove Broken Wires.
To view or hide the label of a block diagram object, such as a function, right-click on the object and
check (or uncheck) Visible Items →Label from the shortcut menu. Also, one can show a terminal icon
corresponding to a numeric control or indicator as a data type terminal icon by right-clicking on the terminal
icon and unchecking View As Icon from the shortcut menu. Figure 1.21 shows an example where the
numeric controls and indicators are depicted as data type terminal icons. The notation DBL indicates
double precision data type.
22 CHAPTER 1. LABVIEW PROGRAMMING ENVIRONMENT
It is worth noting that there is a shortcut to build the above VI. Instead of choosing the numeric
controls, indicators or constants from the Controls or Functions palette, one can use the shortcut menu
Create, activated by right-clicking on a terminal of a block diagram object such as a function or a subVI.
As an example of this approach, create a blank VI and locate an Add function. Right-click on its x terminal
and choose Create →Control from the shortcut menu to create and wire a numeric control or input. This
locates a numeric control on the front panel as well as a corresponding terminal icon on the block diagram.
The label is automatically set to x. Create a second numeric control by right-clicking on the y terminal
Add function. Next, right-click on the output terminal of the Add function and choose Create
of the
→Indicator from the shortcut menu. A data type terminal icon, labeled as x+y, is created on the block
diagram as well as a corresponding numeric indicator on the front panel.
Next, right-click on the y terminal of the Divide function to choose Create →Constant from the
shortcut menu. This creates a numeric constant as the divisor and wires its y terminal. Type the value 2
in the numeric constant. Right-click on the output terminal of the Divide function, labeled as x/y, and
choose Create →Indicator from the shortcut menu. If the wrong option is chosen, the terminal does not
get wired. An incorrect terminal option can easily be changed by right-clicking on the terminal and choosing
Change to Control from the shortcut menu.
To save the created VI for later use, choose File →Save from the menu or press <Ctrl-S> to bring up
a dialog window to enter a name. Type Sum and Average as the VI name and click Save.
To test the functionality of the VI, enter some sample values in the numeric controls on the front panel
23
and run the VI by choosing Operate →Run, by pressing <Ctrl-R> or by clicking the Run button on
the toolbar. From the displayed output values in the numeric indicators, the functionality of the VI can be
veried. Figure 1.22 illustrates the outcome after running the VI with two inputs, 10 and 15.
connector pane is shown in Figure 1.23b. Notice that the output terminals have thicker borders. The color
of a terminal reects its data type.
Figure 1.23: Connector Pane: (a) Assigning a Terminal to a Control, (b) Completed Terminal Assign-
ment.
Considering that a subVI icon is displayed on the block diagram of a higher-level VI, it is important to
edit the subVI icon for it to be explicitly identiable. Double-clicking on the top-right corner icon of a block
diagram opens the Icon Editor. The Icon Editor tools are similar to those in other graphical editors, such
as Microsoft Paint. Editing the Sum and Average VI icon is illustrated in Figure 1.24.
A subVI can also be created from a section of a VI. To do so, select the nodes on the block diagram to
be included in the subVI, as shown in Figure 1.25a. Then, choose Edit →Create SubVI to insert a new
subVI icon. Figure 1.25b illustrates the block diagram with an inserted subVI. One can open and edit this
subVI by double-clicking on its icon on the block diagram. Save this subVI as Sum and Average.vi. This
subVI performs the same function as the original Sum and Average VI.
Figure 1.25: Creating a SubVI: (a) Selecting Nodes to Make a SubVI, (b) Inserted SubVI Icon.
To set the outputs, locate and place a numeric indicator, a round LED (Controls →Modern →Boolean
→Round LED) and a gauge (Controls →Modern →Numeric →Gauge). Edit the labels of the indi-
cators as shown in Figure 1.26.
Figure 1.26: Example of Structure and SubVI: (a) Front Panel, (b) Block Diagram.
Once this structure is created, its boundary, together with the loop iteration terminal and condi-
tional terminal , get shown on the block diagram. If one creates the while loop by using Functions
→Programming →Structures → While Loop, the Stop button is not included as part of the structure.
One can create this button by right-clicking on the conditional terminal and choosing Create →Control
from the shortcut menu. It is possible to wire a Boolean condition to a conditional terminal, instead of a
Stop button, to stop the loop programmatically.
Next run the VI to verify its functionality. After clicking the Run button on the toolbar, adjust the
knobs to alter the inputs. Verify whether the average and sum are displayed correctly in the gauge and
numeric indicators. Note that only integer values can be entered via the Input 1 knob while real values can
be entered via the Input 2 knob. This is due to the data types associated with these knobs. The Input 1
knob is set to byte type, in other words, I8 or 8-bit signed integer. As a result, one can enter only integer
values within the range -128 and 127. Considering that the minimum and maximum values of this knob are
set to 0 and 10, respectively, one can enter only integer values from 0 to 10 for this input.
28 CHAPTER 1. LABVIEW PROGRAMMING ENVIRONMENT
An outcome of the proler is shown in Figure 1.30 after running the Sum and Average or L1.1 VI. [4]
provides more details on the Prole tool.
Figure 1.30: Prole Window after Running Sum and Average VI.
N
1 X 2
σ= (xj − µ) (1.1)
N j=1
where µdenotes the average of the array x. For x, use all the integers from 1 to 1000.
33
34 CHAPTER 2. LABVIEW MATHSCRIPT AND HYBRID PROGRAMMING
1
2.1 LabVIEW MathScript and Hybrid Programming
In signals and systems lab courses, .m le coding is widely used. LabVIEW MathScript is a feature of the
newer versions of LabVIEW that allows one to include .m les within its graphical environment. As a result,
one can perform hybrid programming, that is, a combination of textual and graphical programming, when
using this feature. This chapter provides an introduction to MathScript or .m le textual coding. See [6]
and [7] for advanced MathScript aspects.
MathScripting can be done via the LabVIEW MathScript interactive window or node. The LabVIEW
MathScript interactive window, shown in Figure 2.1, consists of a Command Window, an Output Window
and a MathScript Window. The Command Window interface allows one to enter commands and debug
script or to view help statements for built-in functions. The Output Window is used to view output values
and the MathScript Window interface to display variables and command history as well as edit scripts. With
script editing, one can execute a group of commands or textual statements.
A LabVIEW MathScript node represents the textual .m le code via a blue rectangle as shown in
Figure 2.2. Its inputs and outputs are dened on the border of this rectangle for transferring data between
the graphical environment and the textual code. For example, as indicated in Figure 2.2, the input variables
on the left side, namely lf, hf and order, transfer values to the .m le script, and the output variables on
the right side, F and sH, transfer values to the graphical environment. This process allows .m le script
variables to be used within the LabVIEW graphical programming environment.
36 CHAPTER 2. LABVIEW MATHSCRIPT AND HYBRID PROGRAMMING
2
2.2 Lab 2: LabVIEW MathScript and Hybrid Programming
To compute an element-by-element multiplication of two vectors (or two arrays), use the following oper-
ator:
x .* y
ans =
4 15 24 h
That is, x .* y means [1 × 4, 3 × 5, 4 × 6] = 4 15 24 .
Symbol Meaning
pi π (3.14.....)
^ indicates power (for example, 3^2=9)
Function Meaning
if x = = -2
break;
end
end
LabVIEW MathScript supports the relational and logical operators listed below.
Relational Operators
Symbol Meaning
== equal
∼= not equal
Logical Operators
Symbol Meaning
& AND
| OR
∼ NOT
Figure 2.3: LabVIEW MathScript Interactive Window after Running the Program Average
Often a waveform graph is tied with the function Build Waveform(Function→ Programming →
Waveform → Build Waveform) to calibrate the x scale (which is time scale for signals), as shown in
Figure 2.5.
Create an XY graph from a front panel by choosing Controls→ Express → XY Graph. Figure 2.6
shows an XY graph and its dierent elements.
45
An XY graph displays a signal at a non-constant rate, and one can tie together its X and Y vectors to
Build XY Graph function. This function automatically appears on the block
display the signal via the
diagram when placing an XY graph on the front panel, as shown in Figure 2.7. Note that one can use the
function Bundle (Functions → Programming → Cluster & Variant → Bundle) instead of Build XY
Graph.
Now build the same program average using a LabVIEW MathScript node. The inputs to this program
consist of x and y. To add these inputs, right-click on the border of the LabVIEW MathScript node and
click on the Add Input option (see Figure 2.9).
47
After adding these inputs, create controls to change the inputs interactively via the front panel. By
right-clicking on the border, add outputs in a similar manner. An important issue to consider is the selection
of output data type. The outputs of the Sum and Average VI are scalar quantities. Choose data types by
right-clicking on an output and selecting the Choose Data Type option (see Figure 2.10).
48 CHAPTER 2. LABVIEW MATHSCRIPT AND HYBRID PROGRAMMING
Finally, add numeric indicators in a similar fashion as indicated earlier. Figure 2.11 shows the completed
block diagram and front panel.
Figure 2.11: (a) Completed Block Diagram, (b) Completed Front Panel
Figure 2.12 shows two continuous-time signals x1 (t) and x2 (t)with a duration of 3 seconds. By setting
the time interval dt to 0.001 second, there is a total of 3000 samples at t = 0, 0.001, 0.002, 0.003, ......., 2.999
seconds.
The signal x1 (t) can be represented mathematically as follows:
0 0≤t<1
x1 (t) = { 1 1≤t<2 (2.1)
0 2≤t<3
To simulate this signal, use the LabVIEW MathScript functions ones and zeros. The signal value is zero
during the rst second, which means the rst 1000 samples are zero. This portion of the signal is simulated
with the function zeros(1,1000). In the next second (next 1000 samples), the signal value is 2, and this
portion is simulated by the function 2*ones(1,1000). Finally, the third portion of the signal is simulated by
the function zeros(1,1000). In other words, the entire duration of the signal is simulated by the following
.m le function:
x1=[ zeros(1,1/dt) 2*ones(1,1/dt) zeros(1,1/dt)]
The signal x2 (t) can be represented mathematically as follows:
2t 0≤t<1
x2 (t) = { −2t + 4 1≤t<2 (2.2)
0 2≤t<3
Use a linearly increasing or decreasing vector to represent the linear portions. The time vectors for the
three portions or segments of the signal are 0:dt:1-dt, 1:dt:2-dt and 2:dt:3-dt. The rst segment is
a linear function corresponding to a time vector with a slope of 2; the second segment is a linear function
corresponding to a time vector with a slope of -2 and an oset of 4; and the third segment is simply a
constant vector of zeros. In other words, simulate the entire duration of the signal for any value of dt by the
following .m le function:
x2=[2*(0:dt:(1-dt)) -2*(1:dt:(2-dt))+4 zeros(1,1/dt)].
Figure 2.13 and Figure 2.14 show the block diagram and front panel of the above signal generation system,
respectively. Display the signals using a Waveform Graph(Controls→ Express → Waveform Graph)
and a Build Waveform function (Function→ Programming → Waveform → Build Waveform).
Note that the default data type in MathScript is double precision scalar. So whenever an output possesses
51
any other data type, one needs to right-click on the output and select the Choose Data Type option. In
this example, x1 and x2 are double precision one-dimensional arrays that are specied accordingly.
using a LabVIEW MathScript node are shown in Figure 2.15 and Figure 2.16, respectively. The front panel
includes the following three controls:
Waveform type Select the shape of the input waveform as either sine, square, triangular or sawtooth
waves.
Amplitude Control the amplitude of the input waveform.
Frequency Control the frequency of the input waveform.
To build the block diagram, rst write a .m le code to generate four types of waveforms using the .m
le functions sin, square and sawtooth. To change the amplitude and frequency of the waveforms, use two
controls named Amplitude (A) and Frequency (f ). Waveform Type (w) is another input controlled by the
Enum Control for selecting the waveform type. With this control, one can select from multiple inputs.
Create an Enum Control from the front panel by invoking Controls → Modern → Ring & Enum →
Enum. Right-click on the Enum Control to select properties and the edit item tab to choose dierent
items as shown in Figure 2.17. After inserting each item, the digital display shows the corresponding number
Enum Control.
value for that item, which is the output of the
Waveform Graph(Controls→ Express → Waveform Graph)
Finally, display the waveforms with a
and a Build Waveform function (Function→ Programming → Waveform → Build Waveform).
55
0.2 t ≥ 0.2
x (t) = { (2.3)
−0.2 t < 0.2
For t, use 1000 random numbers generated via the function rand.
1
3.1 Convolution and Linear Time-Invariant Systems
Z∞
y (t) = h (t − τ ) x (τ ) dτ (3.1)
−∞
For a computer program to perform the above continuous-time convolution integral, a numerical approx-
imation of the integral is needed noting that computer programs operate in a discrete not continuous
fashion. One way to approximate the continuous functions in the Equation (1) integral is to use piecewise
constant functions. Dene δ∆ (t) to be a rectangular pulse of width ∆ and height 1, centered at t = 0:
1 −∆/2 ≤ t ≤ ∆/2
δ∆ (t) = { (3.2)
0 otherwise
Approximate a continuous function x (t) with a piecewise constant function x∆ (t) as a sequence of pulses
spaced every ∆ seconds in time with heights x (k∆):
∞
X
x∆ (t) = x (k∆) δ∆ (t − k∆) (3.3)
k=−∞
It can be shown in the limit as ∆ → 0, x∆ (t) → x (t). As an example, Figure 3.1 shows the approximation
of a decaying exponential x (t) = exp − 2t starting from 0 using ∆ = 1. Similarly, h (t) can be approximated
by
∞
X
h∆ (t) = h (k∆) δ∆ (t − k∆) (3.4)
k=−∞
59
60 CHAPTER 3. CONVOLUTION AND LINEAR TIME-INVARIANT SYSTEMS
One can thus approximate the convolution integral by convolving the two piecewise constant signals as
follows:
Z∞
y∆ (t) = h∆ (t − τ ) x∆ (τ ) dτ (3.5)
−∞
Notice that y∆ (t) is not necessarily a piecewise constant. For computer representation purposes, discrete
output values are needed, which can be obtained by further approximating the convolution integral as
indicated below:
∞
X
y∆ (n∆) = ∆ x (k∆) h ((n − k) ∆) (3.6)
k=−∞
If one represents the signals h∆ (t) and x∆ (t) in a .m le by vectors containing the values of the signals at
t = n∆, then Equation (5) can be used to compute an approximation to the convolution of
P∞ x (t) and h (t).
Compute the discrete convolution sum k=−∞ x (k∆) h ((n − k) ∆)with the built-in LabVIEW MathScript
command conv. Then, multiply this sum by ∆ to get an estimate of y (t) at t = n∆ Note that as ∆ is made
smaller, one gets a closer approximation to y (t).
61
• Commutative property
• Associative property
• Distributive property
This lab involves experimenting with the convolution of two continuous-time signals. The main mathematical
part is written as a .m le, which is then used as a LabVIEW MathScript node within the LabVIEW
programming environment to gain user interactivity. Due to the discrete-time nature of programming, an
approximation of the convolution integral is needed. As an application of the convolution concept, echoes
are removed from speech recordings using this concept.
1
e−bt − e−at u (t)
y (t) = (3.10)
a−b
Θ
Compare the approximation y (n∆)obtained via the function conv with the theoretical value y (t)given
Θ Θ
by Equation (1). To better see the dierence between the approximated y (n∆)and the true y (n∆)values,
Θ
display y (t)and y (t) in the same graph.
Compute the mean squared error (MSE) between the true and approximated values using the following
equation:
N 2
1 X Θ
MSE = y (n∆) − y (n∆) (3.11)
N n=1
T
where N = b∆ c, T is an adjustable time duration expressed in seconds and the symbol b.c denotes the
nearest integer. To begin with, set T = 8.
As you can see here, the main program is written as a .m le and placed inside LabVIEW as a LabVIEW
MathScript node by invoking Functions → Programming →Structures → MathScript. The .m le
can be typed in or copied and pasted into the LabVIEW MathScript node. The inputs to this program
consist of an approximation pulse width ∆, input exponent powers aand b and a desired time duration T.
To add these inputs, right-click on the border of the LabVIEW MathScript node and click on the Add
Input option as shown in Figure 3.3.
2 This content is available online at <http://cnx.org/content/m19840/1.4/>.
63
After adding these inputs, create controls to allow one to alter the inputs interactively via the front
panel. By right-clicking on the border, add the outputs in a similar manner. An important consideration is
the selection of the output data type. Set the outputs to consist of MSE, actual or true convolution output
y_ac and approximated convolution output y. The rst output is a scalar quantity while the other two are
one-dimensional vectors. The output data types should be specied by right-clicking on the outputs and
selecting the Choose Data Type option (see Figure 3.4).
64 CHAPTER 3. CONVOLUTION AND LINEAR TIME-INVARIANT SYSTEMS
Next write the following .m le textual code inside the LabVIEW MathScript node:
t=0:Delta:8;
Lt=length(t);
x1=exp(-a*t);
x2=exp(-b*t);
y=Delta*conv(x1,x2);
y_ac=1/(a-b)*(exp(-b*t)-exp(-a*t));
MSE=sum((y(1:Lt)-y_ac).^2)/Lt
With this code, a time vector t is generated by taking a time interval of Delta for 8 seconds. Convolve the
two input signals, x1 and x2, using the function conv. Compute the actual output y_ac using Equation (1).
Measure the length of the time vector and input vectors by using the command length(t). The convolution
output vector y has a dierent size (if two input vectors m and n are convolved, the output vector size is
m+n-1). Thus, to keep the size the same, use a portion of the output corresponding to y(1:Lt) during the
error calculation.
Use a waveform graph to show the waveforms. With the function Build Waveform (Functions →
Programming → Waveforms → Build Waveforms), one can show the waveforms across time. Connect
the time interval Delta to the input dt of this function to display the waveforms along the time axis (in
seconds).
Merge together and display the true and approximated outputs in the same graph using the function
Merge Signal (Functions → Express → Sig Manip → Merge Signals). Congure the properties of the
waveform graph as shown in Figure 3.5.
66 CHAPTER 3. CONVOLUTION AND LINEAR TIME-INVARIANT SYSTEMS
Figure 3.6 illustrates the completed block diagram of the numerical convolution.
67
Figure 3.7 shows the corresponding front panel, which can be used to change parameters. Adjust the
input exponent powers and approximation pulse-width Delta to see the eect on the MSE.
68 CHAPTER 3. CONVOLUTION AND LINEAR TIME-INVARIANT SYSTEMS
Let ∆ = 0.01. Figure 3.8 shows the block diagram for this second convolution example. Again, the .m le
textual code is placed inside a LabVIEW MathScript node with the appropriate inputs and outputs.
69
Figure 3.9 illustrates the corresponding front panel where x (t), h (t) and x (t)∗h (t) are plotted in dierent
graphs. Convolution (∗) and equal (=)signs are placed between the graphs using the LabVIEW function
Decorations.
70 CHAPTER 3. CONVOLUTION AND LINEAR TIME-INVARIANT SYSTEMS
Figure 3.11 shows the block diagram for this third convolution example and Figure 3.12 the corresponding
front panel. The signals x1 (t), x2 (t) and x1 (t) ∗ x2 (t) are displayed in dierent graphs.
72 CHAPTER 3. CONVOLUTION AND LINEAR TIME-INVARIANT SYSTEMS
For a simple RC series circuit shown in Figure 3.17, the impulse response is given by [9] ,
1 1
h (t) = exp − t (3.13)
RC RC
which can be obtained for any specied values of R and C. When an input voltage v (t) (either DC or AC)
is applied to the system, the circuit current i (t) can be obtained by simply convolving the system impulse
response with the input voltage, that is
Similarly, for the simple RL series circuit shown in Figure 3.18, the impulse response is given by [9] ,
R R
h (t) = exp − t (3.15)
L L
78 CHAPTER 3. CONVOLUTION AND LINEAR TIME-INVARIANT SYSTEMS
When an input voltage v (t) is applied to the system, the circuit current i (t) can be obtained by computing
the convolution integral.
Figure 3.19 shows the block diagram of this linear system and Figure 3.20 the corresponding front panel.
From the front panel, one can control the system type (RL or RC), input voltage type (DC or AC) and input
voltage amplitude. One can also observe the system response by changing R, L and C values. Three graphs
are used to display the input voltage v (t), impulse response of the circuit h (t) and circuit current i (t).
79
What is heard is y (t). In many applications, it is important to recover x (t) the original, echo-free
signal from y (t).
Method 1
In this method, remove the echo using deconvolution. Rewrite Equation (7) as follows [7]:
The echoed signal is the convolution of the original signal x (n∆) and the signal h (n∆). Use the
LabVIEW MathScript function deconv(y,h) to recover the original signal.
Method 2
An alternative way of removing the echo is to run the echoed signal through the following
system:
Assume that z [n∆] = 0for n < 0. Implement the above system for dierent values of a and N.
Display and play back the echoed signal and the echo-free signal using both of the above methods.
Specify the parameters aand N as controls. Try to measure the proper values of aand N by the
autocorrelation method described below.
The autocorrelation of a signal can be described by the convolution of a signal with its mirror.
That is,
Use the autocorrelation of the output signal (echo-free signal) to estimate the delay time ( N) and
the amplitude of the echo ( a). For dierent values of N and a, observe the autocorrelation output.
To have an echo-free signal, the side lobes of the autocorrelation should be quite low, as shown in
Figure 3.21.
82 CHAPTER 3. CONVOLUTION AND LINEAR TIME-INVARIANT SYSTEMS
Figure 3.21: Autocorrelation Function of a Signal: (a) Echo Is Not Removed Completely; (b) Echo Is
Removed
Figure 3.22 shows a typical front panel for this exercise. It is not necessary to obtain the same
front panel but there should be controls for a and N as well as graphs to observe the echoed signal,
echo-free signal and autocorrelation function of the echo-free signal.
83
Fourier Series
1
4.1 Fourier Series
4.1.1 Background
A periodic signal x (t)can be expressed by an exponential Fourier series as follows:
∞
2π nt
X
x (t) = cn ej T (4.1)
n=−∞
where T indicates the period of the signal and cn 's are called Fourier series coecients, which, in general,
are complex. Obtain these coecients by performing the following integration
Z
1 2π nt
cn = x (t) e−j T dt (4.2)
T
T
where the symbol | . | denotes magnitude and ∠ phase. Magnitudes of the coecients possess even symmetry
and their phases odd symmetry.
A periodic signal x (t) can also be represented by a trigonometric Fourier series as follows:
∞
X 2π nt 2π nt
x (t) = a0 + an cos + bn sin (4.5)
n=1
T T
where
Z
1
a0 = x (t) dt (4.6)
T
T
Z
2 2π nt
an = x (t) cos dt (4.7)
T T
T
1 This content is available online at <http://cnx.org/content/m19832/1.4/>.
87
88 CHAPTER 4. FOURIER SERIES
Z
2 2π nt
bn = x (t) sin dt (4.8)
T T
T
The relationships between the trigonometric series and the exponential series coecients are given by
a0 = c0 (4.9)
an = 2Re{cn } (4.10)
bn = −2Im{cn } (4.11)
1
cn = (an − jbn ) (4.12)
2
where Re and Imdenote the real and imaginary parts, respectively.
According to the Parseval's theorem, the average power in the signal x (t) is related to the Fourier series
coecients cn 's, as indicated below
Z ∞
1 2
X 2
| x (t) | dt = | cn | (4.13)
T n=−∞
T
More theoretical details of Fourier series are available in signals and systems textbooks [9] - [15] .
M
1 X
a0 = x (m∆t) (4.14)
M m=1
M
2 X 2π mn
an = x (m∆t) cos (4.15)
M m=1 M
M
2 X 2π mn
bn = x (m∆t) sin (4.16)
M m=1 M
M
1 X j2π mn
cn = x (m∆t) exp (4.17)
M M
m=M
89
2
4.2 Lab 4: Fourier Series and Its Applications
In this lab, we examine the representation of periodic signals based on Fourier series. Periodic signals can
be represented by a linear combination of an innite sum of sine waves, as expressed by the trigonometric
Fourier series representation.Periodic signals can also be represented by an innite sum of harmonically
related complex exponentials, as expressed by the exponential Fourier series representation. In this lab,
we analyze both of these series representations. In particular, we focus on how to compute Fourier series
coecients numerically.
Table 4.1: LabVIEW MathScript Functions for Generating Various Waveforms or Signals
Use a switch structure to select dierent types of input waveforms. Set the switch parameter w as the
input and connect it to an Enum Control(Controls → Modern → Ring & Enum → Enum). Edit
the Enum Control items to include all the waveform types.
Set Amplitude of input (A), Period of input (T) and Number of Fourier coecients (N) as control pa-
rameters. Determine Fourier coecients a0 , an and bn and reconstruct the signal from its Fourier coecients
using equations provided in Chapter 4. Determine the error between the input and the reconstructed signal
Θ
by simply taking the absolute values of x (t) − x (t)via the LabVIEW MathScript function abs. Finally,
determine the maximum and average errors by using the functions max and sum. Figure 4.1 shows the
completed block diagram of the Fourier series signal decomposition and reconstruction system.
Display the input signal using a waveform graph. Before displaying the graph, congure it using the
function Build Waveform(Functions → Programming → Waveforms → Build Waveforms). Also
display the Fourier coecients, reconstructed signal and error in the waveform graph, and place several
numerical indicators to show the values of the Fourier coecients, maximum error and average error.
Figure 4.2 and Figure 4.3 illustrate the front panel of the Fourier series signal decomposition and re-
construction system, respectively. To display all the outputs within a limited screen area, use a Tab Con-
trol(Controls → Modern → Containers → Tab Control) in the front panel. Here the outputs are
arranged in two dierent tabs: Fourier Series and Signal Reconstruction.
Figure 4.1: Block Diagram of Fourier Series Signal Decomposition and Reconstruction Example
91
92 CHAPTER 4. FOURIER SERIES
Figure 4.2: Front Panel of Fourier Series Signal Decomposition and Reconstruction Example (Fourier
Series Tab)
93
94 CHAPTER 4. FOURIER SERIES
Figure 4.3: Front Panel of Fourier Series Signal Decomposition and Reconstruction Example (Signal
Reconstruction Tab)
95
The block diagram of this linear circuit or system is shown in Figure 4.5. Determine the Fourier series
coecients of the input voltage signal as discussed in the previous example. Because the Fourier series
involves the sum of sinusoids, phasor analysis can be used to obtain the output voltage (vc ). Let n represent
the number of terms in the Fourier series. By using the voltage divider rule, the output voltage (vc ) can be
expressed as [9],
1/ (jnωC)
vc n = vin (4.18)
R + 1/ (jnωC) n
Because the sine and cosine components of the input voltage are known, one can easily determine the output
by adding the individual output components because the circuit is linear. Determine each output voltage
component by using (4.18).
Figure 4.6 and Figure 4.7 show the front panel of this system for its two tabs. The magnitude and phase
of the sine and cosine components are shown in the front panel separately. Furthermore, the tab control is
used to show the Fourier series and system output separately.
96 CHAPTER 4. FOURIER SERIES
Figure 4.5: Block Diagram of Circuit Analysis with Trigonometric Fourier Series
97
98 CHAPTER 4. FOURIER SERIES
Figure 4.6: Front Panel of Circuit Analysis with Trigonometric Fourier Series (Fourier Series Tab)
99
100 CHAPTER 4. FOURIER SERIES
Figure 4.7: Front Panel of Circuit Analysis with Trigonometric Fourier Series (System Output Tab)
101
The input voltage for the circuit is to be either a square wave or a triangular wave with a period
T=2 seconds.
Compute and display the following:
Hints:
RMS Value
The RMS value of a periodic function v (t)with period T is given by
v Z
u1
VRMS = t v 2 dt (4.19)
u
T
T
The RMS value of a waveform consisting of sinusoids with dierent frequencies is equal to the square
root of the sum of the squares of the RMS value of each sinusoid. If a waveform is represented by
the following Fourier series
s 2 2 2
V V VN
VRMS = V02 + √1 + √2 + ... + √ (4.21)
2 2 2
Average power
The average power of the Fourier series can be expressed as
where B1 (t)is an increasing function of time (assuming a linear increment with time) and ais the
scaling factor having a value greater than 1. When the vehicle passes by, one can describe the signal
by
where B2 (t)is a decreasing function of time (assuming a linear decrement with time) and bis the
scaling factor having a value less than 1.
First, generate a signal and create an upscale and a downscale version of it. Observe the Fourier
series for all the signals. Set the amplitude and frequency of the original signal and the scaling
factors as controls. In addition, play the sounds using the LabVIEW Play Waveform function.
Figure 4.9 shows a possible front panel for this type of system.
103
This exercise involves the design of algorithms used in the Yamaha DX7 music synthesizer, which
debuted in 1983 as the rst commercially available digital synthesizer.
The primary functional circuit in DX7 consists of a digital sine wave oscillator plus a digital
envelope generator. Let us use additive synthesis and frequency modulation to achieve synthesis
with six congurable operators. When one adds together the output of some operators, an additive
synthesis occurs, and when one connects the output of one operator to the input of another operator,
a modulation occurs.
In terms of block diagrams, the additive synthesis of a waveform with four operators is illustrated
in Figure 4.10.
The output for the combination shown in Figure 4.10 can be written as
y (t) = A1 sin (ω1 t) + A2 sin (ω2 t) + A3 sin (ω3 t) + A4 sin (ω4 t) (4.25)
The output for the combination shown in this gure can be written as
Other than addition and frequency modulation, one can use feedback or self-modulation in DX7,
which involves wrapping back and using the output of an operator to modulate the input of the
same operator as shown in Figure 4.12.
105
Dierent arrangements of operators create dierent algorithms. Figure 4.13 displays the diagram
of an algorithm.
y (t) = A1 sin (ω1 t + A2 sin (ω2 t)) + A3 sin (ω3 t + A4 sin (ω4 t + A5 sin (ω5 t + y6 (t)))) (4.28)
With DX7, one can choose from 32 dierent algorithms. As one moves from algorithm No. 32
to algorithm No. 1, the harmonics complexity increases. In algorithm No. 32, all six operators
are combined using additive synthesis with a self modulator generating the smallest number of
harmonics. Figure 4.14 shows the diagram for all 32 combinations of operators. More details on
music synthesis and the Yamaha DX7 synthesizer can be found in the [1]-[20].
Next, explore designing a system with six operators and set their amplitude and frequency as
controls. By combining these operators, construct any three algorithms, one from the lower side
(for example, algorithm No. 3), one from the middle side (for example, algorithm No. 17) and the
nal one from the upper side (for example, algorithm No. 30). Observe the output waves in the
time and frequency domains (nd the corresponding Fourier series).
106 CHAPTER 4. FOURIER SERIES
1
5.1 Continuous-Time Fourier Transform
In this lab, we learn how to compute the continuous-time Fourier transform (CTFT), normally referred to as
Fourier transform, numerically and examine its properties. Also, we explore noise cancellation and amplitude
modulation as applications of Fourier transform.
Z∞
X (ω) = x (t) e−jωt dt (5.1)
−∞
The signal x (t) can be recovered from X (ω) via this inverse transform equation
Z∞
1
x (t) = X (ω) ejωt dω (5.2)
2π
−∞
Refer to signals and systems textbooks [9] - [15] for more theoretical details on this transform.
109
110 CHAPTER 5. CONTINUOUS-TIME FOURIER TRANSFORM
Z∞ ZT N
X −1
−jωt
x (t) e dt = x (t) e−jωt dt ≈ x (nτ ) e−jωnτ τ (5.3)
−∞ 0 n=0
where T = Nτ and N is an integer. For suciently small τ , the above summation provides a close approxi-
PN −1
mation to the CTFT integral. The summation n=0 x (nτ ) e−jωnτ is widely used in digital signal processing
(DSP), and both LabVIEW MathScript and LabVIEW have a built-in function for it called fft. In a .m
le, if N samples x (nτ ) are stored in a vector x, then the function call
xw=tau*fft (x)
calculates
PN −1
Xω (k + 1) = τ n=0 x (nτ ) e−jωk nτ 0≤k ≤N −1
(5.4)
≈ X (ωk )
where
2πk N
Nτ 0≤k≤ 2
ωk = { (5.5)
2πk 2π N
Nτ − τ 2 +1≤k ≤N −1
with N assumed to be even. The fft function returns the positive frequency samples before the negative
frequency samples. To place the frequency samples in the right order, use the function fftshift as indicated
below:
xw=fftshift(tau*fft (x ) )
Note that X (ω) is a vector (actually, a complex vector) of dimension N. X (ω) is complex in general
despite the fact that x (t) is real-valued. The magnitude of X (ω) can be computed using the function abs
and the phase of X (ω) using the function angle.
111
2
5.2 Lab 5: CTFT and Its Applications
Figure 5.2 and Figure 5.3 shows the front panel of the above system. Use controls named Pulse width,
Time shift and Time scaling to change the waveforms in the time domain. Three waveform graphs for Input
signal, Magnitude of FT and Phase of FT also appear in the front panel shown. With the specied front
panel controls, one can easily verify CTFT properties. To begin with, run the program in continuous mode
using the Run Continuously button.
114 CHAPTER 5. CONTINUOUS-TIME FOURIER TRANSFORM
Figure 5.2: Front Panel of CTFT and Its Properties: Input Signals Tab
115
116 CHAPTER 5. CONTINUOUS-TIME FOURIER TRANSFORM
Figure 5.3: Front Panel of CTFT and Its Properties: Combination of Input Signals Tab
117
Figure 5.4: Magnitude Spectrum for Dierent Pulse Widths: (a) 0.01, (b) 0.2, (c) 0.5, (d) 1
119
Figure 5.5: Magnitude and Phase Spectrum for Dierent Time Shifts: (a) 0, (b) 0.2, (c) 0.5, (d) 0.7
121
Figure 5.6: Magnitude Spectrum for Dierent Time Scalings: (a) 1, (b) 2, (c) 3, (d) 4
123
5.2.1.4 Linearity
Here, combine two signals to examine the linearity property of FT. Select Linear Combination for the Time
domain and Frequency domain combination method. This selection combines two time signals, x1 (t)and
x2 (t), linearly with the scaling factors, a1 and a2 , producing a new signal, a1 x1 (t) + a2 x2 (t). Figure 5.7
displays the FT of this linear combination. The linear combination in the frequency domain produces a
new signal, a1 X1 (ω) + a2 X2 (ω). Figure 5.7 also displays the inverse FT of this combination. Observe that
both combinations produce the same result in the time and frequency domains, as indicated by the linearity
property stated in Properties of CTFT section of Chapter 5.
124 CHAPTER 5. CONTINUOUS-TIME FOURIER TRANSFORM
Figure 5.11 shows the front panel of the system. Inside the Data File Path control, the location of the
speech data le is specied. Three graphs for the Original signal, Noise added signal and Noise reduced
signal are shown in both the time and frequency domains. Use the noise level control to allow setting the
amount of noise added to the original signal. After running the program, click on the Play button next to
each signal. Hear the Original Signal and the Noise added signal. Notice that an unpleasant high-pitched
noise gets added to the signal. If the noise level is set more than 0.5, the Original Signal becomes very
dicult to hear. Next, hear the Noise reduced signal, which is similar to the Original Signal. The Noise
reduced signal is not exactly the same as the Original Signal because some high-frequency components are
also removed along with the noise.
132 CHAPTER 5. CONTINUOUS-TIME FOURIER TRANSFORM
where xm (t)is called the message waveform, which contains the data of interest, and fc is the carrier wave
frequency. Using the fact that
1 2πf c t 1 ωc t
+ e−2πf c t = e + e−ωc t
cos (2πf c t) = e (5.7)
2 2
and the frequency shift property of CTFT, one can easily derive the CTFT of to be
1
X (ω) = (Xm (ω − ωc ) + Xm (ω + ωc )) (5.8)
2
At the receiver, some noisy version of this transmitted signal is received. The signal information resides
in the envelope of the modulated signal, and thus an envelope detector can be used to recover the message
signal.
Figure 5.12 shows the completed block diagram of the amplitude modulation and demodulation system.
In this example, use the combination of two sine waves to serve as a message signal. The signal is modulated
with a high-frequency carrier, and some random noise is added. The frequency domain versions of the signals
can also be observed using the function fft. As stated in Equation (3), the CTFT of the modulated signal
is merely some frequency-shifted version of the original signal. In single sideband (SSB) modulation, only
one side of the spectrum is transmitted due to symmetry. That is, just one side of the spectrum is taken
and converted into a time signal using the function ifft.
Figure 5.13 shows the completed front panel of this system. The Message signal, Modulated signal,
Received signal (modulated signal with additional noise) and Demodulated signal are displayed in four
waveform graphs in both the time and frequency domains.
134 CHAPTER 5. CONTINUOUS-TIME FOURIER TRANSFORM
x (t) = xm1 (t) cos (2πf 1 t) + xm2 (t) cos (2πf 2 t) + xm3 (t) cos (2πf 3 t) (5.9)
where xm1 (t) , xm2 (t) and xm3 (t) are the (message) signals containing the three letters of the
name. More specically, each of the signals, xm1 (t) , xm2 (t) and xm3 (t), corresponds to a single
letter of the alphabet. These letters are encoded using the International Morse Code as indicated
below [7]:
B −... I .. P . − −. W . −−
C −. − . J . − −− Q − − .− X −..−
D −.. K −.− R . −. Y −. − −
E . L . − .. S ... Z − − ..
F .. −. M −− T −
G −−. N −. U ..−
Now to encode the letter A, one needs only a dot followed by a dash. That is, only two prototype
signals are needed one to represent the dash and one to represent the dot. Thus, for instance,
to represent the letter A, set xm1 (t) = d (t) + dash (t), where d (t) represents the dot signal and
dash (t) the dash signal. Similarly, to represent the letter O, set xm1 (t) = 3dash (t).
Find the prototype signals d (t) and dash (t) in the le morse.mat on the book website. After
loading the le morse.mat
load morse
the signals d (t) and dash (t)can be located in the vectors dot and dash, respectively. The hidden
signal, which is encoded, per Equation (4), containing the letters of the name, is in the vector xt
Let the three modulation frequencies f1 , f2 and f3 be 20, 40 and 80 Hz, respectively.
• Using the amplitude modulation property of the CTFT, determine the three possible letters
and the hidden name. (Hint: Plot the CTFT of xt Use the values of T and τ au contained in the
le.)
• Explain the strategy used to decode the message. Is the coding technique ambiguous? That is,
is there a one-to-one mapping between the message waveforms ( xm1 (t) , xm2 (t) , xm3 (t)) and the
alphabet letters? Or can you nd multiple letters that correspond to the same message waveform?
Considering that dπl12 /λprovides a good approximation for any l1 in the slit, the electric eld
strength of the light striking the viewing screen can be expressed as [3]
Z∞
ej(2πd/λ) j(π/λd)l02
E0 (l0 ) = K e E1 (l1 ) e−j(2π/λd)l0 l1 dl1 (5.10)
jλd
−∞
where
E1 = eld strength at diraction screen
E0 = eld strength at viewing screen
K = constant of proportionality
λ= wavelength of light
The above integral is in fact Fourier transformation in a dierent notation. One can write the
eld strength at the viewing screen as [3]
(t)
E1f →l0 /λd
(5.11)
j(2πd/λ)
E0 (l0 ) = K e jλd ej(π/λd)l02 CTFT
The intensity I (l0 )of the light at the viewing screen is the square of the magnitude of the eld
strength. That is,
2
I (l0 ) = | E0 (l0 ) | (5.12)
1. Plot the intensity of the light at the viewing screen. Set the slit width to this range (0.5 to 5
mm), the wavelength of light λto this range (300 to 800 nm), and the distance of the viewing
screen dto this range (10 to 200 m) as controls. Assume the constant of proportionality is
−3
10 , and the electric eld strength at the diraction screen is 1 V/m.
2. Now replace the slit with two slits, each 0.1 mm in width, separated by 1 mm (center-to-
center) and centered on the optical axis. Plot the intensity of light in the viewing screen by
setting the parameters in part (1) as controls.
140 CHAPTER 5. CONTINUOUS-TIME FOURIER TRANSFORM
1
6.1 Digital Signals and Their Transforms
In this lab, we learn how to compute the continuous-time Fourier transform (CTFT), normally referred to as
Fourier transform, numerically and examine its properties. Also, we explore noise cancellation and amplitude
modulation as applications of Fourier transform.
In the previous labs, dierent mathematical transforms for processing analog or continuous-time signals
were covered. Now let us explore the mathematical transforms for processing digital signals. Digital signals
are sampled (discrete-time) and quantized version of analog signals. The conversion of analog-to-digital
signals is implemented with an analog-to-digital (A/D) converter, and the conversion of digital-to-analog
signals is implemented with a digital-to-analog (D/A) converter. In the rst part of the lab, we learn how
to choose an appropriate sampling frequency to achieve a proper analog-to-digital conversion. In the second
part of the lab, we examine the A/D and D/A processes.
2πf
where θ = ωTs =
fs denotes digital frequency with units being radians (as compared to analog frequency
ω with units being radians/second).
The dierence between analog and digital frequencies is more evident by observing that the same discrete-
time signal is obtained from dierent continuous-time signals if the product ωTs remains the same. (An
example is shown in Figure 6.1.) Likewise, dierent discrete-time signals are obtained from the same analog
or continuous-time signal when the sampling frequency is changed. (An example is shown in Figure 6.2.)
In other words, both the frequency of an analog signal f and the sampling frequency fs dene the digital
frequency θof the corresponding digital signal.
141
142 CHAPTER 6. DIGITAL SIGNALS AND THEIR TRANSFORMS
Figure 6.1: Sampling of Two Dierent Analog Signals Leading to the Same Digital Signal
Figure 6.2: Sampling of the Same Analog Signal Leading to Two Dierent Digital Signals
It helps to understand the constraints associated with the above sampling process by examining signals
in the frequency domain. The Fourier transform pairs for analog and digital signals are stated as
143
R∞
X (jω) = −∞
x (t) e−jωt dt
Fourier transform pair for analog signals { R∞
1
x (t) = 2π −∞
X (jω) ejωt dω
X ejθ = n=−∞ x [n] e−jnθ , θ = ωTs
P ∞
Fourier transform pair for discrete signals {
X ejθ ejnθ dθ
1
Rπ
x [n] = 2π −π
Table 6.1: Fourier transform pairs for analog and digital signals
Figure 6.3: (a) Fourier Transform of a Continuous-Time Signal, (b) Its Discrete-Time Version
As illustrated in Figure 6.3, when an analog signal with a maximum bandwidth of W (or a maximum
frequency of fmax ) is sampled at a rate of Ts = f1s , its corresponding frequency response is repeated every
2π radians, or fs . In other words, the Fourier transform in the digital domain becomes a periodic version of
the Fourier transform in the analog domain. That is why, for discrete signals, one is interested only in the
frequency range [0, fs /2].
Therefore, to avoid any aliasing or distortion of the discrete signal frequency content and to be able to
recover or reconstruct the frequency content of the original analog signal, we must have fs ≥ 2f max . This
is known as the Nyquist rate. The sampling frequency should be at least twice the highest frequency in the
analog signal. Normally, before any digital manipulation, a front-end anti-aliasing lowpass analog lter is
used to limit the highest frequency of the analog signal.
Let us further examine the aliasing problem by considering an undersampled sinusoid as depicted in
Figure 6.4 . In this gure, a 1 kHz sinusoid is sampled at fs = 0.8kHz, which is less than the Nyquist rate
of 2 kHz. The dashed-line signal is a 200 Hz sinusoid passing through the same sample points. Thus, at the
144 CHAPTER 6. DIGITAL SIGNALS AND THEIR TRANSFORMS
sampling frequency of 0.8 kHz, the output of an A/D converter is the same if one uses the 1 kHz or 200 Hz
sinusoid as the input signal. On the other hand, oversampling a signal provides a richer description than
that of the signal sampled at the Nyquist rate.
6.1.2 Quantization
An A/D converter has a nite number of bits (or resolution). As a result, continuous amplitude values get
represented or approximated by discrete amplitude levels. The process of converting continuous into discrete
amplitude levels is called quantization. This approximation leads to errors called quantization noise. The
input/output characteristic of a 3-bit A/D converter is shown in Figure 6.5 to illustrate how analog voltage
values are approximated by discrete voltage levels.
145
Figure 6.5: Characteristic of a 3-Bit A/D Converter: (a) Input/Output Transfer Function, (b) Additive
Quantization Noise
Quantization interval depends on the number of quantization or resolution levels, as illustrated in Fig-
ure 6.6. Clearly the amount of quantization noise generated by an A/D converter depends on the size of
the quantization interval. More quantization bits translate into a narrower quantization interval and, hence,
into a lower amount of quantization noise.
In Figure 6.6, the spacing ∆ between two consecutive quantization levels corresponds to one least sig-
nicant bit (LSB). Usually, it is assumed that quantization noise is signal-independent and is uniformly
distributed over 0.5 LSB and 0.5 LSB. Figure 6.7 also shows the quantization noise of an analog signal
quantized by a 3-bit A/D converter and the corresponding bit stream.
146 CHAPTER 6. DIGITAL SIGNALS AND THEIR TRANSFORMS
Figure 6.7: Quantization of an Analog Signal by a 3-Bit A/D Converter: (a) Output Signal and
Quantization Error, (b) Histogram of Quantization Error, (c) Bit Stream
147
Sample this sine wave at 40 kHz to generate 0.125 seconds of x (t). Note that the sampling interval, seconds,
is very short, so x (t) appears as an analog signal.
Sampling involves taking samples from an analog signal every seconds. The above example generates a
discrete signal x [n] by taking one sample from the analog signal every seconds. To get a digital signal, apply
quantization to the discrete signal.
According to the Nyquist theorem, an analog signal z can be reconstructed from its samples by using the
following equation:
∞
X t − kTs
z (t) = z [kTs ] sinc (6.3)
Ts
k=−∞
This reconstruction is based on the summations of shifted sinc (sinx/x) functions. Figure 6.8 illustrates the
reconstruction of a sine wave from its samples achieved in this manner.
Figure 6.8: Reconstruction of an Analog Sine Wave Based on its Samples, f = 125 Hz and fs = 1 kHz
It is dicult to generate sinc functions by electronic circuitry. That is why, in practice, one uses an
approximation of a sinc function. Figure 6.9 shows an approximation of a sinc function by a pulse, which
is easy to realize in electronic circuitry. In fact, the well-known sample and hold circuit performs this
approximation.
148 CHAPTER 6. DIGITAL SIGNALS AND THEIR TRANSFORMS
x (t) e−jω0 kt dt
1
R T /2
Xk = −T /2
T
Fourier series for periodic analog signals { , where T denotes
x (t) = k=−∞ Xk ejω0 kt
P∞
N nk
PN −1 −j 2π
X [k] = n=0 x [n] e , k = 0, 1, ..., N − 1
Discrete Fourier transform (DFT) for periodic dis- {
N nk
1
P N −1 j 2π
crete signals x [n] = N k=0 X [k] e , n = 0, 1, ..., N − 1
Table 6.2: Fourier series pairs for analog and digital signals
2
6.2 Lab 6: Analog-to-Digital Conversion, DTFT and DFT
6.2.1.2 Aliasing
Set the sampling frequency to fs = 100Hz and change the analog frequency of the signal. Observe the
output for fs = 10Hz and fs = 210Hz (See Figure 6.12 and Figure 6.13). The analog signals appear entirely
dierent in these two cases but the discrete signals are similar. For the second case, the sampling frequency
is less than twice that of the analog signal frequency. This violates the Nyquist sampling rate leading to
aliasing, which means one does not know from which analog signal the digital signal is created. Note the
value of digital frequency is 0.1 radians for the rst case and 2.1 radians for the second case. To prevent any
aliasing, keep the digital frequency less than 0.5 radians.
153
Figure 6.13: Analog and Discrete Waveforms with fs = 100 Hz and f = 210 Hz
156 CHAPTER 6. DIGITAL SIGNALS AND THEIR TRANSFORMS
6.2.1.3 Quantization
Now change the Number of quantization levels for some xed values of Frequency and Sampling Frequency.
As the number of quantization levels is increased, the Digital waveform becomes smoother and a smaller
amount of quantization error or noise is generated.
157
Figure 6.14: Digital Waveform with Dierent Numbers of Quantization Levels: (a) 8, (b) 6, (c) 32
158 CHAPTER 6. DIGITAL SIGNALS AND THEIR TRANSFORMS
Figure 6.15: Signal Reconstruction with Dierent Number of Samples Skipped in ADC: (a) 20, (b)10,
(c) 5
160 CHAPTER 6. DIGITAL SIGNALS AND THEIR TRANSFORMS
Generate a periodic square wave with the time period T = 0.1. Connect the input variable mode to an
162 CHAPTER 6. DIGITAL SIGNALS AND THEIR TRANSFORMS
Enum Control to make the signal periodic or aperiodic. If the signal is periodic (case 0), compute the FS
of the analog signal and the DFT of the digital signal using the fft function over one period of the signal.
For aperiodic signals, only one period of the square wave is considered and the remaining portion is padded
with zeros. For aperiodic signals, the transformations are CTFT (for analog signals) and DTFT (for digital
signals), which are computed using the fft function. In fact, this function provides a computationally ecient
implementation of the DFT transformation for periodic discrete-time signals. However, because simulated
analog signals are actually discrete with a small time interval, this function is also used to compute the
Fourier series for continuous-time signals. Because DFT requires periodicity, one needs to treat aperiodic
signals as periodic with a period T = ∞to apply this useful function. That is why the fft function is also
used for aperiodic signals to compute CTFT and DTFT (as done in the earlier labs). However, in practice, it
should be noted that the period of the zero padded signal is not innite but assumed long enough to obtain
a close approximation. Apply the same approach to the computation of CTFT and DTFT. Because DTFT
is periodic in the frequency domain, for digital signals, repeat the frequency representation using the textual
statement yd=repmat(yd,1,9), noting that the fft function computes the transformation for one period
only.
163
Figure 6.17: Front Panel of a DTFT and DFT Transformation System: Aperiodic Signal
164 CHAPTER 6. DIGITAL SIGNALS AND THEIR TRANSFORMS
Figure 6.18: Front Panel of a DTFT and DFT Transformation System: Periodic Signal
Figure 6.17 and Figure 6.18 illustrates the front panel of the above transformation system. It shows
the Analog signal and Discrete signal in the time and frequency domains using two waveform graphs. The
transformation type is also shown in the front panel for both of the signals.
165
The sound heard when a key is pressed is a signal composed of two sine waves. That is
Other than touch-tone signals, modern telephone systems use DTMF event signals for dial tone, busy tone
and ringing tone. Table 1 lists the frequency and timing for standard DTMF event signals.
In this application, let us examine the touch-tone dialing system of a digital telephone. Ten input
variables (k0 , k1 , ....., k9 )are assigned to the telephone keys (0, 1, ....., 9). Each input is connected to a Boolean
OK
control. Dierent types of Boolean controls can be created on the front panel. For this application, use
Buttons(Controls → Modern Boolean → OK), each of which is marked with a number from 0 to
→
9. The selected operation properties of an OK Button is Switch until released, as shown in Figure 6.20.
This ensures that the corresponding signal gets generated when a key is pressed and gets back into its initial
position when the key is released.
k10 , to act as a counter to count the number of times the keys are pressed. At
Use another input variable,
the beginning, when no key is pressed, the value of k10 is zero and the system returns the dial tone (350 and
440 Hz continuous tone). When the value of k10 is equal to 10, meaning that the keys were pressed for a total
of 10 times, the system assumes that a valid phone number is dialed and returns the busy tone or ringing
(k0 , k1 , ....., k9 ) to a Compound Arithmatic function (Functions
tone. Connect all the Boolean inputs
→ Programming → Boolean → Compound Arithmatic) and select the OR mode. The output of this
function becomes true(1) if any number key is pressed. The result is connected to the Case selector input of
a case structure. The input variable is also connected to the case structure. For true case, k10 is connected to
an Increment function (Functions→Programming →Numeric →Increment) and for the false case,
While Loop(Functions →Programming
it is kept unchanged. The entire system is wrapped inside a
→Structures →While Loop). The output of the case structure is then connected to a Greater or Equal
function (Functions →Programming →Comparison →Greater or Equal) to ensure that the program
exits from the while loop when is greater than or equal to 10. The system shows the ringing tone or busy
tone in the graph and plays the waveform. Figure 6.21 shows the completed block diagram of the touch-tone
telephone system.
168 CHAPTER 6. DIGITAL SIGNALS AND THEIR TRANSFORMS
Figure 6.22 shows the front panel of the touch-tone telephone system. When the program is run, one can
hear the dial tone and see the signal displayed in the upper waveform graph. As soon as any number key is
pressed, the dial tone is stopped and the corresponding key pad tone is heard and displayed. When keys are
pressed 10 times (a valid phone number), the system plays the ringing tone or busy tone depending on the
setting and displays the tone in the lower waveform graph.
170 CHAPTER 6. DIGITAL SIGNALS AND THEIR TRANSFORMS
Figure 6.23: Processing at One Half-Step Size: (a) From Top, the Original, Digitized and Smoothed
Signal without Dithering, (b) From Top, the Noise Added, Digitized and Smoothed Signal with Dithering
172 CHAPTER 6. DIGITAL SIGNALS AND THEIR TRANSFORMS
1. Compute and display the 2D DFT of the image using the LabVIEW MathScript functions
fft2 and fftshift.
2. Remove the low-frequency components of the image. A user-controlled threshold can be
specied to remove a varying amount of the low-frequency components.
3. Compute and display the inverse 2D DFT of the image using the LabVIEW MathScript
functions ifft2 and fftshift. The processed image should reect the edges in the original
image.
1
7.1 Analysis of Analog and Digital Systems
In the previous labs, dierent mathematical transformation tools to represent analog and discrete signals
were examined. This nal lab builds on the knowledge gained in the previous labs to show how to use these
tools to perform signal processing.
175
176 CHAPTER 7. ANALYSIS OF ANALOG AND DIGITAL SYSTEMS
Figure 7.1: Characteristics of Ideal Filters (a) Lowpass, (b) Highpass, (c) Bandpass, (d) Bandstop
The voltage output for the circuit shown in Figure 7.2 is given by [9]:
1/ (jωC)
Vout = Vin (7.1)
R + 1/ (jωC)
Vout 1
| H (ω) |=| |= √ (7.2)
Vin 1 + ω 2 R2 C 2
Vout
∠H (ω) = arg = −tan−1 (ω RC) (7.3)
Vin
If the positions of R and C are interchanged, a simple analog highpass lter is obtained as shown in
Figure 7.3.
R
Vout = Vin (7.4)
R + 1/ (jωC)
The corresponding magnitude and phase responses are
Vout 1
| H (ω) |=| |= p (7.5)
Vin 1 + 1/ (ω 2 R2 C 2 )
Vout −1 1
∠H (ω) = arg = tan (7.6)
Vin ω RC
N
X
y [n] = bk x [n − k] (7.7)
k=0
where b's denote the lter coecients and the lter order. As described by this equation, an FIR lter uses
a current input x [n] and a number of previous inputs x [n − k] to generate a current output y [n].
178 CHAPTER 7. ANALYSIS OF ANALOG AND DIGITAL SYSTEMS
N
X M
X
y [n] = bk x [n − k] − ak y [n − k] (7.8)
k=0 k=1
where b's and a's denote the lter coecients and N and M the number of zeros and poles, respectively.
As indicated by Equation (8), an IIR lter uses a number of previous outputs y [n − k] as well as a current
and a number of previous inputs to generate a current output y [n].
In general, as compared to IIR lters, FIR lters require less precision and are computationally more
stable. Table 1 lists some of the dierences between FIR and IIR lters. For the theoretical details on these
dierences, refer to [12].
where b's and a's denote the lter coecients and and the number of zeros and poles, respectively. As
indicated by Equation (8), an IIR lter uses a number of previous outputs y [n − k] as well as a current and
a number of previous inputs to generate a current output y [n].
Ns
Y b0k + b1k e−jω + b2k e−j2ω
H (ω) = (7.10)
1 + a1k e−jω + a2k e−j2ω
k=1
where Ns = bN/2c and b.c represents the largest integer less than or equal to the argument. This serial or
cascaded structure is illustrated in Figure 7.4.
Each second-order lter is considered to be of direct-form II, shown in Figure 7.5, for its memory eciency.
One can implement each second-order lter in software. Normally, digital lters are implemented in software,
but one can also implement them in hardware by using digital circuit adders and shifters.
179
For this example, consider ve b's and four a's. The system output is displayed using a waveform graph.
Figure 7.7 shows the front panel of the above system. The front panel can be used to interactively select
the input type and set the coecients a and b. The system response for a particular type of input (impulse,
step or sine) is shown in the waveform graph.
182 CHAPTER 7. ANALYSIS OF ANALOG AND DIGITAL SYSTEMS
1 x [n]
y [n] = y [n − 1] + (7.12)
2 y [n − 1]
If the input x [n] to this equation is set as a step function of amplitude A, then y [n] converges to the square
root of A after several iterations.
183
Figure 7.8 shows the block diagram for a square root computation system. The number of iterations
required to converge to the true value is shown in the output. The initial condition Initial value is set as a
control. Figure 7.9 shows the corresponding front panel.
For the digital case, use a lower sampling rate (dw2=0.001). With the Enum controls Digital lter type 1
and Digital lter type 2, select lowpass or highpass and FIR or IIR lter type. Use a Build Waveform function
and a waveform graph to display the magnitude and phase responses of the digital lters. Figure 7.11 shows
the front panel of this ltering system. For a better view of magnitude response of the digital lter, set the
properties of the waveform graph as shown in Figure 7.12 .
values of the coecients required for an equivalent IIR digital lter design.
191
192 BIBLIOGRAPHY
Bibliography
[1] D. Benson. Music: A Mathematical Oering. Cambridge University Press, rst edition edition, 2006.
[6] National Instruments. Developing Algorithms Using LabVIEW MathScript: Part 1 8211; The LabVIEW
MathScript Node. National Instruments, http://zone.ni.com/devzone/cda/tut/p/id/3256, 2007.
[8] B. Heck; E. Kamen. Fundamentals of Signals and Systems Using the Web and MATLAB. Prentice-Hall,
third edition edition, 2006.
[9] S. Karris. Signals and Systems with MATLAB Applications. Orchard Publications, second edition
edition, 2003.
[10] N. Kehtarnavaz. Digital Signal Processing System-Level Design Using LabVIEW. Elsevier, second
edition edition, 2008.
[11] B. Lathi. Linear Systems and Signals. Oxford University Press, second edition edition, 2004.
[12] S. Mitra. Digital Signal Processing: A Computer Based Approach. McGraw-Hill, second edition edition,
2000.
[13] C. Phillips; E. Riskin; J. Parr. Signals, Systems and Transformations. Prentice-Hall, third edition
edition, 2002.
[15] M. Roberts. Signals and Systems. McGraw-Hill, rst edition edition, 2004.
[16] M. Schetzen. Airborne Doppler Radar: Applications, Theory, and Philosophy. AIAA Publisher, rst
edition edition, 2006.
[17] J. Buck; M. Daniel; A. Singer. Computer Explorations in Signal and Sytems Using MATLAB. Prentice-
Hall, second edition edition, 1996.
[18] S. Soliman; M. Srinath. Continuous and Discrete Signals and Systems. Prentice-Hall, second edition
edition, 1998.
193
194 BIBLIOGRAPHY
[19] D. Fannin; R. Ziemer; W. Tranter. Signals and Systems: Continuous and Discrete. Prentice-Hall, fourth
edition edition, 1998.
[20] YAMAHA. DX7 Digital Programmable Algorithm Synthesizer. YAMAHA Manual, 1999.
INDEX 195
Keywords are listed by the section with that keyword (page numbers are in parentheses). Keywords
do not necessarily appear in the text of the page. They are merely associated with that section. Ex.
apples, 1.1 (1) Terms are referenced by the page they appear on. Ex. apples, 1
Systems, 1
D Data Type, 25, 25
Add Input, 62
Add Page After, 15
E Echo Cancellation, 81
edit item, 54
Add Page Before, 15
election, 8
Add Terminal, 23
Enum Control, 54, 54, 54, 89, 111, 180
Appearance, 25
Attribute, 178 F FDM Detector, 188
Au, 8 FIR lter, 178
Automatic Tool Selection, 18 for loop, 13, 14, 40
aveform, 111 Frequency, 165
average.m, 41 Frequency Division Multiplexing (FDM), 188
Byte, 25
I if, 40
Command Window, 37
196 INDEX
K Knobs, 25 S S, 8
Save, 22, 29
L L, 167
Snapshot, 29
LabVIEW, 1.1(4)
Spectrum characteristics, 148
LabVIEW MathScript function, 89
Start, 29
LEDs palette, 9
Stop, 27, 27, 29
Logical Operators, 41
String Control, 129
oop, 167
U Unbundle by Name, 15
P palette, 18, 18
V View As Icon, 21
Patterns, 23
Visible Items, 43
Play, 131
Play Waveform, 81, 81, 81, 102, 129, 137
W W, 111, 167
Probe, 28
Waveform Graph, 50, 54, 129
Prole Memory Usage, 29
Waveform type, 89
Properties, 25, 54, 109
while, 40
R raph, 111
while loop, 14, 26, 26, 27
www.utdallas.edu/∼kehtar/signals-systems, 2
Relational Operators, 41
Remove Page, 15
X x, 37
Remove Terminal, 23
x*.y, 37
Representation, 25
x./y, 37
RL Circuit Analysis, 101
x.^p, 37
Run, 20, 23
XY graph, 45, 129
Run Continuously, 113
Run script, 41, 41 Y y, 37
ATTRIBUTIONS 197
Attributions
Module: "Preface"
By: Nasser Kehtarnavaz, Philipos Loizou, Mohammad Rahman
URL: http://cnx.org/content/m19826/1.1/
Pages: 1-2
Copyright: Nasser Kehtarnavaz, Philipos Loizou, Mohammad Rahman
License: http://creativecommons.org/licenses/by/3.0/
Module: "References"
By: Mohammad Rahman
URL: http://cnx.org/content/m31521/1.3/
Page: 191
Copyright: Mohammad Rahman
License: http://creativecommons.org/licenses/by/3.0/
About Connexions
Since 1999, Connexions has been pioneering a global system where anyone can create course materials and
make them fully accessible and easily reusable free of charge. We are a Web-based authoring, teaching and
learning environment open to anyone interested in education, including students, teachers, professors and
lifelong learners. We connect ideas and facilitate educational communities.
Connexions's modular, interactive courses are in use worldwide by universities, community colleges, K-12
schools, distance learners, and lifelong learners. Connexions materials are in many languages, including
English, Spanish, Chinese, Japanese, Italian, Vietnamese, French, Portuguese, and Thai. Connexions is part
of an exciting new information distribution system that allows for Print on Demand Books. Connexions
has partnered with innovative on-demand publisher QOOP to accelerate the delivery of printed course
materials and textbooks into classrooms worldwide at lower prices than traditional academic publishers.