setappdata&getappdata in Matlab

本文介绍了Matlab中setappdata和getappdata函数的基本用法,并通过实例演示了如何利用这两个函数为GUI组件设置和获取应用程序预定义数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Matlab 中setappdata和getappdata函数

setappdata & getappdata

setappdata,指定应用程序预定义数据。语法为:setappdata(h,‘name’,value),其为指定的句柄对象h,设置应用程序预定义数据。将应用程序数据赋值给指定的name和value(当name 不存在时,则创建name字段), value可以任意数据类型。
getappdata,获取应用程序预定义数据的值。
语法:① value = getappdata(h, name),获取句柄为h的对象中,应用程序预定义数据nama字段的值。如果指定的name字段不存在,Matlab将返回一个空的value值。 ② values = getappdata(h),;返回句柄对象h的所有应用程序预定义数据的值。

注释:
① 应用程序数据与对应figure或者任意GUI组件(除了Active控件)相关联。只要知道存储数据句柄(h)和数据字段(name),即可以使用getappdata函数取回需要的数据。②只有Matlab句柄图形对象才可以使用应用程序数据(appdata)属性。

实例演示

e.g.1.
在Windows平台上,新建一个figure对象,返回其句柄hfig,使用setappdata函数添加应用程序数据url和author。
hfig=figure; %新建一个figure窗体
setappdata(hfig,‘url’,‘http://www.baidu.com’); %添加应用程序数据url
setappdata(hfig,‘author’,‘yichuanshaobing’); %添加应用程序数据author
getappdata(hfig) %获取应用程序数据。

### 创建MATLAB GUI以图形化显示串口通信接收的数据 为了实现在MATLAB中通过GUI图形化显示串口通信接收到的数据,可以按照如下方法构建应用程序。此过程涉及创建用户界面组件、设置串口连接以及编写回调函数来处理数据并更新图表。 #### 设计用户界面布局 利用GUIDE工具或App Designer设计一个简单的用户界面,该界面上应至少包含启动/停止按钮用于控制数据采集状态,还有一个Axes对象用来绘制来自串口设备的实时信号[^1]。 ```matlab % 假设使用的是 GUIDE 工具生成的基础框架下添加以下代码片段 function varargout = mySerialPlot(varargin) % ...省略其他自动生成的内容... handles.output = hObject; guidata(hObject, handles); end % --- Executes on button press in startButton. function startButton_Callback(hObject, eventdata, handles) setappdata(0,'isRunning',true); % 设置全局标志位表示正在运行 drawnow; % 更新屏幕 while getappdata(0,'isRunning') == true dataPoint = fscanf(handles.serialPort,'%f'); % 读取单个浮点数作为样本点 if ~isempty(dataPoint) plotData(handles.axes,dataPoint); % 将新获取的数据点加入绘图区域 end pause(0.1); % 控制刷新频率 end end % 绘图辅助函数 function plotData(ax,newValue) hold(ax,'on'); xlimMode(ax,'manual'); ylimMode(ax,'auto'); xLim = ax.XLim; yLim = ax.YLim; newX = linspace(xLim(2)-0.1*(xLim(2)-xLim(1)),xLim(2),length(newValue)); lineObj = findobj(ax,'Type','line','-and','Tag','LiveDataLine'); if isempty(lineObj) plot(ax,newX,newValue,'b.','MarkerSize',8,'Tag','LiveDataLine'); else XData=lineObj.XData; YData=[lineObj.YData newValue]; lineObj.XData=circshift([XData newX],-length(newValue)); lineObj.YData=YData(end-length(XData)+1:end); axis tight; end end ``` 上述代码展示了如何定义`startButton_Callback`回调函数,在按下“开始”按钮时触发循环读取串口输入并将结果显示于指定坐标轴上;同时提供了一个名为`plotData`的帮助函数负责管理实际的绘图逻辑。 对于多窗口间共享变量的需求,则可以通过`setappdata/getappdata`命令存储公共属性至根级别(即句柄为零的对象),从而允许不同UI控件之间访问相同的资源而无需直接传递参数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值