自学内容网 自学内容网

Matlab 命令行窗口默认输出(异常)

前言

在单独调试 Matlab 写的函数时出现不想出现的异常打印值,逐个注释排查才找到是 if elseif else 代码块的问题,会默认打印输出 else 部分第一个返回值的值(下方代码中的 P值)。

再调用该函数时不会有上述问题,只有在函数单独运行时才会出现。respect!!!

Matlab 先验知识

MATLAB 命令行会输出数值的原因通常是由于某些操作没有被以分号 ; 结尾,从而导致默认输出。根据你提供的代码片段,可以确认以下几点:

  1. 每个变量的赋值语句都没有分号(;),这会导致 MATLAB 将这些赋值操作的结果打印到命令行。
  2. 其他可能的显式输出操作(例如 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;      
else
    Xp=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 == 3
    Xp=P;  
    v=V;    
    ErrorX=ErrorXL;  %输出值误差
end

代码正常执行,没有多余值打印

在这里插入图片描述


原文地址:https://blog.csdn.net/weixin_42899627/article/details/140672262

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!