Matlab---GUI界面编程2(m文件纯代码实现)

时间:2022-10-11 20:59:57

1. 实现功能
实现输入x中数据输入,点击输出,然后将输入框中的值通过setappdata/getappdata/rmappdata的方式传递和共享回调函数之间的数据。
2. 实现界面
Matlab---GUI界面编程2(m文件纯代码实现)
Matlab---GUI界面编程2(m文件纯代码实现)
3. 代码

【mygui.m
function mygui
%% 清除变量,清命令窗口屏,清除图形
clear;
clc;
%% 新建图形并设置相关属性
%scrsz = get(0,'ScreenSize');
Hd_fig = figure('NumberTitle', 'off', 'Resize','off','Color',[0.753,0.753,0.753],'Name', 'BP神经网络预测系统');
%取得Figure的JavaFrame。
%修改图标
newIcon = javax.swing.ImageIcon('icon.png');
figFrame = get(Hd_fig,'JavaFrame');
figFrame.setFigureIcon(newIcon);
%转换图形窗口菜单条的“开”与“关”
set(Hd_fig,'menubar','none','Unit','normalized','Position',[0.08,0.12,0.78,0.74]);

%% 初始化图形中控件
%坐标图
axes('Position',[0.06,0.095,0.7,0.85]);
title('BP神经网络预测输出','FontName','Times New Roman','FontWeight','Bold','FontSize',10);
xlabel('横坐标','FontName','Times New Roman','FontSize',14);
ylabel('纵坐标','FontName','Times New Roman','FontSize',14);
%% 控制按钮
Hd_p1 = uipanel('Parent',Hd_fig,'Title','控制功能',...
'BorderType','etchedin',...
'BackgroundColor','white',...
'ShadowColor',[0.4,0.4,0.4],'TitlePosition','centertop','tag','Hd_p1',...
'ForegroundColor','b',...
'FontWeight','bold',...
'position',[0.77,0.094,0.22,0.09]);
Hd_load = uicontrol('Parent',Hd_p1,'Style','Push',...
'String','导入数据',...
'Units','normalized',...
'FontWeight','bold',...
'ForegroundColor','black',...
'Units','normalized',...
'FontSize',10,...
'tag','Hd_load',...
'Position',[0.03,0.07,0.45,0.98],...
'CallBack','');
Hd_close = uicontrol('Parent',Hd_p1,'Style','Push',...
'String','退出',...
'FontWeight','bold',...
'ForegroundColor','r',...
'Units','normalized',...
'FontSize',10,...
'tag','Hd_close',...
'Position',[0.52,0.07,0.45,0.98],...
'CallBack','close');
%% 数据处理
Hd_p2 = uipanel('Parent',Hd_fig,'Title','数据处理',...
'BorderType','etchedin',...
'BackgroundColor','white',...
'ShadowColor',[0.4,0.4,0.4],'TitlePosition','centertop','tag','Hd_p1',...
'ForegroundColor','b',...
'FontWeight','bold',...
'position',[0.77,0.19,0.22,0.20]);
%
Hd_b1 = uicontrol('Parent',Hd_p2,'Style','Push',...
'String','相关性分析',...
'Units','normalized',...
'FontWeight','bold',...
'ForegroundColor','black',...
'Units','normalized',...
'FontSize',10,...
'tag','Hd_b1',...
'Position',[0.03,0.028,0.45,0.3],...
'CallBack','in=getappdata(gcf,''in'')');
Hd_b2 = uicontrol('Parent',Hd_p2,'Style','Push',...
'String','聚类',...
'FontWeight','bold',...
'ForegroundColor','black',...
'Units','normalized',...
'FontSize',10,...
'tag','Hd_b2',...
'Position',[0.52,0.028,0.45,0.3],...
'CallBack','');
%
Hd_b3 = uicontrol('Parent',Hd_p2,'Style','Push',...
'String','BP训练',...
'Units','normalized',...
'FontWeight','bold',...
'ForegroundColor','black',...
'Units','normalized',...
'FontSize',10,...
'tag','Hd_b3',...
'Position',[0.03,0.36,0.45,0.3],...
'CallBack','');
Hd_b4 = uicontrol('Parent',Hd_p2,'Style','Push',...
'String','BP误差',...
'FontWeight','bold',...
'ForegroundColor','black',...
'Units','normalized',...
'FontSize',10,...
'tag','Hd_b4',...
'Position',[0.52,0.36,0.45,0.3],...
'CallBack','');
%
Hd_b5 = uicontrol('Parent',Hd_p2,'Style','Push',...
'String','SVM训练',...
'Units','normalized',...
'FontWeight','bold',...
'ForegroundColor','black',...
'Units','normalized',...
'FontSize',10,...
'tag','Hd_b5',...
'Position',[0.03,0.69,0.45,0.3],...
'CallBack','');
Hd_b6 = uicontrol('Parent',Hd_p2,'Style','Push',...
'String','SVM误差',...
'FontWeight','bold',...
'ForegroundColor','black',...
'Units','normalized',...
'FontSize',10,...
'tag','Hd_b6',...
'Position',[0.52,0.69,0.45,0.3],...
'CallBack','');
%% 输入变量
Hd_p3 = uipanel('Parent',Hd_fig,'Title','Input',...
'BorderType','etchedin',...
'BackgroundColor','white',...
'ShadowColor',[0.4,0.4,0.4],'TitlePosition','centertop','tag','Hd_p1',...
'ForegroundColor','b',...
'FontWeight','bold',...
'position',[0.77,0.4,0.22,0.45]);
%
Hd_b11 = uicontrol('Parent',Hd_p3,'Style','edit',...
'String','输入1',...
'Units','normalized',...
'FontWeight','bold',...
'ForegroundColor','black',...
'Units','normalized',...
'FontSize',10,...
'Enable','inactive',...
'Position',[0.03,0.015,0.45,0.15],...
'CallBack','');
Hd_b12 = uicontrol('Parent',Hd_p3,'Style','Edit',...
'String','0.0',...
'FontWeight','bold',...
'ForegroundColor',[0.871,0.49,0],...
'Units','normalized',...
'FontSize',10,...
'tag','Hd_b12',...
'Position',[0.52,0.015,0.45,0.15],...
'CallBack','');
%
Hd_b21 = uicontrol('Parent',Hd_p3,'Style','edit',...
'String','输入2',...
'Units','normalized',...
'FontWeight','bold',...
'ForegroundColor','black',...
'Units','normalized',...
'FontSize',10,...
'Enable','inactive',...
'Position',[0.03,0.182,0.45,0.15],...
'CallBack','');
Hd_b22 = uicontrol('Parent',Hd_p3,'Style','Edit',...
'String','0.0',...
'FontWeight','bold',...
'ForegroundColor',[0.871,0.49,0],...
'Units','normalized',...
'FontSize',10,...
'tag','Hd_b22',...
'Position',[0.52,0.182,0.45,0.15],...
'CallBack','');
%
Hd_b31 = uicontrol('Parent',Hd_p3,'Style','edit',...
'String','输入3',...
'Units','normalized',...
'FontWeight','bold',...
'ForegroundColor','black',...
'Units','normalized',...
'FontSize',10,...
'Enable','inactive',...
'Position',[0.03,0.349,0.45,0.15],...
'CallBack','');
Hd_b32 = uicontrol('Parent',Hd_p3,'Style','Edit',...
'String','0.0',...
'FontWeight','bold',...
'ForegroundColor',[0.871,0.49,0],...
'Units','normalized',...
'FontSize',10,...
'tag','Hd_b32',...
'Position',[0.52,0.349,0.45,0.15],...
'CallBack','');
%
Hd_b41 = uicontrol('Parent',Hd_p3,'Style','edit',...
'String','输入4',...
'Units','normalized',...
'FontWeight','bold',...
'ForegroundColor','black',...
'Units','normalized',...
'FontSize',10,...
'Enable','inactive',...
'Position',[0.03,0.516,0.45,0.15],...
'CallBack','');
Hd_b42 = uicontrol('Parent',Hd_p3,'Style','Edit',...
'String','0.0',...
'FontWeight','bold',...
'ForegroundColor',[0.871,0.49,0],...
'Units','normalized',...
'FontSize',10,...
'tag','Hd_b42',...
'Position',[0.52,0.516,0.45,0.15],...
'CallBack','');
%
Hd_b51 = uicontrol('Parent',Hd_p3,'Style','edit',...
'String','输入5',...
'Units','normalized',...
'FontWeight','bold',...
'ForegroundColor','black',...
'Units','normalized',...
'FontSize',10,...
'Enable','inactive',...
'Position',[0.03,0.683,0.45,0.15],...
'CallBack','');
Hd_b52 = uicontrol('Parent',Hd_p3,'Style','Edit',...
'String','0.0',...
'FontWeight','bold',...
'ForegroundColor',[0.871,0.49,0],...
'Units','normalized',...
'FontSize',10,...
'tag','Hd_b52',...
'Position',[0.52,0.683,0.45,0.15],...
'CallBack','');
%
Hd_b61 = uicontrol('Parent',Hd_p3,'Style','edit',...
'String','输入6',...
'Units','normalized',...
'FontWeight','bold',...
'ForegroundColor','black',...
'Units','normalized',...
'FontSize',10,...
'Enable','inactive',...
'Position',[0.03,0.85,0.45,0.15],...
'CallBack','');
Hd_b62 = uicontrol('Parent',Hd_p3,'Style','Edit',...
'String','0.0',...
'FontWeight','bold',...
'ForegroundColor',[0.871,0.49,0],...
'Units','normalized',...
'FontSize',10,...
'tag','Hd_b62',...
'Position',[0.52,0.85,0.45,0.15],...
'CallBack','');
%% 输出
Hd_p4 = uipanel('Parent',Hd_fig,'Title','Output',...
'BorderType','etchedin',...
'BackgroundColor','white',...
'ShadowColor',[0.4,0.4,0.4],'TitlePosition','centertop','tag','Hd_p1',...
'ForegroundColor','b',...
'FontWeight','bold',...
'position',[0.77,0.865,0.22,0.1]);
%
Hd_o1 = uicontrol('Parent',Hd_p4,'Style','push',...
'String','输出',...
'Units','normalized',...
'FontWeight','bold',...
'ForegroundColor','black',...
'Units','normalized',...
'FontSize',10,...
'Position',[0.03,0.1,0.45,0.9],...
'CallBack','getInputData');
Hd_o2 = uicontrol('Parent',Hd_p4,'Style','Edit',...
'String','',...
'FontWeight','bold',...
'ForegroundColor',[0,0,1],...
'Units','normalized',...
'FontSize',10,...
'tag','Hd_o2',...
'Position',[0.52,0.1,0.45,0.9],...
'CallBack','');
【getInputData.m
function getInputData
%默认四个变量,变量个数获取在此处修改
Hd_b12 = findobj(gcf,'tag','Hd_b12');
Hd_b22 = findobj(gcf,'tag','Hd_b22');
Hd_b32 = findobj(gcf,'tag','Hd_b32');
Hd_b42 = findobj(gcf,'tag','Hd_b42');
str1 = get(Hd_b12,'String')
str2 = get(Hd_b22,'String')
str3 = get(Hd_b32,'String')
str4 = get(Hd_b42,'String')
% str5 = get(Hd_b52,'String')
% str6 = get(Hd_b62,'String')
%字符转数字
in(1) = str2double(str1);
in(2) = str2double(str2);
in(3) = str2double(str3);
in(4) = str2double(str4);
%检测输入的值是否符合标准,符合则保存数据
if(isnan(in(1)) || isnan(in(2)) || isnan(in(3)) || isnan(in(4)))
msg = msgbox('Input Error!!!','Error');
%字体大小设置和居中
amsg = get(msg,'CurrentAxes');
chmsg = get(amsg,'Children');
set(chmsg,'FontSize',14);
th = findall(0,'Tag','MessageBox');
boxPosition = get(msg,'Position');
textPosition = get(th,'Position');
set(th,'position',[boxPosition(3).*0.5 textPosition(2) textPosition(3)]);
set(th, 'HorizontalAlignment', 'center');
%修改图标
newIcon = javax.swing.ImageIcon('error.png');
figMsg = get(msg,'JavaFrame');
figMsg.setFigureIcon(newIcon);
return;
else
in(:)
%处理数据传送
setappdata(gcf,'in',in);
end