关于MATLAB GUI之间的参数传递

2025-03-13 19:23:45
推荐回答(2个)
回答1:

global确实可以这样用,但在应用程序里这样用对变量是不安全的,因为任何地方都可以去修改这个全局变量,正规的方法不是这样的。
一般gui元素都可以绑定用户数据,你可以理解为C++类里面的public字段但matlab里面的用户字段更灵活,可以改变类型可以增删(删除一个字段用rmappdata),有两个函数setappdata和getappdata可以这样用:

假如figure1里有一个value1变量可供外部使用,在figure1里面你设置:
setappdata( fig1handle, 'value1', 100 );%如果有其他变量,继续设置就可以了,可以是任意类型

然后gui直接参数传递时只需要把gui元素的句柄传过去就行了,在figure2里访问figure1的value1变量:
value1 = getappdata( fig1handle, 'value1' );%就可以得到100

回答2:

你的理解没错。
全局变量只要在需要使用的地方用global声明一下就可以,对整个MATLAB进程有效。而所谓的不同GUI对应的也不过是多个函数而已,当然不会有问题。