- If it crashes and I immediately re-run with the same inputs it always goes on crashing.
- If I then run with different inputs it may work correctly.
- If after doing something else I re-run with the original inputs that caused the crash it may work correctly.
- Changing the layout of code, or changing nearby code, may change it between working and crashing. E.g. I originally had if nargin>4, it = it0; end below, and changing it to what's written cured the problem – so I thought! But it reappeared with other inputs.
- Stepping through in the debugger, with argument it0 absent so nargin>4 is false, I found that though it skipped the it = it0; statement, it nonetheless changed the value of it to an unpredictable value (e.g. 165) while going from if to end.
- Once past this perilous initialisation, it seems it behaves as it should do.
Bug in Persistent variables? Simulink M-function
6 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I am unable to initialize a Persistent variable. Here's a snippet of code in a Simulink M-function which does not actually set 'a' no matter what I do:
persistent a
if isempty(a)
a = 1;
end
Either printing out 'a' or evaluating 'a' gives
a=[]
...NOT a=1 as it should.
It doesn't matter what the variable name is, or what I try to set it to, or how many variables there are. This bug happens with two different sets of Persistent Variables.
However, oddly, later on in the SAME M-function, I do another persistent declaration using the exact same method and there initialization DOES work.
I tried this in both R2016a and 2017b
What is going on?
4 commentaires
Réponses (1)
Voir également
Catégories
En savoir plus sur Startup and Shutdown dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!