fishc-闫 发表于 2023-9-21 14:53:51

for 循环 out of range


import numpy as np
import matplotlib.pyplot as plt

ts_length = 100
e_values = []
for i in range(ts_length):
    e = np.random.randn()
    e_values.append(e)



T=100
a=0.8
b=1.5
x0=2
x = []
x.append(x0)
for i in range(T): #for i in range(1,T):
    x=a*x+e_values+b*e_values
    x.append(x)
   
plt.plot(x,'k--')




老师让写的一个循环计算,我想在第二部分里i是0-99,那i-1不就是取的-1 的值吗,所以想改成#号代码,从1开始,但是这样之后,就会显示out of range ,如果把i,i-1改成i+1,i,不改range 也是这个报错

isdkz 发表于 2023-9-21 14:53:52

你的代码中出现了数组下标越界的问题。当你把第二个for循环的i从0开始改成从1开始时,x数组中的第一个元素就没有被初始化,因此在第一次循环中就会出现越界错误。你可以将x数组的初始化改成一个长度为T的0数组,然后从第二个元素开始填充即可。修改后的代码如下:

import numpy as np
import matplotlib.pyplot as plt

ts_length = 100
e_values = []
for i in range(ts_length):
    e = np.random.randn()
    e_values.append(e)

T=100
a=0.8
b=1.5
x0=2
x = * T# 初始化x数组为长度为T的0数组
x = x0
for i in range(1, T):# 修改循环从1开始
    x[ i] = a * x + e_values[ i] + b * e_values
   
plt.plot(x,'k--')
页: [1]
查看完整版本: for 循环 out of range