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
私は絶対的な初心者であり、この問題を処理する方法がわかりません。誰か助けてもらえますか?
最初の解決策
私は何かをしましたが、これに100%満足しているわけではありません。私の解決策は次のようになります。
# 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
したがって、誰かが、計算されたデータを「sourceoutput.tcl」でロードしていることがわかります。
しかし:私の変数を直接tcl変数に入れる方法はありますか?そして、リストはどうですか?matlabでベクトルを計算した場合、このベクトルをリストに直接保存するにはどうすればよいですか?