haltonset:理解跳跃和跳跃

时间:2011-10-02 16:20:29

标签: matlab random

如果我阅读了如何构建Halton quasi-random point set的文档,并且它提到可以“跳过”第一个值然后保留“跳跃”值。

不明白“跳过”和“跳跃”究竟是什么意思。

尝试了以下内容:

>> p = haltonset(1,'Skip',50,'Leap',10); d = haltonset(1,'Skip',51,'Leap',9);
>> p(2:10), d(1:9)
ans =
0.7344
0.0703
0.7891
0.4766
0.5859
0.1797
0.9922
0.3164
0.6602

ans =
0.7969
0.7344
0.8828
0.5391
0.8516
0.6484
0.9609
0.6172
0.7539

>> p(2:10) == d(1:9)
ans =

 0
 0
 0
 0
 0
 0
 0
 0
 0

认为这可能会将10个值保存到p,将9个值保存到d。还认为d将具有与p相同的值。但事实并非如此。

然后我测试了'leap'是否与制作矢量的常规方法相同    - 例如:(1:飞跃:10)

>> p = haltonset(1,'Skip',50,'Leap',1); d = haltonset(1,'Skip',50,'Leap',2);
>> p(1:2:10)==d(1:5)
ans =
 1
 0
 0
 0
 0

>> p = haltonset(1,'Skip',0,'Leap',1); d = haltonset(1,'Skip',0,'Leap',2);
>> p(1:2:10)==d(1:5)
ans =
 1
 0
 0
 0
 0

但似乎并非如此......

任何人都可以简单地解释如何解释“跳过”和“跳跃”变量。

1 个答案:

答案 0 :(得分:1)

我发现以下描述非常清楚[引用此documentation page]:

  

想象一个简单的1-D序列,它产生1到10的整数。   这是基本序列,前三个点是[1,2,3]:

     

sequence

     

现在看看Scramble,Leap和Skip如何协同工作:

     
      
  • 争抢:在几个中的一个中,加扰会改变点数   不同的方法。在此示例中,假设加扰变为序列   分为1,3,5,7,9,2,4,6,8,10。前三点现在是[1,3,5]:
  •   
     

Scramble

     
      
  • 跳过:跳过值指定初始点数   忽视。在此示例中,将Skip值设置为2.现在是序列   5,7,9,2,4,6,8,10和前三个点是[5,7,9]:
  •   
     

Skip

     
      
  • Leap :Leap值指定要忽略的点数   你带的每一个。继续将Skip设置为2的示例,如果   将Leap设置为1,序列使用每个其他点。在这   例如,序列现在是5,9,4,8​​,前三个是   [5,9,4]:
  •   
     

Leap

编辑:

让我举一个例子:

%# create 1D sequences (x: picked, .: ignored)
p00 = haltonset(1,'Skip',0,'Leap',0);   %# xxxxxxxxxxxxxxx
p50 = haltonset(1,'Skip',5,'Leap',0);   %# .....xxxxxxxxxx
p02 = haltonset(1,'Skip',0,'Leap',2);   %# x..x..x..x..x..
p52 = haltonset(1,'Skip',5,'Leap',2);   %# .....x..x..x..x

%# each pair of these are equal
[p50(1:10) p00(6:15)]     %# skip vs. noskip
[p02(1:5) p00(1:3:13)]    %# leap vs. noleap
[p52(1:4) p00(6:3:15)]    %# skip+leap vs. noskip+noleap

一般来说:

skip = 50;
leap = 10;
p00 = haltonset(1,'Skip',0,'Leap',0);
p = haltonset(1,'Skip',skip,'Leap',leap);

num = 9;
[p(1:num) p00(skip+1:leap+1:num*leap+num-leap+skip)]