def data_std(vector_raw): # 输入list类型
# 初始数据处理,把vector_raw
x_raw = np.linspace(1, 1000, len(vector_raw))
x_new = np.linspace(1, 1000, 1000) # 1-10000中定义均匀的1000个点
print(x_raw)
tck = interpolate.splrep(x_raw, vector_raw) # 点对应vector_raw
vector_new = interpolate.splev(x_new, tck) # 插入1000个节点
return vector_new
报错内容
Traceback (most recent call last):
File "D:/task2022(1)/task/task1.py", line 149, in
tmp = data_std(list(np.loadtxt(f)))
File "D:/task2022(1)/task/task1.py", line 29, in data_std
tck = interpolate.splrep(x_raw, vector_raw) # 点对应vector_raw
File "D:\task2022(1)\task\venv\lib\site-packages\scipy\interpolate\fitpack.py", line 291, in splrep
res = _impl.splrep(x, y, w, xb, xe, k, task, s, t, full_output, per, quiet)
File "D:\task2022(1)\task\venv\lib\site-packages\scipy\interpolate\_fitpack_impl.py", line 440, in splrep
if task <= 0:
UnboundLocalError: local variable 'task' referenced before assignment
第291行内容 res = _impl.splrep(x, y, w, xb, xe, k, task, s, t, full_output, per, quiet)
第440行内容if task <= 0:
两个内容在不同文件
local variable 'task' referenced before assignment 在定义函数时,使用了与全局变量同名的局部变量,出现此错误
因为函数内部定义了一个与外部变量同名的变量,此时函数会把这个变量定义为局部变量,如果没有赋值则不能调用它
把‘task’换成别的变量名就解决了
报错的内容就是说你task变量没有定义赋值,你就在if task <= 0这里使用它。
你的task是啥?你是忘记赋值了?还是名字拼写错了?