MATLAB:引用结构中的元素

时间:2012-05-24 13:50:28

标签: matlab structure switch-statement

我试图引用一个隐藏在我没有创建的结构中的元素(因此我不知道它的确切构建方式)。

加载结构后,如果我输入:

dataFile.RECORDINGS.eye

我收到以下输出:

ans =

    2


ans =

    2

这两个变量总是相同的,但它们可以在任何时间1,2或3.我想做的是检查一个如下所示的switch语句:

switch dataFile.RECORDINGS.eye
    case {1, 2}
        % action A
    case 3
        % action B
end

当然,上面引发错误是因为'case'无法检查dataFile.RECORDINGS.eye是否包含给定值,因为该地址下存储了两个元素。所以,我的问题是:我如何仅引用其中一个元素?我认为这就像用第一行替换第一行一样简单:

switch dataFile.RECORDINGS.eye(1)

...但是,这给出了错误:

??? Field reference for multiple structure elements that is followed by more reference blocks is an error.

同样,我无法像这样访问元素:

switch dataFile.RECORDINGS.eye.1

...当我收到以下错误时:

??? Dot name reference on non-scalar structure.

2 个答案:

答案 0 :(得分:5)

如果值实际上始终相同,您可以尝试以下方法来获取可在switch命令中使用的标量:

unique([dataFile.RECORDINGS.eye])

顺便说一下,您是否尝试索引RECORDINGS,即

dataFile.RECORDINGS(1).eye   
dataFile.RECORDINGS(2).eye

答案 1 :(得分:3)

或许eye代替RECORDINGS多个元素,您有多个eye元素,每个元素都有dataFile.RECORDINGS(1).eye个值?您可能需要dataFile.RECORDINGS(2).eye或{{1}}。