嘿家伙,我想创建一个matlab脚本(m文件),它将由外部VBA脚本控制。控制一个matlab脚本(暂停,重置)
对于一定数量的循环,matlab脚本应该每次都执行相同的操作(即使params更改,但这种情况在这种情况下也不是这样)。此刻我的控制部分看起来像这样http://www.mathworks.de/help/techdoc/matlab_external/f135590.html#f133975
我的主要问题是如何实现这个问题的MATLAB一部分... ...: 如果我看到它,我可以使用MATLAB funktions在VBA这样
start.m:
run = 1;
reset = 0;
while run ~= 0 % Loop until external reset of 'run' to '0'
if reset ~= 0
doReset(); % Reset the parameters for the processing
reset = 0;
disp('I did a reset');
end
disp('I am processing');
doProcess();
pause(1)
end
disp('I am done');
同时通过脚本改变值,但是当我尝试手动“运行”或“重置”的值更改为任何其他值复位部分工作得非常细在我的工作空间里,什么也没有发生......我的脚本不会中止,重新也不会中止设置 - 如果它的工作... 在我看来,这个脚本不能识别工作区中的任何变化?!
后面的变量'run'和'reset'应该由VBA脚本设置或取消设置。 有什么合理的理由可以说明我为什么不能手工中止循环?
感谢您的任何建议!
映入眼帘,poeschlorn
编辑:
看来,脚本运行时开始之前加载变量一次,永远不会再...是否有可能有一个工作区变量明确的访问?
编辑2:
我用Matlab的2010年b,没有额外的工具箱目前
编辑3:
我发现,有几个 '工作区' 或RAM的在Matlab中。如果我的函数正在运行,变量将存储在'base'(?)工作区中,而不是您可以单击并更改每个值的matlab工作区。所以我必须进入这个不祥的“基地”空间,并将标志“运行”改为零。有任何想法吗?
r.e.编辑3:没有什么不祥之处,函数有自己的变量堆栈,而工作空间另一个(你不希望用户函数改变你的工作空间变量,反之亦然!)。如果您需要跨工作区和用户函数全局访问变量,请在工作区和您使用的任何函数中使用** global **关键字,即'global run'' http://www.mathworks.com/ help/techdoc/matlab_prog/f0-38052.html#f0-38470 - 这是假设你的循环没有阻塞外部接口... – 2011-03-11 11:02:54
@编辑3:有这样的功能:['assigning'](http: //www.mathworks.com/help/techdoc/ref/assignin.html),这是非常不推荐的。 – Juhl 2011-03-12 18:45:22
@Juhl:为什么这个函数非常不推荐?我没有看到任何反对O.o – poeschlorn 2011-03-16 11:57:32