Codegen and the "find" Function
Mostra commenti meno recenti
I'm writing a piece of Matlab code that will be used in a Simulink "Matlab Function" block, meaning that it will get run through the Matlab Coder.
When I use the "find" function, even when I know exactly the size that it's output is going to be, I can't store the answer in a fixed-size piece of memory because the Coder doesn't ever know what the output size is going to be.
Assume in the following code that we've already guaranteed that ind_vector is monotonically-increasing:
if query(i) < ind_vector(1)
locations(i) = 0;
else
location(i) = find(query(i)>=ind_vector,1,'last');
end
Because I've guaranteed that ind_vector is monotonically-increasing, I've checked for the condition that the query is lower than the whole vector (which is the only case that would make "find" return empty), and I've only asked find for a single output, I know that it will return a 1x1. The Coder does not know this, however, and considers the output a ?x1 and thus won't let me store it in a 1x1 slot.
Is there any way to prommise the Coder that this output is a specific size? I tried using assert, but it didn't work.
Thanks
Risposta accettata
Più risposte (0)
Categorie
Scopri di più su Algorithm Design Basics in Centro assistenza e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!