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

1 visualizzazione (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)

Community Treasure Hunt

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

Start Hunting!

Translated by