函数调用在脚本中,在命令窗口工作

21日视图(30天)
我有一个函数,调用子函数在同一个文件:main.m:
函数main ()
[a, b, c, d, e, f, g, h] = TimeCalculations (x1, x2, x3, x4, x5, x6);
结束
函数[a, b, c, d, e, f, g, h] = TimeCalculations (x1, x2, x3, x4, x5, x6)
%计算为a, b, c, d, e, f, g, h
结束
当我运行main(),程序错误调用TimeCalculations ()。错误输出是:太多的输出参数。然而,当我将一个观察点在这条线,然后将线直接复制到命令窗口,我不接收和错误。有人遇到类似的场景和他们如何修复它?
2的评论
史蒂文的主
史蒂文的主 2018年7月17日
请显示错误消息的全文(红色)的一切,其余的代码在你的主要()函数。
你的主要()函数包含调用 负载 吗?

登录置评。

答案(2)

马特·J
马特·J 2018年7月17日
我唯一的理论——你有另一个版本的TimeCalculations不是子函数。当你复制调用命令窗口,它是被调用的这个版本。从断点,使用调试器控制进入TimeCalculations()你是哪里来的,是什么计算。
2的评论
马特·J
马特·J 2018年7月17日
编辑:马特·J 2018年7月17日
它应该称为子功能TimeCalculations ()。
也许这就是错误在哪里。也许跟踪版本应该是工作。

登录置评。


马太福音
马太福音 2018年7月17日
我很欣赏的反馈。我们找到了问题所在。这是奇怪的。我上面讲的psuedocode, x5实际上是一个变量被称为“信息”。It's a structure that is imported from another file. When calling TimeCalculations(....,info,...) in the script, Matlab must do 的东西 ,我不知道,但是它并不通过数据结构的“信息”。相反,它调用Matlab的内置函数,信息()。然而,当我的代码复制并粘贴到命令窗口,Matlab传递正确的结构。有趣的是,我也不能将信息结构分配给另一个变量,试图通过;这也导致一个错误。最后,我发现唯一的解决方案是执行代码如下:
eval (“NewInfo =信息”);
清晰的信息
(]= TimeCalculations (...., NewInfo,…);
现在它的工作原理。为什么我不得不走这条路,我不明白你的意思。如果有人知道为什么Matlab计算线不同取决于如果是在m文件或命令窗口中,我想知道。
谢谢!
3评论
Stephen23
Stephen23 2018年7月18日
编辑:Stephen23 2018年7月18日
“我们找到了问题所在。这是奇怪的。”
它不奇怪:代码仅仅是设计不良,因为变量神奇地出现在工作区中。解决方法很简单:不要让变量神奇地出现在任何工作区。这个话题已经讨论了很多次:
“最后,我发现唯一的解决方案是执行代码如下”
一个更好的解决方案是避免 eval 和“噗”ing变量到工作区中。

登录置评。

类别

找到更多的在编程工具帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!