DSP Blockset    
Sine Wave

Generate a continuous or discrete sine wave.

Library

DSP Sources

Description

The Sine Wave block generates a multichannel real or complex sinusoidal signal, with independent amplitude, frequency, and phase in each output channel. A real sinusoidal signal is generated when the Output complexity parameter is set to Real, and is defined by an expression of the type

where A is specified by the Amplitude parameter, f is specified in hertz by the Frequency parameter, and  is specified in radians by the Phase parameter. A complex exponential signal is generated when the Output complexity parameter is set to Complex, and is defined by an expression of the type

Sections of This Reference Page

Generating Multi-Channel Outputs

For both real and complex sinusoids, the Amplitude, Frequency, and Phase parameter values (Af, and ) can be scalars or length-N vectors, where N is the desired number of channels in the output. If at least one of these parameters is specified as a length-N vector, scalar values specified for the other parameters are applied to every channel.

For example, to generate the three-channel output containing the real sinusoids below, set Output complexity to Real and the other parameters as follows:

Output Sample Time and Samples Per Frame

In all discrete modes (see below), the block buffers the sampled sinusoids into frames of size M, where M is specified by the Samples per frame parameter. The output is a frame-based M-by-N matrix with frame period M*Ts, where Ts is specified by the Sample time parameter. For M=1, the output is sample-based.

Sample Mode

The Sample mode parameter specifies the block's sampling property, which can be Continuous or Discrete:

Discrete Computational Methods

When Discrete is selected from the Sample mode parameter, the secondary Computation method parameter provides three options for generating the discrete sinusoid:

Trigonometric Fcn.   The trigonometric function method computes the sinusoid in the ith channel, yi, by sampling the continuous function

or

with a period of Ts, where Ts is specified by the Sample time parameter. This mode of operation shares the same benefits and liabilities as the Continuous sample mode described above.

If the period of every sinusoid in the output is evenly divisible by the sample period, meaning that 1/(fiTs) = ki is an integer for every output yi, then the sinusoidal output in the ith channel is a repeating sequence with a period of ki samples. At each sample time, the block evaluates the sine function at the appropriate time value within the first cycle of the sinusoid. By constraining trigonometric evaluations to the first cycle of each sinusoid, the block avoids the imprecision of computing the sine of very large numbers, and eliminates the possibility of discontinuity during extended operations (when an absolute time variable might overflow). This method therefore avoids the memory demands of the table look-up method at the expense of many more floating-point operations.

Table Lookup.   The table look-up method precomputes the unique samples of every output sinusoid at the start of the simulation, and recalls the samples from memory as needed. Because a table of finite length can only be constructed if all output sequences repeat, the method requires that the period of every sinusoid in the output be evenly divisible by the sample period. That is, 1/(fiTs) = ki must be an integer value for every channel i = 1, 2, ..., N. When the Optimize table for parameter is set to Speed, the table constructed for each channel contains ki elements. When the Optimize table for parameter is set to Memory, the table constructed for each channel contains ki/4 elements.

For long output sequences, the table look-up method requires far fewer floating-point operations than any of the other methods, but may demand considerably more memory, especially for high sample rates (long tables). This is the recommended method for models that are intended to emulate or generate code for DSP hardware, and that therefore need to be optimized for execution speed.

Differential.   The differential method uses an incremental (differential) algorithm rather than one based on absolute time. The algorithm computes the output samples based on the output values computed at the previous sample time (and precomputed update terms) by making use of the following identities.

The update equations for the sinusoid in the ith channel, yi, can therefore be written in matrix form (for real output) as

where Ts is specified by the Sample time parameter. Since Ts is constant, the right-hand matrix is a constant and can be computed once at the start of the simulation. The value of Aisin[2fi(t+Ts)+i] is then computed from the values of sin(2fit+i) and cos(2fit+i) by a simple matrix multiplication at each time step.

This mode offers reduced computational load, but is subject to drift over time due to cumulative quantization error. Because the method is not contingent on an absolute time value, there is no danger of discontinuity during extended operations (when an absolute time variable might overflow).

Examples

The dspsinecomp demo provides a comparison of all the available sine generation methods.

Dialog Box

Amplitude
A length-N vector containing the amplitudes of the sine waves in each of N output channels, or a scalar to be applied to all N channels. The vector length must be the same as that specified for the Frequency and Phase parameters. Tunable (when Computation method is not set to Table lookup); when the amplitude values can be altered while a simulation is running, but the vector length must remain the same.
Frequency
A length-N vector containing frequencies, in rad/s, of the sine waves in each of N output channels, or a scalar to be applied to all N channels. The vector length must be the same as that specified for the Amplitude and Phase parameters. You can specify positive, zero, or negative frequencies. Tunable (when Computation method is not set to Table lookup); the frequency values can be altered while a simulation is running, but the vector length must remain the same. Not tunable in the Simulink external mode when using the differential method.
Phase offset
A length-N vector containing the phase offsets, in radians, of the sine waves in each of N output channels, or a scalar to be applied to all N channels. The vector length must be the same as that specified for the Amplitude and Frequency parameters. Tunable (when Computation method is not set to Table lookup); the phase values can be altered while a simulation is running, but the vector length must remain the same. Not tunable in the Simulink external mode when using the differential method.
Sample mode
The block's sampling behavior, Continuous or Discrete.
Output complexity
The type of waveform to generate: Real specifies a real sine wave, Complex specifies a complex exponential. Tunable.
Computation method
The method by which discrete-time sinusoids are generated: Trigonometric fcn, Table lookup, or Differential. This parameter is disabled when Continuous is selected from the Sample mode parameter. For details, see Discrete Computational Methods.
Optimize table for
Optimizes the table of sine values for Speed or Memory (this parameter is only visible when the Computation method parameter is set to Table lookup). When optimized for speed, the table contains k elements, and when optimized for memory, the table contains k/4 elements, where k is the number of input samples in one full period of the sine wave.
Sample time
The period with which the sine wave is sampled, Ts. The block's output frame period is M*Ts, where M is specified by the Samples per frame parameter. This parameter is disabled when Continuous is selected from the Sample mode parameter.
Samples per frame
The number of consecutive samples from each sinusoid to buffer into the output frame, M. This parameter is disabled when Continuous is selected from the Sample mode parameter.
Show additional parameters
If selected, additional parameters specific to implementation of the block become visible as shown.

Output data type
Specify the output data type in out of the following ways:
Word length
Specify the word length, in bits, of the fixed-point output data type. This parameter is only visible if Fixed-point is selected for the Output data type parameter.
User-defined data type
Specify any built-in or fixed-point data type. You can specify fixed-point data types using the sfix, ufix, sint, uint, sfrac, and ufrac functions from the Fixed-Point Blockset. This parameter is only visible if User-defined is selected for the Output data type parameter.
Set fractional bits in output to
Specify the scaling of the fixed-point output by either of the following two methods:
Number of fractional bits in output
For fixed-point output data types, specify the number of fractional bits, or bits to the right of the binary point. This parameter is only visible if Fixed-point or User-defined is selected for the Output data type parameter, and if User-defined is selected for the Set fractional bits in output to parameter.
State when re-enabled
The behavior of the block when a disabled subsystem containing it is reenabled. The block can either reset itself to its starting state (Restart at time zero), or resume generating the sinusoid based on the current simulation time (Catch up to simulation time). This parameter is disabled when Continuous is selected from the Sample mode parameter.

Supported Data Types

To learn how to convert to the above data types in MATLAB and Simulink, see Supported Data Types and How to Convert to Them.

See Also

Chirp
DSP Blockset
Complex Exponential
DSP Blockset
Signal From Workspace
DSP Blockset
Signal Generator
Simulink
Sine Wave
Simulink
sin
MATLAB

Also see the following topics:


  Signal To Workspace Singular Value Decomposition