如何计算当前指数?

时间:2010-05-12 10:14:46

标签: algorithm matlab

我编写了一种迭代解决问题的算法。第一次迭代由6个步骤组成,所有后续迭代由5个步骤组成(跳过第一步)。

我想要计算的是当前全局步骤迭代中的当前(本地)步骤。

例如,如果总共有41个步骤,则意味着有8个迭代: 从1到6的索引属于第一次迭代 从7到11的索引属于第二次迭代 ...

为计算当前迭代,我编写了以下代码:

if(currentStep <= 6)
        iteration = 1;
    else
        iteration = floor((currentStep - 7)/5) + 2;
    end

问题仍然在于计算本地步骤。 在第一次迭代中,执行的步骤是:1,2,3,4,5,6 在所有以下迭代中,执行步骤是2,3,4,5,6

所以必须做的是转换全局步骤数组

[1 2 3 4 5 6 7 8 9 10 11 12 13 ... 41] 

进入本地步骤数组

[1 2 3 4 5 6 2 3 4 5 6 2 3 ... 6]

如果有人能帮助找到特定问题的解决方案,我将不胜感激。

谢谢!

3 个答案:

答案 0 :(得分:3)

local_step = [1 mod([0:39],5)+2]

答案 1 :(得分:2)

以下是python中的解决方案:

L = range(1,42) # so L = [1,2,...,41]
s = [(i-2)%5+2 for i in L]
# adjust for the first step:
s[0]=1
# now s = [1,2,3,4,5,6,2,3,4,...,5,6]

答案 2 :(得分:0)

检查一下:

if(currentStep <= 6)  
{localStep = currentStep;}  
else  
{localStep = currentStep - ((iteration - 1) * 5);}