【问题标题】:Why is this error happening: Index exceeds matrix dimensions为什么会发生此错误:索引超出矩阵维度
【发布时间】:2014-04-03 04:53:25
【问题描述】:

我在 MATLAB 中运行一个 GUI 系统,我是使用 GUI 的初学者。

代码很长,所以我将只输入我拥有的东西和位置,看看是否有足够的信息来提供帮助,谢谢。

在我的第一个 GUI 中,我在打开函数中有这个:

HW12_result_bhanford(handles.scan_age, handles.check_athlete, handles.radio_male, handles.radio_female)

这应该将这四个变量转移到我的第三个名为 HW12_result_bhanford

在我的第二个 GUI 中,我在打开函数中写了这个:

age = varargin{1}
athlete = varargin{2}
male = varargin{3}
female = varargin{4}

我稍后在第二个 GUI 中使用这四个变量(年龄、运动员、男性、女性),然后我 假设它们是从第一个传递的相应变量的等效值 图形用户界面。 当我运行所有内容时,返回的错误是索引超出矩阵维度。

如果有人可以帮助我,那就太好了。如果没有我理解的整个代码,您将无法提供帮助。

【问题讨论】:

  • Index exceeds matrix dimensions 表示您在某些时候试图访问不存在的数据。错误消息应该告诉您代码中发生这种情况的位置,然后您可以自己去检查发生了什么。 mathworks.co.uk/help/matlab/debugging-code.html
  • 它说问题出在 age = varargin{1} 上,所以我不确定问题出在 varargin{1}、age 还是与以前 GUI 中的 age 对应的变量上。我猜如果没有其余代码,您将无法知道。
  • 调试时,将varargin 打印到命令窗口以查看实际作为输入传递给 GUI 的内容。

标签: matlab user-interface


【解决方案1】:

如果您的参数列表是可变的,您可以使用varargin,并且 varargin 必须在您的函数定义中。

function HW12_result_bhanford(varargin)

在这种情况下,函数接收一个元胞数组作为输入,因此您可以使用 varargin{1} 等获取单个参数。

如果你把你的参数作为一个结构放在一起,你可以把这个结构作为一个参数传递。

function HW12_result_bhanford(handles)

但如果函数定义有单独的参数,例如,

function HW12_result_bhanford(age, athlete, male, female)

您不能使用varargin,只需按原样处理参数即可。

详细了解如何使用VARARGIN

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-05
    • 1970-01-01
    相关资源
    最近更新 更多