Why MATLAB App is standstill, collapse, when a video is executed and processed?

3 visualizzazioni (ultimi 30 giorni)
Why when execute a MATLAB App with different functions it collapse, saturate, standstill?
I think it is because the internal app variables (app.variable).
I would like to auto-respond my question with the next example.
I create an app which, given a video object (you can obtain it by: videoObject = VideoReader(video_rute)), execute a frame to frame:
When you click pause, the video stops.
The execution button have a loop that show every frame for every step, working correctly.
app.aturar_rep = false;
for frame = 1:app.video_obj_v.NumFrames
imgFrame = read(app.video_obj_v, frame);
app.Image.ImageSource = imgFrame;
if app.aturar_rep % to stop
break
end
end
Then, if we put an internal variable to re-define while executing the loop, the program collapse, and makes it go slower.
Here the example is in the variable app.dades_app
app.aturar_rep = false;
var_intern = [];
for frame = 1:app.video_obj_v.NumFrames
imgFrame = read(app.video_obj_v, frame);
app.Image.ImageSource = imgFrame;
if app.aturar_rep
break
end
for n = 1:100
app.dades_app = [app.dades_app, string(n)];
end
end
I show you, even in the first frame the program collapse:
And I need to Ctrl+C to re- run it.
Then, if we use a non-internal variable, this does not occurs (variable var_intern) :
app.aturar_rep = false;
var_intern = [];
for frame = 1:app.video_obj_v.NumFrames
imgFrame = read(app.video_obj_v, frame);
app.Image.ImageSource = imgFrame;
if app.aturar_rep
break
end
for n = 1:100
var_intern = [var_intern, string(n)];
end
end
I show you:
Then we have identifyied the standstill reason of MATLAB App, which mainly is the use of the App internal variables (app.variable_ex) (which are useful, but in this case dificult us).
Thank you!
  3 Commenti
Josep Llobet
Josep Llobet il 29 Dic 2022
Modificato: Josep Llobet il 29 Dic 2022
Same time, if we generate the change of a internal object, there is no delay unless we change it too much fast
Code exampel:
for n = 1:100
var_intern = [var_intern, string(n)];
randomstr = [string(char(randi([33 126],1,10))), string(char(randi([33 126],1,10))), string(char(randi([33 126],1,10))), string(char(randi([33 126],1,10))), string(char(randi([33 126],1,10))), string(char(randi([33 126],1,10))), string(char(randi([33 126],1,10))), string(char(randi([33 126],1,10)))];
end
app.ListBox.Items = randomstr;
Josep Llobet
Josep Llobet il 29 Dic 2022
If we generate a Axis changing, is the same, it will standstill in order of our upgrade.
for n = 1:100
var_intern = [var_intern, string(n)];
end
xline(app.UIAxes, [rand(1)], "Color", "c")

Accedi per commentare.

Risposta accettata

Josep Llobet
Josep Llobet il 22 Dic 2022
True Mr!

Più risposte (0)

Categorie

Scopri di più su Startup and Shutdown 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