我想将这个等式从Matlab转换为TCL,任何人都可以帮忙。
t = 2*pi*rand(n,1);
r = R*sqrt(rand(n,1));
x = x0 + r.*cos(t);
y = y0 + r.*sin(t);
答案 0 :(得分:1)
虽然有很多相似之处,但MATLAB与Tcl有一个关键区别:它与单个值有关,它可以用于向量,矩阵和张量。这使得翻译代码变得更加复杂。 (除此之外,=
映射到set
,表达式使用expr
计算。)
# Example initial parameters
set n 123
set R 321
set x0 456
set y0 654
# The translation of your code
set x {}
set y {}
set pi 3.1415927
for {set i 0} {$i < $n} {incr i} {
set t [expr {2 * $pi * rand()}]
set r [expr {$R * rand()}]
lappend x [expr {$x0 + $r * cos($t)}]
lappend y [expr {$y0 + $r * sin($t)}]
}
请注意,通过使用VecTcl等扩展程序包,可以使用比此更短的表单。