如果我阅读了如何构建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
但似乎并非如此......
任何人都可以简单地解释如何解释“跳过”和“跳跃”变量。
答案 0 :(得分:1)
我发现以下描述非常清楚[引用此documentation page]:
想象一个简单的1-D序列,它产生1到10的整数。 这是基本序列,前三个点是[1,2,3]:
现在看看Scramble,Leap和Skip如何协同工作:
- 争抢:在几个中的一个中,加扰会改变点数 不同的方法。在此示例中,假设加扰变为序列 分为1,3,5,7,9,2,4,6,8,10。前三点现在是[1,3,5]:
- 跳过:跳过值指定初始点数 忽视。在此示例中,将Skip值设置为2.现在是序列 5,7,9,2,4,6,8,10和前三个点是[5,7,9]:
- Leap :Leap值指定要忽略的点数 你带的每一个。继续将Skip设置为2的示例,如果 将Leap设置为1,序列使用每个其他点。在这 例如,序列现在是5,9,4,8,前三个是 [5,9,4]:
让我举一个例子:
%# 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)]