如何在Matlab中获取定时器回调函数的输出
Matlab定时器回调获取函数输出的方法
Matlab的定时器回调默认不会直接返回函数输出,你可以通过以下几种常用方式获取func的输出:
1. 使用全局变量
- 先声明全局变量用于存储输出结果:
global OUT1 OUT2; - 修改定时器回调,将
func的输出赋值给全局变量:t = timer; t.TimerFcn = @(~,~) [OUT1, OUT2] = func(in1,in2); - 后续需要使用结果时,直接调用全局变量
OUT1和OUT2即可。
2. 利用定时器的UserData属性
- 定时器对象自带
UserData属性,可以用来存储任意数据,修改回调逻辑如下:t = timer; t.TimerFcn = @(~, evt) begin [out1, out2] = func(in1,in2); evt.Source.UserData = {out1, out2}; end; - 定时器触发后,通过以下方式提取结果:
[result1, result2] = deal(t.UserData{:});
3. 使用嵌套函数(适合在主函数内调用)
- 如果你的定时器是在某个主函数中定义的,可以通过嵌套函数共享变量,无需全局变量:
function main() % 初始化存储结果的变量 res1 = []; res2 = []; t = timer; t.TimerFcn = @timerCallback; % 启动定时器(示例) start(t); % 嵌套回调函数 function timerCallback(~,~) [res1, res2] = func(in1,in2); end end - 主函数内的
res1和res2会被回调函数更新,直接使用即可。
内容的提问来源于stack exchange,提问作者Argyll
相关产品推荐
相关产品推荐

