使用fprintf打印日志;出现“错误使用 fprintf 没有为稀疏输入定义函数。”
报错在fprintf(fileID,'%2.7f ',lamda3);
参考了一下错误使用fprintf,没有为稀疏输入定义函数 是什么意思? – MATLAB中文论坛 (ilovematlab.cn)的解决方案
将lamda3改成lamda3+0之后问题消失
但是秉承着打破砂锅问到底的处世态度,迷迷瞪瞪的我开始debug之旅
首先查看为啥lamda3不行呢,在报错行之前加上中断标志,查看lamda3是个傻子东西
果然是稀疏矩阵,部分位置都没有值,只有矩阵中的个别位置是有值的;
问题就在这吧,当fprintf要遍历整个矩阵时,发现某些位置没有值,就抛出错误了
发现问题就要解决问题:
我找到了给lamda3赋值的位置:lamda3: f - aerfa.* repmat(Fmax,numV,1) <= 0 cvx求解器求解lagrange乘子
改成“lamda3: f - aerfa.* repmat(Fmax,numV,1) <= 0.0001”
稀疏矩阵不再稀疏,问题解决;;;;;
总结问题出现的原因是fprintf函数在读取稀疏矩阵时会出现问题,要么给稀疏矩阵每一个加上一个0值,要么把稀疏矩阵变得不稀疏。