MATLAB Answers

LogicAnalyser - Variable Number of inputs

1 view (last 30 days)
When using the DSP logic analyser the step method expects to receive N inputs where N is equal to the number of input ports specified when instanciating the scope
scope = dsp.LogicAnalyzer('NumInputPorts',3);
I'm trying create a script to plot data from the output of a Simulink model where there can be any number of inputs. The output from the simulink model is a "Stucture with Time" named yout.
data = [yout.signals.values]
Gives me the data i need, i can access each step by iterating though each row of data but I don't know how to pass all N signals for a single time step to the LogicAnalyzer object. data contains logical values.
Is there a method to pass the logic analyzer a variable number of data points? Perhaps as a vector?
The only solution I have come up with is to use eval to execute the step command with a string I create that contains 'data(t,1), data(t,2)... '


Sign in to comment.

Accepted Answer

Bharath Venkataraman
Bharath Venkataraman on 24 Mar 2017
Please take a look at the file analyzeLogicFromSimulink to see how to pass in the entire set of data at one go. This function creates and plots all the logged data from a Simulink simulation.


Scott on 24 Mar 2017
Thanks Bharath. Changing the format of the logged data to 'Dataset' and changing the solver to fixed step allowed me to use the analyzeLogicFromSimulink function. I just need to modify it to name the channels with the output block name.
Scott on 24 Mar 2017
A slight improvement to add the output block names to the signals on the logic analyser.
function scope = LogicAnalyzerSignalNames(dataset)
% LogicAnalyserSignalNames
scope = analyzeLogicFromSimulink(dataset);
numElements = dataset.numElements;
for ii = 1:numElements
blkName = dataset.getElement(ii).BlockPath.getBlock(1);

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by