Matlab GUI callback编程问题(数值传递) 高手请进!

程序如下P=str2num(get(findobj(interface2_3,'tag','edit1'),'string'))E=str2num(get(findobj... 程序如下
P=str2num(get(findobj(interface2_3,'tag','edit1'),'string'))
E=str2num(get(findobj(interface2_3,'tag','edit2'),'string'))
B=str2num(get(findobj(interface2_3,'tag','edit3'),'string'))
F=str2num(get(findobj(interface2_3,'tag','edit7'),'string'))
D1=str2num(get(findobj(interface2_3,'tag','edit4'),'string'))
D2=str2num(get(findobj(interface2_3,'tag','edit5'),'string'))
L1=str2num(get(findobj(interface2_3,'tag','edit6'),'string'))
L2=str2num(get(findobj(interface2_3,'tag','edit10'),'string'))

if equationform==3&get(findobj('tag','radiobutton3'),'value')==1
openfig interface3;
[k1,x]= solve('tan(4*3.14*F*L1)+2*3.14*F/k1*tan(k1*x)=0', 'k1=sqrt(4*3.14^2*F^2*P/E-log(2)*log(2)/x^2)');

具体的意义就是,我从一个gui界面的edittext中读入数据,然后用读入的数据,解一个二元方程组 (想要通过方程组解得的未:Q 知参量是k1,x.)
问题如下:
Warning: Warning, solutions may have been lost
??? Error using ==> solve at 162
Unable to find closed form solution.

出现如上的运行错误

可是当我用已知的数据带入此方程时,方程是可解的,但用传递变量带入方程时就会出现如上的错误。
不知什么原因,请高人指点,不胜感激!
展开
 我来答
wangimagine
2011-12-08
知道答主
回答量:15
采纳率:0%
帮助的人:10.9万
展开全部
首先,从edit.text中获取信息(实际是字符串)
P=str2num(get(handles.edit1,'string'));
以下类推。
其次,get(findobj('tag','radiobutton3'),'value')==1也类似的改动为get(handles.radiobutton3,'value')。
再解下方程看看有没有问题。
追问
请问这两种表达方式有什么区别? handles 与 findobj
追答
好了,把你的鼠标放到这个按钮上然后右击鼠标,会有如下界面,

然后,一个编辑该按钮功能的matlab语句界面会出现。

黑色部分就是你那个按钮所要对应的功能(function)的申明(命名)语句,在这个语句的后面写上你要的功能的instruction(命令)。

好了,其它的按钮,包括拉条(slider)的功能语句都可以这么找到。

那么不同视觉模块间的参数如何传递。当然,这里不是什么局部变量,全局变量。没这么麻烦。matlab自己会搞定这个。

具体学习可以下载我的两个例子,但是,我特别声明两个函数的功能。

get()函数,举例:k=get(handles.edit1,'String')

handles.XXX 表示从以标签Tag为XXX的地方得到一样东西,后面的string声明是我得到的是字符串(字符的组合吧,类比数组,也就是数的组合)。

k= 表示把得到的字符串赋值给变量t0.

set()函数,举例:k=str2double(get(handles.edit1,'String'));
set(handles.slider1,'value',k)

str2double()函数是表示字符串到数的转换("string to(two) double")

第一句的意思是把字符串格式的数字变成一个数值,然后把这个赋值后的结果再赋值给变量k。

然后是一个set()函数,表示把标签(Tag)为slider4的属性设置为与数值(value)有关的属性,这个数值的值由上面语句中被赋值的k决定。

好了,这样,不同标签之间(edit1与slider1)的数值就发生映射了。

我补充下刚才提到的标签Tag是神马意思。Tag就是一个部件的名字,比方说,那个按钮,它在matlab里有自己的名字,这个名字是怎么看的呢?双击你刚才创建的按钮图标,去找到如图所示的Tag

这个Tag就是这个图标的名字。

亲们会发现,不论get()还是set()中都有一个handles.XXX,这个handles.XXX表示你的函数对象是以Tag为XXX的对象进行的。比如,从XXX中取值,就在get()中的第一个语句就声明对象是XXX。 设置某个部件的属性也如此。在set()中第一个语句就声明对象是XXX。
意法半导体(中国)投资有限公司
2023-06-12 广告
单片机,即单片微控制器,也称为单片微型计算机,是将中央处理器(CPU)、存储器(ROM,RAM)、输入/输出接口和其他功能部件集成在一块 在一个小块的集成电路上,从而实现对整个电路或系统的数字式控制。单片机不是完成某一个逻辑功能的芯片,而是... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式