matlab:脚本和命令窗口中的结果不同

时间:2017-10-02 22:42:46

标签: matlab

当我执行我的脚本时,其中一行代码将变量设置为2x2的零数组。如果我设置断点,突出显示该行并在命令窗口中执行它,它会产生一个整数(它应该是)。

另一行将first_peak设置为0,它应该是667.

(我添加演员试图解决问题,因为matlab抱怨变量类型。当然它没有用。)

我似乎无法创建一个没有我的数据文件的MWE,所以附上截图。

  

在脚本:

     

in-script

     

命令窗口:

     

command window

如果一个MWE会产生错误,那么这个应该是,但同样,它不会。 peaks(peak_ndx+1)行将生成上述2x2数组,peaks(peak_ndx)将生成0值。

clear
for ndx = 1 : 6
    peaks = [667 911 1288 1719 2114 2363 3505 3718 4010 4372 4682 4867];
    peak_ndx=(ndx - 1) * 2 + 1;
    peaks(peak_ndx)
    peaks(peak_ndx+1)
end

2 个答案:

答案 0 :(得分:2)

TL; DR

将鼠标悬停在某个变量上时,会显示该变量当前在工作区中的值。

答案在于你写的第一段。正如您所提到的,"当我执行我的脚本时,其中一行代码将变量设置为2x2的零数组。" ,因此将鼠标悬停在{{1}上行second_peak上显示零。请注意,您已在此行上放置断点,此行尚未执行。当您执行该行(从断点取消暂停/继续运行)或在命令窗口中输入该行时,您将获得所需的结果。

如果将second_peak = cast(peaks(peak_ndx+1), 'int32')放在另一行并在该行上放置断点。然后在运行second_peak行并在下一个断点处暂停程序执行后,您将看到second_peak = cast(peaks(peak_ndx+1), 'int32')

以下是您可以重复的示例:

1x1 int32 911

graphics

此外,请确保您没有在此处进行不必要的预分配 在数组预分配中读取" A Common Misunderstanding"在Loren Shure的博客中。

答案 1 :(得分:0)

如果声明的变量与函数同名,则变量可能会在某些上下文(例如命令窗口)中屏蔽该函数,但在其他上下文中则不会屏蔽该函数,例如在脚本中。