2

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

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

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.
4

2 回答 2

5

如果这些值确实总是相同的,您可以尝试以下操作来获取可以在 switch 命令中使用的标量:

unique([dataFile.RECORDINGS.eye])

顺便说一句,您是否尝试过为 RECORDINGS 编制索引,即

dataFile.RECORDINGS(1).eye   
dataFile.RECORDINGS(2).eye
于 2012-05-24T14:03:32.457 回答
3

也许不是eye有多个元素,而是有多个元素RECORDINGS,每个元素都有一个eye? 您可能想要dataFile.RECORDINGS(1).eyedataFile.RECORDINGS(2).eye.

于 2012-05-24T14:06:47.097 回答