声明全局变量的字符串名称

7视图(30天)
安迪
安迪 2020年4月1日
在一个函数:
函数DoSomeWork (globalVarName、var2 var3等)
全球globalvarName ? ? ?
/ /所以的东西globalVarName这样变化得到反映外部函数。
/ /然而,globalVarName被指定为一个字符串传递给函数
结束
主要matlab文件:
全球gVar1 gVar2
DoSomeWork (“gVar1”,)
DoSomeWork (“gVar2”,)
有办法实现吗?
更多的背景:
在别处,在. net应用程序中,ZeroMQ出版商布先信息分为两TCP端口:
publisherA = new ZSocket (ZSocketType.PUB);
publisherA.Bind (“tcp: / / 127.0.0.1:“+ TcpPortA);/ / tcp = 5550
publisherB = new ZSocket (ZSocketType.PUB);
publisherB.Bind (“tcp: / / 127.0.0.1:“+ TcpPortB);/ / tcp = 5501
字符串data =“abc”
如果{publisherA (publisherA ! = null)。发送(新ZFrame(数据));}
如果{publisherB (publisherB ! = null)。发送(新ZFrame(数据));}
数百每秒洪水两个TCP出版商的消息……
Matlab另一方面,应该听和处理这些消息。
在Matlab中,需要包括JeroMQ:
javaaddpath (“C: \ <用户名> \ \用户文档\ JeroMQ \ jeromq-0.5.1.jar”,')
进口org.zeromq。*
全球objectX
queA = parallel.pool.DataQueue ();
丽莎= afterEach (queA @getAToken);
queB = parallel.pool.DataQueue ();
lisB = afterEach (queB @getBToken);
fObjA = parfeval (@GetAMessageLoop 0 queA,“出版商名称”,“5550”);
fObjB = parfeval (@GetBMessageLoop 0 queB,“出版商B的名字”,“5551”);
% objectX被修改在上面的消息循环功能……
%其他“只读”处理可能发生在全球空间objectX……孤立的从上面的更新线程
现在,一个可以做一些处理基于objectX上面内容……在主线程。
一旦完成,一个可以关闭队列:
取消(fObjA);
取消(fObjB);
删除(fObjA);
删除(fObjB);
删除(lisA);
删除(lisB);
目标是——一些全局对象将被更新在JeroMQ和接收到的消息被其他功能……
一种方法我认为的并行化这是……通过全局对象作为一个字符串名称到一个函数。这个对象就变成了一个消息队列的接受者。和另一个对象就变成了另一个消息队列的接受者。这允许有多个全局对象持久化在全球空间,由JeroMQ监听线程更新……并行执行。
4评论

登录置评。

答案(1)

沃尔特·罗伯森
沃尔特·罗伯森 2020年4月1日
是的,有。但是,您不应该这样做。
例如如果用户通过这个名字是一样的一个参数的函数,然后在函数当你去读或写的用户提供的变量名,你得到全局变量或参数?
4评论
安迪
安迪 2020年4月1日
更多的更新。

登录置评。

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!