Saturday, April 7, 2012

uitable in GUI MATLAB

วันนี้ผมขอนำเสนอ การใช้งาน uitable ใน GUIDE MATLAB เพื่อสร้างตารางมารองรับข้อมูลบางอย่างที่ต้องแสดงผลเป็นแบบตาราง

ดังนั้นตัวอย่างนี้ ผมสร้างโปรแกรมเพื่ออ่านข้อมูล ที่เก็บไว้เป็นไฟล์ text ที่มีชื่อว่า dat.txt แล้วนำมาแสดงเป็นกราฟ โดยผู้ใช้เลือกกดปุ่ม Display graph และแสดงข้อมูลดังกล่าวในตารางด้วย เมื่อผู้ใช้กดปุ่ม Display Data ในโปรแกรมนี้ยังสร้างปุ่มกดเพื่อ clear data ที่แสดงอยู่ในกราฟและตาราง ออกไม่ให้ผู้ใช้เห็นกราฟและข้อมูล ในตัวอย่างนี้ผมจะเน้น การแสดงกราฟและข้อมูลในตารางเป็นหลักครับ

ภาพด้านล่างนี้ เป็นตัวอย่าง layout ของโปรแกรมและโปรแกรมที่พร้อมทำงานครับ ส่วนไฟล์ต่างๆ เข้าไปเอาในนี้ได้เลยครับ >>> uitable


ส่วนภาพนี้เป็นหน้าตาโปรแกรม ที่กำลังทำงานอยู่ครับ



ส่วน source code ที่ต้องเพิ่มเข้าไปในไฟล์ แสดงดังด้านล่างครับ ผมยกมาเฉพาะส่วน open file, การเขียนกราฟ และ การส่งข้อมูลไปแสดงบนตารางที่เราสร้างขึ้นเท่านั้น

%--- ส่วนการ import file into matlab และจัดเก็บใน structure handle ---
% --- Executes on button press in pushImportDATA.

function pushImportDATA_Callback(hObject, eventdata, handles)
% hObject handle to pushImportDATA (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
[F,PathName,FilterIndex] = uigetfile({'*.*','All Files(*.*)'}, 'Select your File ');
guidata(hObject,handles);
b=strcat(PathName,F);
input=importdata(b);
handles.inputDATA=input; % เก็บข้อมูลที่โหลดเข้ามาไปเก็บไว้ที่ inputDATA
%แต่ต้องเก็บใน handle
guidata(hObject,handles);

%--------- แสดงข้อมูลในรูปแบบกราฟ -------------
% --- Executes on button press in pushPlotGraph.
function pushPlotGraph_Callback(hObject, eventdata, handles)
% hObject handle to pushPlotGraph (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
axes(handles.showGraph); % บอกให้ GUI ทราบว่า จะแสดงกราฟใน axes ไหน
%ในที่นี้ตั้งชื่อ(tag) เป็น showGraph
plot(handles.inputDATA(:,1),handles.inputDATA(:,2),'-*b');hold on
plot(handles.inputDATA(:,1),handles.inputDATA(:,3),'+r-');
plot(handles.inputDATA(:,1),handles.inputDATA(:,4),'--k');
plot(handles.inputDATA(:,1),handles.inputDATA(:,5),'-og');hold off
guidata(hObject,handles);

% ------- ส่วน ส่งข้อมูลไปแสดงในตาราง --------------
% --- Executes on button press in pushDisplayDATA.
function pushDisplayDATA_Callback(hObject, eventdata, handles)
% hObject handle to pushDisplayDATA (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
dataShow= handles.inputDATA(:,2:5);
set(handles.tableDATA, 'data', dataShow)
guidata(hObject,handles);

% --- ส่วนการ ยกเลิกหรือลบการแสดงผล ในกราฟและตาราง ----
% --- Executes on button press in pushCLEAR.
function pushCLEAR_Callback(hObject, eventdata, handles)
% hObject handle to pushCLEAR (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
cla(handles.showGraph,'reset') % clear current data on axes หมายถึง ลบการแสดงผลในกราฟ
set(handles.tableDATA,'Data',[]) % clear current data in table

No comments:

Post a Comment