我想在不使用MATLAB中的全局变量的情况下从回调中接收数据。这不适用于GUI编程,而是使用rossubscriber
。我尝试过以下方法:
function [mySub] = myFunction(cloudTopic)
testHandle.a = 0;
mySub = rossubscriber(cloudTopic,{@mySub_CB,testHandle}, 'BufferSize', 30);
end
function mySub_CB(src, msg, objHandle)
objHandle.a = objHandle.a + 1
end
因为我在Mathworks文档
上阅读了这篇文章注意:还有其他方法可以从回调中提取信息 使用全局变量的函数。例如,您可以传递句柄 object作为回调函数的附加参数。见 回调定义文档以获取有关定义的更多信息 回调函数。
不幸的是,这不起作用。 testHandle未更新,并且不断显示1。怎么做对了? :)
答案 0 :(得分:1)
问题是因为testHandle
是struct
而不是一个handle
object,与handle
个对象不同,structs
是通过价值不是通过参考。
您最简单的选择可能是mySub_CB
{em} ,然后它可以访问和修改myFunction
工作空间中的变量
myFunction