一半君的总结纸

听话只听一半君

#10 如何在运行时才决定要定义的matrix的size?

MEL 不支持用变量来指定matrix的size. 所以下面这样写是不行的:

int $a = 4;
int $b = 4;
matrix $m[$a][$b];
// Error: Line 1.12: Syntax error //

无奈的解决方法是, 生成一个定义matrix的字符串,然后用 ‘eval’ command 来执行他:

int $a = 4;
int $b = 4;
string $declare = ( "matrix $m[" + $a + "][" + $b + "];" );
eval $declare;
print $m;
<< 0, 0, 0, 0;
   0, 0, 0, 0;
   0, 0, 0, 0;
   0, 0, 0, 0 >>

Note: 我收到不少 e-mails 说这个方法不行,我试了下, 发现这个例子在Script Editor里执行的时候是可以的, 但是如果在script文件里的 procedure里就不行了:

// Error: "$m" is an undeclared variable.

我还不知道怎么解决这个问题. 抱歉了.

目前我找到的最好的办法是,把matrix定义成你可能需要的最大尺寸,用的时候只使用需要的 sub-matrix . 在script里自己检查需要的size是不是超过了定义时候的size.

Friday, September 29, 2000

Advertisements

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s

%d 博主赞过: