【发布时间】:2016-02-07 04:52:09
【问题描述】:
问题:根据smth 的布尔值,数组a 必须向前或向后迭代。由于递归,必须事先处理第一个(或最后一个)元素。
在 Python 中,我可以通过稍微调整索引 (*) 来影响数组的迭代方向:
a=range(2,11,2)
sign=1
os=0
if smth:
sign=-1
os=1
print(a[sign*os]) #*
for k in range(5):
print(a[sign*(k+os)]) #*
现在,由于 MATLAB 中没有负索引,我找不到将指令加倍(简化为上面的“打印”)和调整索引的方法:
a=2:2:10
if smth
a(1)
for i=2:5
a(i)
end
else
a(end)
for i=4:-1:1
a(i)
end
end
有没有办法解决这个问题,最终类似于上面的 Python 代码?实际的指令会更长,包括多维索引的组合。
此外,在这种情况下,在评估 smth 之后翻转数组是不可能的。
【问题讨论】:
标签: python arrays matlab indexing