有人知道我怎么能在我的mac上运行我的tcl脚本中的matlab .m文件。我想做一些事情:
我的.tcl脚本中某些变量的定义:
# run_matlab.tcl:
set a 1;
set b 2;
set c 3;
打开matlab test.m并使用预定义变量(在tcl中预定义)执行一些计算,例如:
% test.m
D = [a b c];
E = [c b a]';
F = D*E
在tcl中设置基于F的新变量(在matlab中计算)并用F执行更多的计算,例如:
# run_matlab.tcl:
set m $F;
set n [expr 3*$m];
puts $n
我是一个绝对的新手,并不知道如何处理这个问题。任何人都可以帮助我吗?
我已经做了一些事情,但我并不是百分之百满意。我的解决方案如下所示:
# test.tcl
# parameter definition
set a 7;
set b 5;
# calculation of 'e' in matlab
exec /Applications/MATLAB_R2012a.app/bin/matlab -nosplash -nodesktop -r test_matlab($a,$b);
# input calculated variables
# c = a+b = 2
# d = a-b = 12
source output.tcl
# do further calculations
set e [expr $c+$d];
puts $e
Matlab .m文件看起来像这样:
function test_matlab(a,b)
% calculate a and b
c = a+b;
d = a-b;
% output
fprintf(fopen(['output.tcl'],'a+'),'set c %f;\n',c);
fprintf(fopen(['output.tcl'],'a+'),'set d %f;\n',d);
% quit matlab
quit
end
所以有人可以看到,我要用'source output.tcl'加载我的计算数据。
但是:有没有办法让我的变量直接进入tcl变量?关于列表的最新消息?如果我在matlab中计算了一个向量,我该如何直接将这个向量保存到列表中?
答案 0 :(得分:0)
我对TCL没有经验。但我相信你可以通过参数来调用命令。基本上你有两个选择:
答案 1 :(得分:0)
你可以让matlab简单地打印两个值(在单独的行上或在一行上以空格分隔)。然后,在Tcl:
set output [exec matlab ...]
lassign [split $output] c d
# do stuff with $c and $d