| Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) | 
![]()  | 
	
| 		
			
			 | 
		#1 | 
| 
			
			 初级会员 
			
			
			
			注册日期: 2008-02-14 
				
				年龄: 44 
				
					帖子: 1
				 
				
				
				声望力: 0 ![]()  | 
	
	
	
		
		
			
			 
			
			我在不同窗口中需要传递变量,所以想使用全局变量。 
		
		
		
		
		
		
		
	但是,在MATLAB gui的m文件中,我使用global定义变量后,没有用啊。 教程上说,是要现在脚本文件中定义,然后再在要使用的函数中定义,但是gui的m文件中,没有脚本的啊 现在我只能先在matlab命令窗中,手动先用global定义了,然后再运行gui程序,这样全局变量才有用。 这个问题怎么解决呢?请高手指教  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 		
			
			 | 
		#2 | 
| 
			
			 初级会员 
			
			
			
			注册日期: 2007-08-30 
				
				
				
					帖子: 5
				 
				
				
				声望力: 0 ![]()  | 
	
	
	
		
		
			
			 
			
			我觉得教程的意思,应该是在guide自己生成的代码回调中自己写脚本文件时,用global定义全局吧。 
		
		
		
		
		
		
		
	而且也不一定要采用这种方式,GUI之间应该存在一定的依赖关系,在根界面上使用guide提供的三种数据存储的方式应该可以解决你的问题,这在一些例子里面也有提到。  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 		
			
			 | 
		#3 | 
| 
			
			 初级会员 
			
			
			
			注册日期: 2008-03-19 
				
				年龄: 42 
				
					帖子: 10
				 
				
				
				声望力: 18 ![]()  | 
	
	
	
		
		
			
			 
			
			可以在在GUI中把你要的变量定义为一个handles,这样的话每次用的时候直接引用就可以了,
		 
		
		
		
		
		
		
		
	 | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 		
			
			 | 
		#4 | 
| 
			
			 初级会员 
			
			
			
			注册日期: 2008-03-26 
				
				年龄: 40 
				
					帖子: 1
				 
				
				
				声望力: 0 ![]()  | 
	
	
	
		
		
			
			 
			
			方法一:set(hobject,'userdata',value); 
		
		
		
		
		
		
		
	get(hobject,'userdata') 方法二:setappdata(object,'paramater_name','paramater'); getappdata(object,'paramater_name'); 方法三:在不同对象间定义global paramater  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 		
			
			 | 
		#5 | 
| 
			
			 初级会员 
			
			
			
			注册日期: 2008-03-29 
				
				年龄: 39 
				
					帖子: 7
				 
				
				
				声望力: 0 ![]()  | 
	
	
	
		
		
			
			 
			
			定义在Hundles.下面应该就可以了吧
		 
		
		
		
		
		
		
		
	 | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 		
			
			 | 
		#6 | 
| 
			
			 初级会员 
			
			
			
			注册日期: 2008-04-02 
				
				年龄: 39 
				
					帖子: 14
				 
				
				
				声望力: 18 ![]()  | 
	
	
	
		
		
			
			 
			
			哪个文件中用到了全局变量,就再用global定义一遍。
		 
		
		
		
		
		
		
		
	 | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 		
			
			 | 
		#7 | 
| 
			
			 初级会员 
			
			
			
			注册日期: 2008-04-14 
				
				年龄: 41 
				
					帖子: 5
				 
				
				
				声望力: 0 ![]()  | 
	
	
	
		
		
			
			 
			
			全局变量的初始化可以放在程序的 OpeningFcn 或 figure的CreateFcn 里  
		
		
		
		
		
		
		
	个人意见放在OpeningFcn好些 用handles 和global都可以 但用handles方便些,不用在子函数里再次定义。  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 		
			
			 | 
		#8 | 
| 
			
			 初级会员 
			
			
			
			注册日期: 2008-05-02 
				
				年龄: 39 
				
					帖子: 25
				 
				
				
				声望力: 18 ![]()  | 
	
	
	
		
		
			
			 
			
			7楼的同学: 
		
		
		
		
		
		
		
	你知不知道:OpeningFcn下是在界面显示之前执行的,也就是说你还没调用其它的函数,这个语句下面的程序就开始随着你的GUI的打开而实行了。那也就是说它每次都是实行以前的数据,这好像不太好吧! 现在我们需要一种点某个按钮后,数据的调用再影响某个语句实行的方法啊!  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 		
			
			 | 
		#9 | 
| 
			
			 初级会员 
			
			
			
			注册日期: 2008-03-28 
				
				年龄: 42 
				
					帖子: 12
				 
				
				
				声望力: 18 ![]()  | 
	
	
	
		
		
			
			 
			
			与6楼的意见相同,在需要调用的函数和原函数中都用GLOBAL定义就可以了。
		 
		
		
		
		
		
		
		
	 | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 |