目录
- 前言
- Matlab 先验知识
- 1 异常输出的代码
- 2 正常输出的代码
前言
在单独调试 Matlab 写的函数时出现不想出现的异常打印值,逐个注释排查才找到是 if elseif else
代码块的问题,会默认打印输出 else 部分第一个返回值的值(下方代码中的 P值)。
再调用该函数时不会有上述问题,只有在函数单独运行时才会出现。respect!!!
Matlab 先验知识
MATLAB 命令行会输出数值的原因通常是由于某些操作没有被以分号 ;
结尾,从而导致默认输出。根据你提供的代码片段,可以确认以下几点:
- 每个变量的赋值语句都没有分号(;),这会导致 MATLAB 将这些赋值操作的结果打印到命令行。
- 其他可能的显式输出操作(例如 disp 或 fprintf)不在提供的代码片段中,但可能在你运行的完整脚本中。
1 异常输出的代码
function [Xp,v,ErrorX,pdop] = PVE(BSN)
P = [1,2,3,4];
V = 0;
ErrorXL = [0,1,2,3];
if nargout == 1 %只输出位置Xp=P;
elseif nargout == 2 %输出速度和位置Xp=P; v=V;
elseXp=P; v=V; ErrorX=ErrorXL; %输出值误差
end
该代码单独运行时,命令行总是会打印 P 的值,当 P 是长串数组时会有一长串的打印,影响结果显示
2 正常输出的代码
把最后的 else 改成 else if + 条件
function [Xp,v,ErrorX,pdop] = PVE(BSN)
P = [1,2,3,4];
V = 0;
ErrorXL = [0,1,2,3];
if nargout == 1 %只输出位置Xp=P;
elseif nargout == 2 %输出速度和位置Xp=P; v=V;
elseif nargout == 3Xp=P; v=V; ErrorX=ErrorXL; %输出值误差
end
代码正常执行,没有多余值打印