Developing GUI in MATLAB is suitable for real time application?

10 次查看(过去 30 天)
I am developing the GUI for real time application, But in some aspects I found MATLAB get slow during execution. I need a sincere suggestion, do I shift to C# for GUI application? I found C# little easier than MATLAB for GUI application. please help
  10 个评论
Walter Roberson
Walter Roberson 2017-8-8
Is the CAD file being generated over and over again by an external program? Are you making calls to an external program asking it to generate a new version of the CAD file?
Is there a reason you are not using a constant CAD image (with no people on it) and then drawing the people on top of that in MATLAB ?
Sairah
Sairah 2017-8-8
编辑:Sairah 2017-8-9
yes @Walter Roberson I just use image file (generated by AutoCAD)this image file is a Map of the building and then I plot the moving objects on that image file.

请先登录,再进行评论。

回答(3 个)

Jan
Jan 2017-8-7
Of course Matlab gets slow during the execution if it has a lot do to. This may be the nature of the problem, e.g. if huge data sizes have to be processedm or a problem of the programming, e.g. for iteratively growing arrays, creation of a large number of graphic objects (instead of updateing the XData, YData, ZData of existing objects).
Matlab's graphics output is not fast. If the job requires e.g. the rendering of complex 3D objects, other programming languages migth be faster. Without knowing any details about the actual problem, it is impossible to draw a reliable conclusion.

Sairah
Sairah 2017-8-8
编辑:per isakson 2017-8-8
Here I am sharing one of my code block in which I use two push buttons, 1st push button reads the image file and the 2nd push button is reading a text file which contains x and y positions of the object and plots the x and y positions on an image.
(Before commenting on this let me tell you guys one thing that I have intermediate programming skill and I am new to MATLAB GUI as well.)
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
A = imread('HCRC MAP.jpg');
B = imrotate (A,90);
imshow(B);
hold on;
% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton2 (see GCBO)
tag = [];
fid = fopen('D:\work\MATLAB GUI Programs\GUI_Testing_file.txt');
while ~feof(fid)
line = fgetl(fid);
nums = str2num(line);
tag = [(nums(1)*100); (nums(2)*100)];
plot(620+tag(1),2196-tag(2),'b.', 'LineWidth', 0.1);%90 rotate
hold on
pause(0.001)
end
fclose(fid)

Sairah
Sairah 2017-8-8
编辑:Sairah 2017-8-8
And in another part of the code is using push buttons and one check box.
% --- Executes on button press in start_reception.
function start_reception_Callback(hObject, eventdata, handles)
global flag
flag = 0;
fid = fopen( 'D:\work\MATLAB GUI Programs\GUI_Testing_file2.txt');
while ~feof(fid)
line = (fgetl(fid));
data = str2num(line);
Tag1 = [data(2); data(3)];
Tag2 = [data(5); data(6)];
pause(0.01)
if flag == 0
hold off
plot(Tag1(1), Tag1(2),'rd', Tag2(1), Tag2(2),'bd','MarkerSize',8)
elseif flag == 1
hold on
plot(Tag1(1), Tag1(2),'r.',Tag2(1), Tag2(2),'b.','LineWidth',0.2)
hold off;
elseif flag ==2
flag = 0;
elseif flag == 3
break
end
h = rectangle('Position',[0.45,0.45,(3.60-0.45),(4.50-0.45)],'Curvature',[0.45,0.45],'LineWidth',2,'LineStyle','--');%nominal path
hold on;
axis([0 4 0 5])
end
fclose(fid)
% --- Executes on button press in Track_Tag1.
function Track_Tag1_Callback(hObject, eventdata, handles)
% hObject handle to Track_Tag1 (see GCBO)
global flag
if get(handles.Track_Tag1,'Value') == get(hObject,'Max')
flag = 1
else
flag =2
end
% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton2 (see GCBO)
if get(hObject,'Value') == get(hObject,'Max')
flag = 3
else
flag = 0
end
  3 个评论
Sairah
Sairah 2017-8-8
@ per Isakson, what do you mean "It's faster to keep the objects and change their property values?
Stephen23
Stephen23 2017-8-9
编辑:Stephen23 2017-8-9
@Sairah: MATLAB graphics is based on Objects. The MATLAB documentation explains this clearly:
In practice, per isakson's suggestion means, for example, creating a line just once and thereafter simply changing its properties (e.g. the X and Y data). All useful graphics functions return handles to some object, and the documentation clearly states what kind of object and has a link to that object's properties. So the best thing you could do for your self is start reading the MATLAB documentation and trying the examples.
And did I mention: read the documentation! The more you use it, the easier it will be to find the right information in it.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 그래픽스 성능 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!