Reading out a Vector via a countermodel in simulink

1 visualizzazione (ultimi 30 giorni)
Hi,
i have to give the single elements of a vector one after the other out. So I decided to build a countermodel.
The Counter works i connected it to a scope and it Counts up in steps of 0.01sec from 0 up to 39. It gives out the variable n.
Then i connected n to the following user-defined function:
Vector=[207;160;0;0;0;6;4;7;10;14;0;44;122;224;16;32;0;16;144;80;128;128;197;167;14;0;0;15;15;0;0;0;0;86;116;235;10;65;241]; Output=Vector(n,1);
The Output of the user-definned function is connected to a scope because i want to test if it works but when i start the Simulation i get following error:
Simulation stopped due to out of bounds error. Block MATLAB Function (#112) While executing: none
Can anyone help me?
Thanks a lot!
Greetings

Risposta accettata

Mischa Kim
Mischa Kim il 26 Feb 2014
Modificato: Mischa Kim il 26 Feb 2014
David, are you specifying a value for n? For example (for testing purposes) use the following Simulink model
with the following code inside the MATLAB function.
function y = fcn(n)
Vector = [207;160;0;0;0;6;4;7;10;14;0;44]; % vector cut off for readability
y = Vector(n,1);
You could specify n in the MATLAB function, or, as an external input for the function.
  3 Commenti
Mischa Kim
Mischa Kim il 26 Feb 2014
Make sure that you are indexing correctly. The first element of the vector is Vector(1), the last is Vector(39).
I am not sure, how you are doing the counting, but if you are using a standard Simulink counter, by default the initial output is 0. This can be "fixed" by simply adding a constant 1 to the counter output. If you do so, make sure the counter quits (limit) at 38 ( + 1 = 39 ).

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Simulink Environment Customization in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by