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

1 次查看(过去 30 天)
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 个评论
Josep Llobet
Josep Llobet 2022-12-29
编辑:Josep Llobet 2022-12-29
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 2022-12-29
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")

请先登录,再进行评论。

采纳的回答

Josep Llobet
Josep Llobet 2022-12-22
True Mr!

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Whos 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by