0

我看到这个网站上有很多关于 Return[] 函数的线程。甚至对它的行为也有很好的描述。但是,如果我真的是 Mathematica 的新手,会发生什么?

事不宜迟,我想使用这个功能:

getBinIndex[eta_, pt_, etalimits_, ptlimits_] := 
     List[
       For[i = 1, i < Length[etalimits],     i++,
           If[eta < etalimits[[i + 1]], Return[i]]], 
       For[i = 1, i < Length[ptlimits], i++,
           If[pt < ptlimits[[i + 1]], Return[i]]]
         ];

如你所见,我真的很新。我想在 Mathematica 中有 100 万种方法可以做到这一点,但我有 C 背景,我觉得有必要告诉计算机一切。该功能有效。它返回一个包含 2 个变量的列表,经过大量测试,这些变量都可以。但它将结果作为两个 Return 的参数:{Return[4],Return[5]},例如,我不能将其用作...表的索引。你需要做什么才能让这些 Return[x] 变成 x?

为了让您了解我是多少新手,我尝试了 N[Return[i]]。

干杯,

阿德里安

4

1 回答 1

0
Catch[For[ ....   If[   Throw[i] ] ]

当然在mathematica中你几乎不需要循环......像

Position[etalimits,ei_/;ei<eta&][[1,1]] 

会做。

编辑..试试这个:

   For[i = 1, i < Length[etalimits],     i++,
         If[eta < etalimits[[i + 1]], Return[i,CompoundExpression]]];, 

注意使 For[] 循环成为 CompoundExpression 的额外分号。我个人觉得这很奇怪,不会使用它..

于 2013-04-16T11:48:39.503 回答