有关matlab gui的问题,想获取界面输入的参数执行m文件,但是会报错。

有关matlab gui的问题,想获取界面输入的参数执行m文件,但是会报错。,第1张

如果是脚本文件的话,要想办法改成函数文件

并使其能够接受两个输入参数

根据两个输入参数计算出24个输出参数

而24个输出参数的形式是固定的8x3,所以完全可以输出一个矩阵

那么你用于计算的函数大概拥有下面的形式

输出矩阵= 函数名(输入参数1,输入参数2)

省下的你只需在gui的回调函数里,调用编写好的计算函数

将gui中根据editbox输入的连个参数传递给计算函数

得到的8x3矩阵,顺序显示到gui的输出就可以了

你的问题我今天刚刚解决,可能有点复杂哈,不过很好懂。

假设你有一个GUI叫gui_1,另一个叫gui_2,在gui_2中调用gui_1的参数或者结果,

在gui_2中的buttonCallback下输入

function pushbutton1_Callback(hObject, eventdata, handles)

a=gui_1;

则gui_1的结果就传递到a中。

现在再说gui_1中的参数输入,

(1)返回值只有一个的情况

在gui_1中的:

function gui_1_OpeningFcn(hObject, eventdata, handles, varargin)

下面任意一个地方输入

handlesoutput = 数据或者变量名;

在gui_1中的

function varargout = untitled_OutputFcn(hObject, eventdata, handles)

varargout = handlesoutput;

其实程序本来的m文件就是这样的,不用更改,如果数据或者变量是在同一个GUI中别的控件或执行中输入的,将数据或者变量名定义为全局变量就可

global 数据或者变量名;

同时在function gui_1_OpeningFcn(hObject, eventdata, handles, varargin)

第一句就输入

global 数据或者变量名;

再输入handlesoutput = 数据或者变量名;即可。

(2)返回值有多个以上的情况

基本以上面相同,

function gui_1_OpeningFcn(hObject, eventdata, handles, varargin)

下面任意一个地方输入

handlesoutput = 数据1或者变量名1;

handlessecend_output = 数据2或者变量名2;

handlesthrid_output = 数据3或者变量名3;

同时在

在gui_1中OutputFcn输入以下语句

function varargout = gui_1_OutputFcn(hObject, eventdata, handles)

varargout = handlesoutput;

varargout = handlessecend_output;

varargout = handlesthrid_output;

依次类推,在同一个gui中的参数传递采用上述的设置为全局变量调用即可。

同时对返回值为多参数的情况gui_2中则要输入语句改为

在gui_2中的buttonCallback下输入

function pushbutton1_Callback(hObject, eventdata, handles)

[data1,data2,data3,]=gui_1;

则gui_1的结果就传递到[data1,data2,data3,]=中,分别对这些返回值进行 *** 作即可。

按照以上的做法,可能很复杂,可是对于初学者一看就明白,我也是刚刚才开始学习,不知对你有帮助没。

出错原因:

你在调用solve解方程组的时候,输入参数是字符串:

[x,y]=solve(,'x,y');

这种情况下,handlesmetricdataq和handlesmetricdataFb都是以字符串的形式传递给符号运算内核,而这两个变量的值根本没起到作用。这样,方程组求解失败,后面再调用double试图将结果转换成数值类型当然会出错。

修改建议(选择其中一种):

1、使用符号表达式作为输入参数调用solve:

syms x y

q=handlesmetricdataq; Fb=handlesmetricdataFb;

[x,y]=solve(-(1323x+4011y)+598176+2008q+10171Fb,-(4011x+1323y)+19396053+1008q+3059Fb,x,y)

2、把变量值转换为字符串:

[x,y]=solve(['1323x+4011y=598176+2008' num2str(handlesmetricdataq) '+10171' num2str(handlesmetricdataFb)], ['4011x+1323y=19396053+1008' num2str(handlesmetricdataq) '+3059' num2str(handlesmetricdataFb)],'x,y');

注意,后一种方法使用num2str转换过程中可能会损失精度(默认保留四位小数),写法也更繁琐,不推荐。

直接这样做就行了:

i = find(''==filename1);

%去除文件后缀,提取单纯的文件名

imname = pname(1:i-1);%%%imname就是你要的结果

以上就是关于有关matlab gui的问题,想获取界面输入的参数执行m文件,但是会报错。全部的内容,包括:有关matlab gui的问题,想获取界面输入的参数执行m文件,但是会报错。、MATLAB中如何将GUI输入对话框输入的信息,定义并且在此使用、Matlab在Gui中方程系数输入调用以及sym转换double问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9681095.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存