在MATLAB的GUI编程中自定义的外部函数肿么不能调用内部的数据?

已举报 回答 关注
在MATLAB的GUI编程中自定义的外部函数肿么不能调用内部的数据?
问在线客服
扫码问在线客服
  • 回答数

    7

  • 浏览数

    6,740

7个回答 默认排序
  • 默认排序
  • 按时间排序

已采纳
背景知识
函数有自己独立的工作区,其使用的任何变量只可能是以下几种情况:
1、全局或静态变量:可以在函数的多次调用过程中保留结果不变,必需在函数体内用global或persistent明确声明;
2、输入输出参数:作为函数与外部交换数据的主要手段(除输入输出参数,另一种数据交换手段是使用全局变量,但一般不推荐这种方式);
3、局部变量:除前两种情况之外的变量都是局部变量。局部变量只在函数的一次调用过程中产生,函数返回后,这些局部变量也就消失了。

错误分析
在你所定义的f1函数中,handles既不是第1种,也不是第2种,那么只会被视为局部变量;而作为局部变量的handles在使用之前并未赋值,那么自然会出现“未定义变量”的错误了。

解决方案
解决的方法有两种:一是使用全局变量,但不推荐这种做法,就不具体说了;二是把handles作为输入参数传递到函数,具体做法是:
1、函数的定义改成
function y=f1(x,handles)
2、记住调用函数的时候也要多一个参数,例如:
...=f1(...,handles);
取消 评论
handles没有传进函数。可以将其设为全局变量,也可以作为参数传进
取消 评论
在弹出式菜单的callback里面(当然也可以写在别的按钮之类的回调函数下面)
get(hObject,'Value'),可以得到当前 用户所选择第几项

如果要得到具体的菜单名字
contents = cellstr(get(hObject,'String')) 现获取所有的菜单列表
contents{get(hObject,'Value')} 取出所选择的那一个
取消 评论
MATLAB函数定义的一般规则为
function [a,b] = fun(c,d,e)
函数体
end
其中 a,b是输出变量 fun是函数名称 c,d,e为输入函数变量 函数体为函数执行的功能。函数可以没有输出也可以没有输入

返回2*2矩阵对变量并没有特殊要求,只需保证在函数体中,给输出变量赋值使输出变量等于期望输出的2*2矩阵即可
取消 评论
在对象上面点右键,选view callback就可以设置了啊
里面的程序就自己编了
取消 评论
matlab里面都是返回矩阵的,就是一个数它也是按1×1的矩阵来算的,所以如果你函数内部得到一个2×2的矩阵OUT,直接OUT=Function(x);就行了
取消 评论
同学,你是哪个单位的?
竟和我在相同的时间做同样的题,还犯相同的错误!
取消 评论
ZOL问答 > 在MATLAB的GUI编程中自定义的外部函数肿么不能调用内部的数据?

举报

感谢您为社区的和谐贡献力量请选择举报类型

举报成功

经过核实后将会做出处理
感谢您为社区和谐做出贡献

扫码参与新品0元试用
晒单、顶楼豪礼等你拿

扫一扫,关注我们
提示

确定要取消此次报名,退出该活动?