Filter löschen
Filter löschen

Info

Diese Frage ist geschlossen. Öffnen Sie sie erneut, um sie zu bearbeiten oder zu beantworten.

Loop inside while iterator block - slow calculation

1 Ansicht (letzte 30 Tage)
mettala
mettala am 1 Mär. 2016
Geschlossen: MATLAB Answer Bot am 20 Aug. 2021
I have somewhat large Simulink model which takes forever to run. I have located the problem inside a While iterator subsystem which is presented below:
In1 is a 1x1000 array and In3 is integer with value of 1000, ie the size of the array. Extract-function takes the n:th of this array and inserts it into the red circle where new array is generated based on the initial array and gained n:th value. The idea is to replace each value in the array with new, calculated value. In this example the value is only multiplied with 10, but in real model the calculation is more complex. The black circle generates values n=1,2,3...1000 which is used to select corresponding value in array. The blue circle makes sure that the While iterator subsystem is run until n=1000.
Used extract-function:
function i = extract(A,n)
i = A(n);
Used insert-function:
function A_out = insert(A_in,i,n)
A_in(n) = i;
A_out = A_in;
The outcome is what I want but it takes long time to compute. This example takes almost 5min to run (i7-5500U & 16GB). And this with 1x1000 array and 1 step. The real model would have up to 1500 time steps and a 1x9000 array changing each time.
I think that the loop (colored yellow) is the one to blame, but just can't come up with a solution to eliminate it. Is there some pre-made block or something that I can use to replace the red circle?

Antworten (0)

Diese Frage ist geschlossen.

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by