一、Matlab的GUI界面設計介紹
Matlab是一種可視化+編程的高級計算軟體,GUI(Graphical User Interface)即圖形用戶界面,它是一種基於Matlab程序語言的圖形化交互界面。Matlab的GUI界面設計可以使程序更加用戶友好,可以直接對程序做出操作。
Matlab的GUI界面設計參考和借鑒了許多其他軟體的操作界面,所以Matlab的界面設計也非常符合人的使用習慣,使用Matlab的GUI界面設計可以很好的讓人們更快更好更方便地使用Matlab。
在Matlab中,利用GUI能夠實現比較友好地界面交互,簡單明了的顯示各種數據和結果,互動性也非常不錯,尤其是數據可視化上,Matlab GUI的體驗是比較完美的。
二、Matlab的GUI界面設計優點
1、提高程序的可擴展性
利用Matlab的GUI界面設計設計的程序可以很方便的增加或者修改功能,滿足用戶的不同需求。
2、提高程序的可讀性和可維護性
Matlab的GUI界面設計可以讓程序的代碼更加結構化,讓代碼的邏輯更加清晰,代碼的可讀性和可維護性得到了很大的提高,減少了代碼的出錯率。
3、提高程序的易用性
Matlab的GUI界面設計使得程序界面更加友好,用戶體驗更加優秀,從而提高了程序的易用性。
三、Matlab的GUI界面設計缺點
1、當GUI程序變得複雜時,程序的結構容易變得混亂。
2、很多操作雖然可視化,但卻並不直觀。
3、GUI節約的是程序員的時間和精力,但卻是以消耗用戶時間和計算機資源為代價。
四、Matlab的GUI界面設計書籍
1、《MATLAB GUI 程序設計》(第二版)作者:(美)Stephen J.Chapman / 劉毅等
2、《Matlab圖形界面設計》作者:郭天龍 李和平
3、《跟我一起學GUI入門到精通》作者:瀋海龍
4、《MATLAB圖形用戶界面設計案例教程》作者:李正友 包良文
五、Matlab的GUI界面設計實驗報告
function PushButton1_Callback(hObject, eventdata, handles)
% hObject handle to PushButton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global rgb;
% 提示選擇圖像
filename = uigetfile('*.*','請選擇一幅圖像');
if ~filename
msgbox('請選擇正確的圖像格式!','錯誤');
return;
end
img = imread(filename);%讀入圖像
img_info = imfinfo(filename);%獲取圖像參數信息
set(handles.figure1,'UserData',img_info);%保存圖像信息
axes(handles.axes1);% 激活需要插圖的畫圖區域
imshow(img);%顯示圖像
rgb = img;
%將原始圖像參數信息寫入到文件(先刪除舊日誌)
if exist('raw_data.log','file')
delete raw_data.log;
end
fid = fopen('raw_data.log','a');
fprintf(fid,'圖像像素值(32位):%d × %d × %d\n',img_info.Height,img_info.Width,img_info.BitDepth);
fprintf(fid,'圖像實際大小:%d位元組\n',img_info.FileSize);
fprintf(fid,'圖像長×寬×通道:%d×%d×%d\n',size(img,1),size(img,2),size(img,3));
fprintf(fid,'圖像彩色類型:');is_rgb='';
if size(img,3)==1,is_rgb='灰度圖';elseif size(img,3)==3,is_rgb='真彩色';end,fprintf(fid,'%s\n',is_rgb);
fclose(fid);
六、Matlab的GUI界面設計貪吃蛇
function snake_game
%隱藏背景的邊框,增加遊戲美觀性
set(gcf,'Toolbar','none','Menubar','none','Color',[0.3,0.3,0.3],...
'NumberTitle','off','Name','貪食蛇 ver1.0');
%初始化位置數據
SNAKE = [5 3;5 4;5 5];%初始3點蛇
APPLE = randi(20,1,2);%繪製apple
DIRECTION = [0 1];%初始運動方向設為向右
pp = 1;
while 1
%繪製蛇和蘋果
apple = line(APPLE(1),APPLE(2),'Marker','o','Markersize',12,'Color',[1,0,0]);hold on
snake = line(SNAKE(:,1),SNAKE(:,2),'color',[1,1,1],'linewidth',3);
%等待用戶運動
[SNAKE,DIRECTION,APPLE] = cmd(SNAKE,DIRECTION,APPLE);
%更新蛇的位置和判斷是否產生蘋果
[SNAKE,APPLE] = move(SNAKE,DIRECTION,APPLE);
if isempty(SNAKE) %蛇死亡
break;
end
delete(snake);delete(apple);
pp = pp+1;
end
msgbox(sprintf('你只活了%d秒。',pp),'game over!');
%貪吃蛇移動
function [SNAKE,APPLE] = move(SNAKE,DIRECTION,APPLE)
global F
%移動以前記錄蛇尾,目的是決定是否吃了「蘋果」
TAIL = SNAKE(end,:);
%刪除最後一節蛇
SNAKE = SNAKE(1:end-1,:);
%在頭部增加一節蛇
SNAKE = [SNAKE(1,:); mod(SNAKE(1,:)+DIRECTION,21)];
%判斷蘋果是否被吃掉
if all(SNAKE(1,:) == APPLE)
if F=='easy'
SNAKE(end+1,:) = TAIL;
elseif F=='hard'
SNAKE = [SNAKE;TAIL];
end
APPLE = randi(20,1,2);%重新生成蘋果
end
pos = SNAKE(:,1)>=1&SNAKE(:,2)>=1&SNAKE(:,1)<=20&SNAKE(:,2)<=20;
if sum(pos)~=length(pos) || length(unique(SNAKE,'rows'))~=length(pos),
SNAKE = [];
end
%貪吃蛇的運動控制
function [SNAKE,DIRECTON,APPLE] = cmd(SNAKE,DIRECTION,APPLE)
global F
key = get(gcf,'CurrentCharacter');%獲取當前按下的鍵
if ~isempty(key)
if key==28&&(DIRECTION(1)~=1&&DIRECTION(2)~=0) %左
DIRECTION = [0 -1];
elseif key==29&&(DIRECTION(1)~=0&&DIRECTION(2)~=1) %下
DIRECTION = [1 0];
elseif key==30&&(DIRECTION(1)~=0&&DIRECTION(2)~=-1) %上
DIRECTION = [-1 0];
elseif key==31&&(DIRECTION(1)~=-1&&DIRECTION(2)~=0) %右
DIRECTION = [0 1];
elseif ~isempty(strfind(lower(key),'e'))
F = 'easy';
elseif ~isempty(strfind(lower(key),'h'))
F = 'hard';
elseif key==27 %esc鍵
SNAKE = [];
end
end
%啟動程序
figure('Color',[0.3,0.3,0.3]),clf,hold on;axis off,axis([1 21 1 21]);
text(16,19,'1:簡單','color','y','fontsize',12);text(16,17,'2:困難','color','y','fontsize',12);
text(16,10,sprintf('按移動鍵或e/h進入遊戲\n困難模式下增加蛇長'),'color','w','fontsize',12);
F = 'easy';SNAKE = [];while isempty(SNAKE),[r,c] = find((mod(randperm(400),20)+1)'==[1 2 3]);SNAKE = [r(1) c(1);r(2) c(2);r(3) c(3)];end;APPLE = randi(20,1,2);
move_times = 0;
%遊戲暫停函數
function [SNAKE,DIRECTON,APPLE] = pause_game(SNAKE,DIRECTION,APPLE)
while 1
pause(0.1);
key = get(gcf,'CurrentCharacter');
if key == 27
break;
end
end
七、Matlab的GUI界面設計出題嘛
function varargout = math_tests(varargin)
% MATH_TESTS MATLAB code for math_tests.fig
% MATH_TESTS, by itself, creates a new MATH_TESTS or raises the existing
% singleton*.
%
% H = MATH_TESTS returns the handle to a new MATH_TESTS or the handle to
% the existing singleton*.
%
% MATH_TESTS('CALLBACK',hObject,eventData,handles,...) calls the local
% function named CALLBACK in MATH_TESTS.M with the given input arguments.
%
% MATH_TESTS('Property','Value',...) creates a new MATH_TESTS or raises the
% existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before math_tests_OpeningFcn gets called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are passed to math_tests_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one
% instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES% Edit the above text to modify the response to help math_tests
% Last Modified by GUIDE v2.5 22-May-2019 09:31:33
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @math_tests_OpeningFcn, ...
'gui_OutputFcn', @math_tests_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
% --- Executes just before math_tests is made visible.
function math_tests_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to math_tests (see VARARGIN)
% Choose default command line output for math_tests
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes math_tests wait for user response (see UIRESUME)
% uiwait(handles.figure1);
global result
result=0;
% --- Outputs from this function are returned to the command line.
function varargout = math_tests_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure
varargout{1} = handles.output;
% --- Executes on button press in start_btn.
function start_btn_Callback(hObject, eventdata, handles)
% hObject handle to start_btn (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global result
result = 0;
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/288952.html