使用lsqlin函数求解约束线性最小二乘问题时报错
技术分享
发布于 2025-10-16 19:56:14
查看 2过去229天
问题现象
使用lsqlin函数求解约束线性最小二乘问题时报错:
MethodError: no method matching zero(::Type{Any})

解决方法
将第三十行代码修改为:
Matrixc_part1=[float.(Data_t_part1_power7) float.(Data_t_part1_power6) float.(Data_t_part1_power5) float.(Data_t_part1_power4) float.(Data_t_part1_power3) float.(Data_t_part1_power2) float.(Data_t_part1_power1) ones(size(Data_t_part1,1),1)]
原因如下:
通过Error提示,zero(::Type{Any})和float(A::Matrix{Any}),还有Stacktrace[3]中的定位383可追溯错误到376行中H=C'*C,这里的C对应的就是输入Matrixc_part1,而从工作区中的值类型可以看出Matrixc_part1的类型为Matrix{Real},也就是C::Matrix{Real},而H=C'*C,那么H::Matrix{Any}, 所以在运行383行H = _a_matrix(float(H))时就出现了zero(::Type{Any})的错误了,所以解决问题的方法就是让输入Matrixc_part1的类型明确下来。
所属专栏:Syslab基础平台
产品信息:Syslab科学计算环境