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)... '

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.
  3 Comments
Scott
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);
scope.modifyDisplayChannel(ii,'Name',blkName);
end
end

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!