error = sensor_data['middle'] * 1 + sensor_data['middle_left'] * 0.5 - sensor_data['middle_right'] * 0.5 - \ TypeError: unsupported operand type(s) for *: 'NoneType' and 'int'
时间: 2024-04-17 22:28:44 浏览: 14
这个错误是由于在进行乘法运算时,其中一个操作数的类型是'NoneType',另一个操作数的类型是'int'。 'NoneType' 表示变量没有被赋值,它不能参与乘法运算。
要解决这个错误,你需要确保 `sensor_data` 中的键对应的值都有正确的赋值。请检查 `sensor_data` 字典中键 `'middle'`、`'middle_left'` 和 `'middle_right'` 对应的值是否都不是 `None`。如果其中一个键对应的值是 `None`,你需要找到原因并修复它。
相关问题
void PID_Parameter_Init(PID *sptr) { sptr->SumError = 0; sptr->LastError = 0; sptr->PrevError = 0; sptr->LastData = 0; } int PID_Realize(PID *sptr, float *PID, int NowData, int Point) { int Realize; sptr->Dis_Err = Point - NowData; sptr->SumError += PID[KI] * sptr->Dis_Err; if (sptr->SumError >= PID[KT]) { sptr->SumError = PID[KT]; } else if (sptr->SumError <= -PID[KT]) { sptr->SumError = -PID[KT]; } Realize = PID[KP] * sptr->Dis_Err + sptr->SumError + PID[KD] *(sptr->Dis_Err - sptr->LastError); // + PID[KB] * ( NowData- sptr->LastData); sptr->PrevError = sptr->LastError; sptr->LastError = sptr->Dis_Err; sptr->LastData = NowData; return Realize; } int PID_Increase(PID *sptr, float *PID, int NowData, int Point) { int iError, Increase; iError = Point - NowData; Increase = PID[KP] * (iError - sptr->LastError) + PID[KI] * iError + PID[KD] * (iError - 2 * sptr->LastError + sptr->PrevError); sptr->PrevError = sptr->LastError; sptr->LastError = iError; sptr->LastData = NowData; return Increase; } Left_Acc = templ_pluse - Left_Old; Right_Acc = tempr_pluse - Right_Old; if (Left_Acc > 50) { Left_Old = Left_Old + 50; templ_pluse = Left_Old; } else if (Left_Acc < -50) { Left_Old = Left_Old - 50; templ_pluse = Left_Old; } else { templ_pluse = Left_Old; } if (Right_Acc > 50) { Right_Old = Right_Old + 50; tempr_pluse = Right_Old; } else if (Right_Acc < -50) { Right_Old = Right_Old - 50; tempr_pluse = Right_Old; } else { tempr_pluse = Right_Old; } RealSpeed_Old = ZJZ; ZJZ = (templ_pluse + tempr_pluse) * 0.5;
根据你提供的代码,出现错误的原因可能是 `templ_pluse` 和 `tempr_pluse` 变量未被声明或未初始化。请确保在使用这两个变量之前,它们已经被正确地声明和初始化。
此外,在这段代码中的 `PID_Realize` 和 `PID_Increase` 函数中使用了 `PID` 数组,但是并未看到这个数组的定义。请确保 `PID` 数组已经在代码的其他地方正确地定义和初始化。
如果你仍然遇到错误,请提供更多的错误提示信息以便进一步分析。
mean_squared_error=(ytest,ypred)**0.5报错
`mean_squared_error` 是一个用于计算均方误差的函数,它的计算公式为:`mean_squared_error = (1/n)*sum((ytest - ypred)**2)`,其中 `ytest` 是测试集的目标变量,`ypred` 是模型的预测值。因此,如果你想计算均方误差的平方根,可以使用 `sqrt` 函数,即 `sqrt(mean_squared_error(ytest, ypred))`。请注意,你需要先导入 `mean_squared_error` 函数和 `sqrt` 函数,如下所示:
```python
from sklearn.metrics import mean_squared_error
from math import sqrt
mse = mean_squared_error(ytest, ypred)
rmse = sqrt(mse)
print("RMSE:", rmse)
```
如果你还是遇到了报错,请提供报错信息,我可以帮你更好地解决问题。