当我不想要它时,MATLAB正在改变变量

0 matlab

这是我用一小段代码作为例子的问题:

function [] = trial(test)

disp(test)

if(test == 1)
    disp('test is one')
    test = 0;
end
disp(test)
Run Code Online (Sandbox Code Playgroud)

当我执行

> trial(0)
Run Code Online (Sandbox Code Playgroud)

Matlab打印出来:

0
'test is one'
0
Run Code Online (Sandbox Code Playgroud)

这不是我真正的代码,它有超过500行,但这是我的代码的一部分,问题已经上升.我已经使用搜索功能来查看我是否已经在任何地方递增任何变量,并且在我不想要的时候已经花了2个多小时试图查看为什么MATLAB正在改变我的变量.

小智 5

遗憾的是,MATLAB永远不会显示您为所显示的代码片段声明的行为,因为这个特定的片段总是会做正确的事情.你在这里做错了,但我们不知道它是什么,你的代码太长了,我们无论如何都找不到错误.

我敢打赌答案在于以下一个常见问题:

  1. 全局变量的问题.
  2. 命名空间冲突,您将变量命名为与函数同名的变量.
  3. 一个类问题,其中测试比较不同类的变量,可能是uint8和double.
  4. 精度问题,使用浮点数进行精确相等的测试.

为了解决这个问题,我强烈建议使用调试器.跟踪您的代码,观察此变量以查看其变化的时间.