我收到警告:X在机器精度范围内排名不足.有意思的是,即使输入都是真实的,我得到的系数也是复数.为什么会这样?知道怎么摆脱这个吗?
我想你的输入向量有太多线性依赖列.做一个rank(input)
,看看输出说了什么.如果它小于8,则需要删除input
矩阵中的一些自变量.此外,您可能希望包含有关如何到达input
矩阵的更多信息,例如:
input = [ fuel engine_speed fuel.*engine_speed ]; % or even
input = [ x1 x2 x1.*x2 ];
Run Code Online (Sandbox Code Playgroud)
如果您有低秩矩阵,请尝试查找从属列.这是一个快速的方式,我建议(我相信有人知道更好):
[R,jb] = rref(input);
full_rank_input = input(:,jb);
rank(input)
Run Code Online (Sandbox Code Playgroud)
应该给你一个矩阵rank(full_rank_input) == num_columns
.