Documentation |
Note: Starting in R2010b, many DSP System Toolbox™ blocks received a new parameter to control whether they perform sample- or frame-based processing. The following content has not been updated to reflect this change. For more information, see the Frame-Based Processing section of the Release Notes. |
On this page… |
---|
Import Sample-Based Vector Signals |
The Signal From Workspace block generates a sample-based vector signal when the variable or expression in the Signal parameter is a matrix and the Samples per frame parameter is set to 1. Each column of the input matrix represents a different channel. Beginning with the first row of the matrix, the block outputs one row of the matrix at each sample time. Therefore, if the Signal parameter specifies an M-by-N matrix, the output of the Signal From Workspace block is M 1-by-N row vectors representing N channels.
The figure below is a graphical representation of this process for a 6-by-4 workspace matrix, A.
In the following example, you use the Signal From Workspace block to import a sample-based vector signal into your model:
Open the Signal From Workspace Example 3 model by typing ex_importsbvectorsigsex_importsbvectorsigs at the MATLAB^{®} command line.
At the MATLAB command line, type A = [1:100;-1:-1:-100]';
The matrix A represents a two column signal, where each column is a different channel.
At the MATLAB command line, type B = 5*ones(100,1);
The vector B represents a single-channel signal.
Double-click the Signal From Workspace block, and set the block parameters as follows:
Signal = [A B]
Sample time = 1
Samples per frame = 1
Form output after final data value = Setting to zero
The Signal expression [A B] uses the standard MATLAB syntax for horizontally concatenating matrices and appends column vector B to the right of matrix A. The Signal From Workspace block outputs a sample-based signal with a sample period of 1 second. After the block has output the signal, all subsequent outputs have a value of zero.
Save these parameters and close the dialog box by clicking OK.
The following figure is a graphical representation of the model's behavior during simulation.
The first row of the input matrix [A B] is output at time t=0, the second row of the input matrix is output at time t=1, and so on.
You have now successfully imported a sample-based vector signal into your signal processing model using the Signal From Workspace block.
The Signal From Workspace block generates a sample-based matrix signal when the variable or expression in the Signal parameter is a three-dimensional array and the Samples per frame parameter is set to 1. Beginning with the first page of the array, the block outputs a single page of the array to the output at each sample time. Therefore, if the Signal parameter specifies an M-by-N-by-P array, the output of the Signal From Workspace block is P M-by-N matrices representing M*N channels.
The following figure is a graphical illustration of this process for a 6-by-4-by-5 workspace array A.
In the following example, you use the Signal From Workspace block to import a four-channel, sample-based matrix signal into a Simulink^{®} model:
Open the Signal From Workspace Example 4 model by typing ex_importsbmatrixsigsex_importsbmatrixsigs at the MATLAB command line.
Also, the following variables are loaded into the MATLAB workspace:
Fs | 1x1 | 8 | double array |
dsp_examples_A | 2x2x100 | 3200 | double array |
dsp_examples_sig1 | 1x1x100 | 800 | double array |
dsp_examples_sig12 | 1x2x100 | 1600 | double array |
dsp_examples_sig2 | 1x1x100 | 800 | double array |
dsp_examples_sig3 | 1x1x100 | 800 | double array |
dsp_examples_sig34 | 1x2x100 | 1600 | double array |
dsp_examples_sig4 | 1x1x100 | 800 | double array |
mtlb | 4001x1 | 32008 | double array |
Double-click the Signal From Workspace block. Set the block parameters as follows, and then click OK:
Signal = dsp_examples_A
Sample time = 1
Samples per frame = 1
Form output after final data value = Setting to zero
The dsp_examples_A array represents a four-channel, sample-based signal with 100 samples in each channel. This is the signal that you want to import, and it was created in the following way:
dsp_examples_sig1 = reshape(1:100,[1 1 100]) dsp_examples_sig2 = reshape(-1:-1:-100,[1 1 100]) dsp_examples_sig3 = zeros(1,1,100) dsp_examples_sig4 = 5*ones(1,1,100) dsp_examples_sig12 = cat(2,sig1,sig2) dsp_examples_sig34 = cat(2,sig3,sig4) dsp_examples_A = cat(1,sig12,sig34) % 2-by-2-by-100 array
The figure below is a graphical representation of the model's behavior during simulation.
The Signal From Workspace block imports the four-channel sample based signal from the MATLAB workspace into the Simulink model one matrix at a time.
You have now successfully imported a sample-based matrix signal into your model using the Signal From Workspace block.
The To Workspace and Triggered To Workspace blocks are the primary blocks for exporting signals of all dimensions from a Simulink model to the MATLAB workspace.
A sample-based signal, with M*N channels, is represented in Simulink as a sequence of M-by-N matrices. When the input to the To Workspace block is a sample-based signal, the block creates an M-by-N-by-P array in the MATLAB workspace containing the P most recent samples from each channel. The number of pages, P, is specified by the Limit data points to last parameter. The newest samples are added at the end of the array.
The following figure is the graphical illustration of this process using a 6-by-4 sample-based signal exported to workspace array A.
The workspace array always has time running along its third dimension, P. Samples are saved along the P dimension whether the input is a matrix, vector, or scalar (single channel case).
In the following example you use a To Workspace block to export a sample-based matrix signal to the MATLAB workspace:
Open the Signal From Workspace Example 6 model by typing ex_exportsbsigsex_exportsbsigs at the MATLAB command line.
Also, the following variables are loaded into the MATLAB workspace:
dsp_examples_A | 2x2x100 | 3200 | double array |
dsp_examples_sig1 | 1x1x100 | 800 | double array |
dsp_examples_sig12 | 1x2x100 | 1600 | double array |
dsp_examples_sig2 | 1x1x100 | 800 | double array |
dsp_examples_sig3 | 1x1x100 | 800 | double array |
dsp_examples_sig34 | 1x2x100 | 1600 | double array |
dsp_examples_sig4 | 1x1x100 | 800 | double array |
In this model, the Signal From Workspace block imports a four-channel sample-based signal called dsp_examples_A. This signal is then exported to the MATLAB workspace using a To Workspace block.
Double-click the Signal From Workspace block. Set the block parameters as follows, and then click OK:
Signal = dsp_examples_A
Sample time = 1
Samples per frame = 1
Form output after final data value = Setting to zero
Based on these parameters, the Signal From Workspace block outputs a sample-based signal with a sample period of 1 second. After the block has output the signal, all subsequent outputs have a value of zero.
Double-click the To Workspace block. Set the block parameters as follows, and then click OK:
Variable name = dsp_examples_yout
Limit data points to last parameter to inf
Decimation = 1
Based on these parameters, the To Workspace block exports its sample-based input signal to a variable called dsp_examples_yout in the MATLAB workspace. The workspace variable can grow indefinitely large in order to capture all of the input data. The signal is not decimated before it is exported to the MATLAB workspace.
At the MATLAB command line, type dsp_examples_yout.
The four-channel sample-based signal, dsp_examples_A, is output at the MATLAB command line. The following is a portion of the output that is displayed.
dsp_examples_yout(:,:,1) = 1 -1 0 5 dsp_examples_yout(:,:,2) = 2 -2 0 5 dsp_examples_yout(:,:,3) = 3 -3 0 5 dsp_examples_yout(:,:,4) = 4 -4 0 5
Each page of the output represents a different sample time, and each element of the matrices is in a separate channel.
You have now successfully exported a four-channel sample-based signal from a Simulink model to the MATLAB workspace using the To Workspace block.