MATLAB GUI设计时,怎么把内部程序计算启动时引导程序的值显示到界面上?

19:45 提问
matlab GUI程序界面,求解二元一次方程,并将其中的一个根转换成字符串显示在GUI的文本框中
做GUI程序界面,使用Matlab求解二元一次方程,得到两个参数值,选取其中的了一个值,并转换成字符串显示在GUI的文本框上,问题是matlab一直显示错误使用 matlab.ui.control.UIControl/set
设置 'UIControl' 的 'String' 属性时:
字符串应是字符、数值或元胞数组数据类型。
代码如下:
[a,b]=solve(a * b==CA,2*(a+b)==CP);
changdu = 0;
kuandu =0;
a(1)&b(1)
disp('a(1)为长度、b(1)为宽度:');
disp(a(1));
disp(b(1));
changdu = changdu + a1;
kuandu = kuandu + b1;
disp('a(1)为宽度、b(1)为长度:');
disp(b(2),a(2));
changdu=changdu + b(2);
kuandu=kuandu + a(2);
set(handles.Width,'string',K)
set(handles.Length,'string',L)
大神们帮我看一下
按赞数排序
set(handles.Width,'string',**num2str**(K))
set(handles.Length,'string',num2str(L))
set(handles.Width,'string',num2str(K))
set(handles.Length,'string',num2str(L))
这个我们试过啦,,还是不行,,可能的原因在于系统仍然无法识别取地 是哪个根??
这个我们,还是不行,,仍然无法识别是哪个根??
global changdu kuandu
[a,b]=solve(a * b==CA,2*(a+b)==CP);
changdu = 0;
kuandu =0;
%t=double([a,b])
if a(1)&a(2)&&b(1)
a1=a(1);b1=b(1);
a2=a(2);b2=b(2);
t1=double(a1)
t2=double(b(1))
disp('a(1)为长度、b(1)为宽度:');
changdu = changdu + a1;
t3=double(changdu)
kuandu =kuandu + b1;
t4=double(kuandu)
disp('a(1)为宽度、b(1)为长度:');
disp(b(2),a(2));
changdu=changdu + b(2);
t3=double(changdu)
kuandu=kuandu + a(2);
t4=double(kuandu)
set(handles.Width,'string',W)
set(handles.Length,'string',L)
做出来啦 ,谢谢大家啦
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐专门为自己积累知识的平台,同时与大家共享
matlab GUI界面设计总结
二:使用控件新建一个布局(窗口),可以在新窗口中添加如下控件1.静态文本(Static Text)
2.编辑框(Edit Text)控件3.列表框(Listbox)控件
4.滚动条(Slider)控件5.按钮(Push Button)控件
6.开关按钮(Toggle Button)控件7.单选按钮(Radio Button)控件
8.按钮组(Button Group)控件9.检查框(Check Box)控件
10.列表框(Listbox)控件11.弹出式菜单(Popup Menu)控件
12.坐标轴(Axes)控件13.面板(Panel)控件每一个控件都有自己的属性常规属性有:
一、控件风格和外观
(1)BackgroundColor:设置控件背景颜色,使用[R G B]或颜色定义。
(2)CData:在控件上显示的真彩色图像,使用矩阵表示。
(3)ForegroundColor:文本颜色。
(4)String属性:控件上的文本,以及列表框和弹出菜单的选项。
(5)Visible:控件是否可见。
二、对象的常规信息
(1)Enable属性:表示此控件的使能状态,设置为on”,表示可选,为“off”时则表示不可选。
(2)Style:控件对象类型。
(3)Tag:控件表示(用户定义)。
(4)TooltipString属性:提示信息显示。当鼠标指针位于此控件上时,显示提示信息。
(5)UserData:用户指定数据。
(6)Position:控件对象的尺寸和位置。
(7)Units:设置控件的位置及大小的单位
(8)有关字体的属性,如 FontAngle, FontName等。
三、控件回调函数的执行
(1)BusyAction:处理回调函数的中断。有两种选项:即Cancel:取消中断事件,queue:排队(默认设置)。
(2)ButtonDownFcn属性:按钮按下时的处理函数。
(3)CallBack属性:是连接程序界面整个程序系统的实质性功能的纽带。该属性值应该为一个可以直接求值的字符串,在该对象被选中和改变时,系统将自动地对字符串进行求值。
(4)CreateFcn:在对象产生过程中执行的回调函数。
(5)DeleteFcn:删除对象过程中执行的回调函数。
(6)Interruptible属性:指定当前的回调函数在执行时是否允许中断,去执行其他的函数。
四、控件当前状态信息
(1)ListboxTop:在列表框中显示的最顶层的字符串的索引。
(2)Max:最大值。
(3)Min:最小值。
(4)Value:控件的当前值。你可以使用属性编辑器来设置属性 三:写回调函数 CallBack每个控件都有几种回调函数,右键选中的控件一般会有如下菜单: 然后就可以跳转到相应的 Editor中编辑代码,GUIDE会自动生成 相应的函数体,函数名,名称一般是 控件 Tag+ Call类型名参数有三个 ( hObject, eventdata, handles)其中 hObject 为发生事件的源控件,eventdata为事件数据结构,handles为传入的对象句柄CreateFcn 是在控件对象创建的时候发生(一般为初始化样式,颜色,初始值等)DeleteFcn 实在空间对象被清除的时候发生ButtonDownFcn和KeyPressFcn分别为鼠标点击和按键事件CallbackCallBack为一般回调函数,因不同的控件而已异。例如按钮被按下时发生,下拉框改变值时发生,sliderbar 拖动时发生等等。四:句柄图形之间的层次关系 可以创建 图形句柄的常见函数1.figure函数:创建一个新的图形对象。2.newplot函数:做好开始画新图形对象的准备。3.axes函数:创建坐标轴图形对象。4.line函数:画线。5.patch函数:填充多边形。6.surface函数:绘制三维曲面。7.image函数:显示图片对象。8.uicontrol函数:生成用户控制图形对象。9.uimenu函数:生成图形窗口的菜单中层次菜单与下一级子菜单。几个实用的小函数:uigetfile
选择文件对话框uiputfile
保存文件对话框uisetcolor
设置颜色对话框fontsetcolor
设置字体对话框msgbox
消息框warndlg
警告框helpdlg
消息框不过如果要让父窗口不可用,你需要使用uiwait来定焦于用户对话框。例如:
h=helpdlg('Please press me!','Attention');
uiwait(h);四:获取与设置对象属性 常用函数:gcf函数:获得当前图形窗口的句柄gca函数:获得当前坐标轴的句柄gco函数:获得当前对象的句柄gcbo函数:获得当前正在执行调用的对象的句柄gcbf函数:获取包括正在执行调用的对象的图形句柄delete函数:删除句柄所对应的图形对象findobj函数:查找具有某种属性的图形对象设置方法:(1)get函数返回某些对象属性的当前值。例如:p=get(obj,'Position');
(2)函数set改变句柄图形对象属性,例如:set(obj,'Position',vect); 例如:关闭控件
set(handles.listbox2,'Visible','off');关闭窗口:五:函数调用在一个m文件中,可以定义多个函数,但是文件名一定要与第一个函数(主函数)一致,该文件中其他函数则为本文件的私有函数,外部不可访问(可以通过参数调用的方法访问,下面会描述)。例如在一个程序中,创建一个fig后,会生成这样一个m文件:function varargout =febirdfun(varargin)gui_Singleton = 1;gui_State = struct('gui_Name',
mfilename, ...
'gui_Singleton',
gui_Singleton, ...
'gui_OpeningFcn', @febirdfun_OpeningFcn, ...
'gui_OutputFcn',
@febirdfun_OutputFcn, ...
'gui_LayoutFcn',
'gui_Callback',
[]);if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});endif nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});else
gui_mainfcn(gui_State, varargin{:});end解析 一下这个主函数:首先 gui_State是一个结构,指定了figure打开和输出函数,开始 gui_CallBack为空,如果输入参数个数不为0,接下来将输入第一个参数传递给gui_State.callback。接下来用交给 gui_mainfcn函数处理,gui_mainfcn 根据gui_State和传入参数来确定是执子函数,还是打开 fig 文件和运行 OpeningFcn和OutputFcn。如过 gui_Callback为空,那么就运行打开主窗口fig文件,否则,调用子函数这个函数的作用有:1.当输入不带参数的时候,能够打开fig文件,并且初始化控件2.当指定需要调用的函数名时,可以作为其他控件callback使用 (实则调用同文件中的子函数)
例如,在某一个控件的 callback 里面这样写:(febrdfun为主函数)
febirdfun("@push_button_Callback",gcbf,[])
这样的调用就可以调用文件里面的子函数。当然也可以使用其他文件里面的函数作为callback,不过那样的话,数据传递会麻烦一些。下面看figure Openning Function%================================function Main_OpeningFcn(hObject, eventdata, handles, varargin)handles.output = hO% 通常在这里面定义自己的数据结构例如s=struct("P1",v1...
"P2",v2);handles.MyStruct=s;% 更新handles数据结构
非常重要!!guidata(hObject, handles);%================================function varargout = Main_OutputFcn(hObject, eventdata, handles)varargout{1} = handles.这个函数是输出返回值的定义注意:
matlab 中,function 对应的 end 可以没有,但是随着版本的更新,end将会被要求。六:数据传递在matlab GUI程序中进行值传递我经常使用的两种方法:1.利用主函数 的 handles 数据结构传值例如在某一个图像窗口句柄 中有一个对象 handles(可以定义自己的数据结构)那么在一个子Callback函数中,可以通过handles传递数据:function
sliderbar1_Callback(hObject,eventdata,handles)
v1=get(hObject,'value');
obj=handles.Text1
%直接定位 Tag 为 Text1的控件
set(obj,'value',v1);
handles.MyStruct.P1=v1; % 更改handles中的数据
guidata(hObject,handles); %更新 handles !!重要
end2.利用控件的 UserData 来传值 每一个控件一般都有一个属于自己的自定义域,userData,你可以定义这样一个域用来保存自己的数据,例如在定义 timer 的 TimerFcn中t1=timer('TimerFcn',{@Timer1Fcn},'ErrorFcn',@Timer1ErrorFcn},'Period',1.0,'ExecutionMode','fixedrate');t1.Userfata=handles.MyS这里 Timer1Fcn的调用看似没有传入任何参数,实际上此函数的定义一定要有至少两个参数function Timer1Fcn(obj,eventata)
obj.UserData=XXXXX;%可以这样共享数据 end当然Timer定义的时候允许这样传递一个参数,当然这样也可以进行传值.t1=timer('TimerFcn',{@Timer1Fcn,handles},'ErrorFcn',{@Timer1ErroFcnr,handles},'Period',1.0,'ExecutionMode','fixedrate');
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!matlab GUI 设计一个输入参数计算数值窗口_百度知道
matlab GUI 设计一个输入参数计算数值窗口
以此有四个edit窗口。
function pushbutton1_Callback(hObject, eventdata, handles)
handle to pushbutton1 (see GCBO)
% eventdata
reserved - to be defined in a future version of MATLAB
structure with handles and user d...
我有更好的答案
z=1/(2*pi*f*sqrt(l*c));set(handles.edit4,'String',‘char(z)’)--==》z=1/(2*pi*f*sqrt(l*c));z1=num2str(z);set(handles.edit4,'String',z1);
采纳率:70%
(1)首先,char函数解决不了您的问题。char()在这里是强制类型转化,将ASCII表中对应数值的字符进行显示。设Z=48.23,则char(z)将显示0,函数将z取整后的值进行对应,字符'0'的ASCII码为48.(2)其次,可以采用num2str(z)达到目标效果。具体可以尝试搜索各种数据类型的相互转换方法,会有更多收获的。设z=48.23,则num2str(z)将返回48.23希望对你有所帮助!
本回答被网友采纳
我记得我以前做的时候,是先把z用num2str函数转换成string类型。
你好,请问你这个输入数值之后可以直接计算吗?为啥我的一直报错?Error in gui_mainfunfeval(varargin{:});gui_mainfun(gui_State,varargin{:});请问你有遇到过类似的情况吗?或者你知道这是什么原因吗?
1条折叠回答
为您推荐:
其他类似问题
matlab的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。&&&&& 前段时间中对目标追踪的主要算法、利弊特性以及本文所使用的基于摄像头的实时目标追踪算法有了一个大致的了解,并帮助同学仿真了一小部分的实验结果。为将算法应用于实际环境,能在不深入研究算法及编程工具的条件下就能对视频追踪有一个清晰的了解,本人特意在原有内容的基础上开发了基于视频追踪算法(同学提供)的图形用户界面(Graphical User Interface)。
1.2 &MATLAB图形用户界面概述
&&&&& MATLAB界面设计功能强大,同时制作出的界面美观大方,功能上亦是非常直观,另外由于本文前述部分算法仿真也是基于MATLAB所实现,故可有效避免MATLAB与其他语言的混合编程,以减少软件界面设计难度。MATLAB为用户开发图形界面提供了一个方便高效的集成开发环境&GUIDE,几乎所有的工作都能够在GUIDE所提供的环境和工具中实现。在编写完成后,GUIDE将用户保存设计好的GUI界面保存在一个FIG资源文件中,同时还能够生成包含GUI初始化和组建界面布局控制代码的M文件。当然基于MATLAB的GUI设计也可避开GUIDE的使用,但相对来说更为复杂,不够直观,且效率会大大降低。
&&&&&&在MATLAB 2014a环境下,通过在命令行输入guide或单击MATLAB主窗口的快速启动按钮即可以打开GUIDE编辑对话框。在新建的空GUI中添加自己需要的菜单、按钮等控件,最后通过编写回调函数完成需要的控件功能,即可完成整个GUI软件界面的编写,在GUIDE下所生成的界面框架如图& 所示,在此基础上只要想应的为每个按键、坐标及编辑框添加相应的回调函数和句柄及设置相应参数即可完成整个GUI的设计工作。&&&&&&&&&&&&&&&&&&&&
&&&&& 利用MATLAB所生成的界面系统可在其自带的编译功能生成可执行文件,在安装了MATLAB编译器(MCR)的机器上即可完美运行该GUI及其算法所能实现的效果。下面简要介绍一下各模块的功能以及实现。&
1.3& 软件各个模块及功能实现
&&&&& 本文使用MATLAB 2014a环境开发基于摄像头的实时目标跟踪软件界面,软件界面主体如图& 所示。该软件可以实现的功能主要包括:Camera实时输入及显示、Camera输入暂停并抓取图像帧、用户手动选择跟踪区域、跟踪区域坐标显示及Camera输入实时跟踪等。这些基本功能配合起来可以实现一套完整的、实时的跟踪目标选择&目标区域学习&目标区域跟踪的功能。
1.3.1 &&Camera实时采集模块
&&&&&& 摄像头的实时画面在软件中的实时显示是本软件最基础的工作,该过程可描述为三部分:首先通过在GUIDE中创建axes1坐标,确立视频在整个GUI中的显示位置;之后调用web Camera的视频数据流,通过循环调用的方式获取到每一帧的信息;最后在回调函数中指定每一帧显示窗口的句柄(Handle)为Axes1。以上步骤即可实现在MATLAB的GUIDE中实时显示摄像头所传输过来的视频流。在保证摄像头连接成功,且能够被正确调用的情形下单击软件GUI界面上【开始摄像头播放】按钮所获取到的实时图像示例如图 &所示。
&&&&& 本软件中使用obj=videoinput('winvideo',1,'YUY2_640x480')命令来实现视频文件的读取以及显示图像的分辨率控制等功能。之后利用get函数获取每一帧的尺寸以及颜色通道数,最后通过指定图像句柄hImage,利用preview(obj,hImage)即可在当前句柄窗口中显示图像。
如单击【停止摄像头显示】按钮即可起到关闭摄像头视频流的作用,此时软件将自动截取最后一帧的图像显示在窗口内,该功能通过在该按钮的callback函数中调用pause()函数即可实现。
1.3.2& 跟踪区域学习模块
&&&&& 作为一个实时目标跟踪软件,所需要最为重要的功能之一即是可让用户选择任意的区域以实现跟踪的目的,即实现所选即所跟踪。故本软件通过检测用户对于感兴趣区域鼠标点击事件,获取用户当前点击区域的坐标值,将所得到的坐标值通过全局变量反馈给学习区域回调函数,从而划定了学习区域。通过此种方式实现了用户自主选择跟踪区域的目的,能够在软件中体现出良好的用户友好度。点击GUI界面中的【选择跟踪区域】按钮,系统会自动调用摄像头此时画面,3秒之后截取一帧并显示在窗口中(间隔时间3秒主要是让用户调整摄像头位置及其他参数),之后对于该帧静止画面,用户可用鼠标单击任何感兴趣的区域,选择为跟踪目标。单击完成之后系统界面会显示出当前用户所选择跟踪区域坐标,跟踪区域设置为一矩形,长和宽在软件中分别设置为默认值25pixel和45pixel。当点击某一学习画面,界面获取到学习区域坐标的示意图如图& 所示。
&&&&& 学习模块调用了自编函数ButttonDownFcn,以实现在检测到鼠标点击事件时获取此时该点在整个图片中的坐标位置,之后以 global y全局变量的形式传递到学习算法的区域选择参数中去。同时通过set(handles.edit1,'String',x)命令参数将坐标值显示在界面的编辑框中,据此也可以判断用户是否选择了正确的区域。&
1.3.3& 跟踪模块
&&&&& 这是本软件算法最重要的部分,最主要的ObjectTracking功能都在此部分实现。本模块通过提供实时的摄像头视频流,并结合目标学习部分的学习区域和回调函数中所使用的跟踪算法来实现对每一帧视频帧的实时跟踪显示。仿真结果表明,在本GUI环境中通过学习之后的区域能够有效的在摄像头实时显示的条件下被跟踪检测到。点击软件界面中的【开始运行】按钮,即可进入实时跟踪模式,在学习模块中所选择的区域会以一个25*45像素的矩形框显示出来,并且随着摄像头的移动该矩形框能够随之移动从而保持始终对该区域的跟踪。GUI中使用的一个示例如图&& 所示。
&&&&&&& 摄像头移动之后蓝色矩形框跟踪目标区域示意如图&& 所示。
&&&&&& 作为一个面向用户的程序,如果要脱离编译环境实现界面中各个按钮的功能,就需要调用实现编译好的各种算法程序,在源程序中将这些程序都以M文件的形式保存,方便MATLAB的调用执行。但MATLAB对运行环境的要求较为苛刻,无法满足一般用户需要随时运行的基本需求,此时就要考虑将MATLAB文件转化为可执行文件。利用MATLAB的deploytool工具即可将需要的M文件、数据文件和资源文件编译为可执行程序,将可执行程序与MCR一起打包后利用VS2010制作发布程序即可生成可执行文件。
阅读(...) 评论()

我要回帖

更多关于 计算启动时引导程序 的文章

 

随机推荐