用于循环不规则增量限制

时间:2013-12-06 13:43:47

标签: matlab for-loop data-structures

我有一个矢量'A'并且基于这个矢量'for loop'和'filter'看起来像是常量增量

 A= [1:1:500]'; % random         
for i= min(A):10:max(A);
    filter = A>=i  & A<=i+10 ; % upper limit here is according to constant increment
end

现在,如果我需要以不规则的增量来改变'i',那么'过滤器'将如何根据'???'进行调整,如'???'所示。

for i= [(min(A):10:100),(100:20:200),(200:40:max(A))];
    filter = A>=i  & A<=i+??? ; % i do not know how to set upper limit here according to increment
end

它基于迭代获得'过滤器'。因为'过滤'被定义为

 filter = A>=i & A<=i+iterations 

因此,在非常规迭代的情况下,我该如何进行? 它可以进一步解释,如果我们扩展'i',它将如下所示

i= [(min(A):10:100),(100:20:200),(200:40:max(A))]

i =

  Columns 1 through 19

 1    11    21    31    41    51    61    71    81    91   100   120   140   160   180   200   200   240   280

  Columns 20 through 24

 320   360   400   440   480

现在'过滤器'应该是1到11,11到21,.....,100到120,120到140,...... 440到480.

2 个答案:

答案 0 :(得分:1)

如何使用简单的循环索引,然后简单地索引到过滤器限制数组的元素?

E.g。像这样:

helper = [(min(A):10:100),(100:20:200),(200:40:max(A))]
for i=1:numel(helper)-1;
    filter = A>=helper(i) & A<=helper(i+1)  ; % i do not know how to set upper limit here according to increment
end

顺便说一句,你可能想要详细说明这个的更大背景。 这似乎是相似的,例如直方图。这种基于循环的手动方法可以通过更快/更容易阅读的方式进行替换。

答案 1 :(得分:0)

你可以做那样的事情。但我确信有更好的方法。

DefautIter = 10;
OldI = -9;

for i= [(min(A):10:100),(100:20:200),(200:40:max(A))];
    iteration  = i - OldI;
    OldI = i;
    filter = A>=i  & A<=i+iteration  ; 
end