在MATLAB以下for
循环:for循环不迭代
for i = [1:100]'
%'// Do something, such as disp(i)
end
显然不是真的被迭代执行,而i
成为矩阵[1 2 3 ... 100]和“循环“仅在该矩阵i
上执行一次。您可以通过打印i
的值或其他跟踪信息来验证。循环中只有一次通过。
是否有可能迫使MATLAB做真正的循环?我问的原因是上面的方法在很多情况下都很好,但是当你有需要运行的嵌套循环时更加痛苦。
例:
下面的代码不会做,如果你以为你是在一个循环得到实际的迭代你所期望的:
for i = outlier
data(i) = median(data(i-100:i+100))
end
人们期望在每个离群指数,这将取代数据(i)与从i-100到i + 100的数据的中位数,但它不是。事实上,中位数会返回您所关注的所有范围的集合中计算出的单个值,并且每个数据(i)点将被替换为该单个值。
你能后输出再现您所看到的。我还没有看到这种行为,并且我在Matlab中已经注意到了很多循环。 – Iterator
你不是指'中位数(数据(i-100:i + 100))'吗? (带':') –
@Clement J.是的。现在更正。 –