Matlab GUI入门-直方分布图界面制作
2020-05-09 04:16
2779 查看
前言
制作gui界面,根据输入两个整数,画直方图。直方图的直方数和随机数的个数由界面输入;随机数的类型请用radiobutton控制,至少给出三种随机数组合。
入门系列一从界面到功能具体实现详细下戳
Matlab GUI入门-文件显示界面制作
实操
1.step 1 构建图形的初始页面,颜色、字体大小可以双击 打开属性页面设置 自己选择
2.功能部分。
对功能进行分析。
(1)输入参数后,点击确定之后,直方分布图绘制在画布上
(2)输入参数后,点击取消后重置参数。
大致点击“确定” 按钮,右键进入回调(查看回调-callback),搭建初步实现框架,再去补其他具体模块实现。
还是同上面思路一样,通过捕获异常 输出 参数无效值的设置
% --- Executes on button press in pushbutton1. 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 draw draw=0 try %获得直方数 num=get(handles.edit1,'string') num=str2num(num) %获得随机数个数 rand_num=get(handles.edit2,'string') rand_num=str2num(rand_num) %这里的设置是因为一开始运行的时候,单选默认是“均匀分布”,至于你的“均匀分布”的Tag是什么要具体修改 try a=handles.str_button %如果点击了按钮组的选项,这里不会报错 因此可以直接获得 catch exception %报错了是因为没有点击按钮选项,按照初始的默认选择。报错的原因要具体看我下面按钮组的设置模块部分是怎么写的。因为,我没有给按钮们设置value a='radiobutton1'%查看对应的tag ,这里进行修改 end %判断单选按钮,对应随机数产生方法 switch a case 'radiobutton1'%均匀分布(设计框架时,只需在下面写do somthing) %判断是否输入生成范围 % b=size(get(handles.edit3,'string')) % assignin('base','size',b) %方便在工作区监控变量的指令) size1=size(get(handles.edit3,'string')) size2=size(get(handles.edit4,'string')) if (size1(2)>0) & (size(2)>0) %这是我判断不会输出空字符串不会报错的方法了。如果直接==''这样,对于有字符输入,会报错:维度不一致 min=get(handles.edit3,'string') max=get(handles.edit4,'string') min=str2num(min) max=str2num(max) if min==max %输入的范围不能相等 throw(exception) %扔出一个异常,被首级的try..catch.. 捕获,执行首级的命令。 %要看清try...catch... 的分级 end else %默认设置 min=0 max=1 end assignin('base','max',max) R=min+(max-min).*rand(rand_num,1)%[20-100] %均匀分布 case 'radiobutton2' %下面分析和上面雷同,正态分布 size1=size(get(handles.edit7,'string')) size2=size(get(handles.edit8,'string')) if (size1(2)>0) & (size(2)>0) mean=get(handles.edit7,'string') standard_deviation=get(handles.edit8,'string') mean=str2num(mean) standard_deviation=str2num(standard_deviation) else mean=0 standard_deviation=1 end assignin('base','mean',mean) assignin('base','standard',standard_deviation) %from a normal distribution with mean 1 and standard deviation 2. %r = 1 + 2.*randn(100,1); R=mean+standard_deviation.*randn(rand_num,1);%正态分布,均值为0,方差为1 case 'radiobutton3' %do something 泊松分布 lam=70 R=poissrnd(lam,rand_num,1); case 'radiobutton4' %do something 几何分布 size1=size(get(handles.edit6,'string')) if size1(2)>0 p=get(handles.edit6,'string') p_=str2num(p) % assignin('base','p_',p_) if p_>100|p_<1 % ME=MException('myfun:valid value','value %s is valid',p) % throw(ME) %这里是自定义异常,并抛出,后来没有用到 throw(exception) else p_=p_/100 R=geornd(p_,rand_num,1) end else throw(exception) end case 'radiobutton5' %do something 二项分布 size1=size(get(handles.edit6,'string')) if size1(2)>0 p=get(handles.edit6,'string') p_=str2num(p) assignin('base','p_',p_) if p_>100|p_<1 throw(exception) else p_=p_/100 R=binornd(50,p_,rand_num,1); end else throw(exception) end end %绘制直方分布图 axes(handles.axes1) hist(R,num) draw=draw+1 catch exception warndlg('输入了无效值,请重新输入','warning string') end
小总结:
- 各种分布的使用方法
用matlab生成各种分布的随机数并做直方图 - 异常处理
引发异常
捕获异常
(2)多个单选按钮的设置
两个思路:
1.通过设置按钮组的回调函数
2.通过设置所有的按钮 的 回调函数
下面的例子讲的非常详细:
MATLAB中的单选按钮和按钮组
下面我是通过第一个思路设置
% --- Executes when selected object is changed in uibuttongroup2. function uibuttongroup2_SelectionChangedFcn(hObject, eventdata, handles) % hObject handle to the selected object in uibuttongroup2 % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) %方法二 %这里代码解释了上面为什么要异常处理,如果是默认选择而不点击,根本就不会进入这个响应函数,相应的handles 里面 就没有 str_button 这个属性 handles.str_button=get(hObject,'tag') %保存数据 guidata(hObject,handles)
(3)取消置数
% --- Executes on button press in pushbutton2. function pushbutton2_Callback(hObject, eventdata, handles) % hObject handle to pushbutton2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) set(handles.edit1,'string','') %设置空值的方法 set(handles.edit2,'string','') set(handles.edit3,'string','') set(handles.edit4,'string','') set(handles.edit7,'string','') set(handles.edit8,'string','') set(handles.edit6,'string','') set(handles.radiobutton1,'value',1)%使能当前
最终效果(分布图展示 和 数据异常报错)
尽管代码可能写的有些累赘,如果有更好的方法,更简洁的代码实现可以讨论区交流~
相关文章推荐
- matlab中gui界面制作的问题汇总
- MATLAB GUI制作快速入门
- MATLAB(3)——GUI界面设计入门
- MatlabGUI图像界面入门程序——加法界面
- Matlab GUI入门获取\设置界面控件的值
- MATLAB GUI界面总结(转载)
- matlab 使用GUI的一些入门细节
- Matlab---GUI界面编程2(m文件纯代码实现)
- matlab的gui图像处理操作界面,实现重置和退出按钮功能
- java GUI界面初步入门示例【AWT包】
- 一个简单的matlab图形界面程序GUI
- Matlab GUIDE使用总结--Matlab GUI界面
- 用MATLAB设计一个超简单的变声GUI界面
- matlab GUI制作拼图小游戏
- 基于MATLAB摄像头的库内外人脸识别系统(摄像头,源码,GUI界面,论文)
- matlab GUI入门实现字符串传递的功能
- Matlab GUI 零基础学员快速入门
- 【转】 MATLAB GUI界面大小 自动适应
- 第70讲:Scala界面GUI编程入门
- Matlab GUI图形化界面,坐标