LogicAnalyser - Variable Number of inputs

1 visualizzazione (ultimi 30 giorni)
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)... '

Risposta accettata

Bharath Venkataraman
Bharath Venkataraman il 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 Commenti
Scott
Scott il 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

Accedi per commentare.

Più risposte (0)

Community Treasure Hunt

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

Start Hunting!

Translated by