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

 我来答
tianxiawulang
推荐于2018-05-10 · TA获得超过2.7万个赞
知道大有可为答主
回答量:4732
采纳率:89%
帮助的人:2633万
展开全部

背景知识

函数有自己独立的工作区,其使用的任何变量只可能是以下几种情况:

1、全局或静态变量:可以在函数的多次调用过程中保留结果不变,必需在函数体内用global或persistent明确声明;

2、输入输出参数:作为函数与外部交换数据的主要手段颤此(除输入输出参数,另一种数据交换手段是使用全局变量,但一般不推荐这种方式);

3、局部变量:除前两种情况之外的变量都是局部变量。局部变量只在函数的一次尺闷调用过程中产生,函数返回后,这些局部变量也就消失了。

 

错误分析

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

 陵洞弯

解决方案

解决的方法有两种:一是使用全局变量,但不推荐这种做法,就不具体说了;二是把handles作为输入参数传递到函数,具体做法是:

1、函数的定义改成

function y=f1(x,handles)

2、记住调用函数的时候也要多一个参数,例如:

...=f1(...,handles);

一壶天地茶
2013-12-21 · TA获得超过153个赞
知道答主
回答量:60
采纳率:0%
帮助的人:66.2万
展开全部
handles没有传进函数。可以将其设为全局变量,也可以作为参数传进
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式