2012-05-24 84 views
2

我想引用埋,我没有创建一个结构中的元素引用的元素(因此我不知道它是建立在精确的方式)。MATLAB:在结构

已经加载的结构,如果我输入:

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. 
+0

什么'类(dataFile.RECORDINGS.eye)'告诉你吗? –

+0

???错误使用==> class 必须从类构造函数调用CLASS函数。 然而,类(dataFile.RECORDINGS)报告 '结构' – CaptainProg

回答

5

如果值是真的总是相同的,你可以尝试以下操作来获得可以在交换机命令中使用标量:

unique([dataFile.RECORDINGS.eye]) 

顺便问一下,你有没有试着指数录音,即

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

感谢。是的,问题在于RECORDINGS的索引,尽管'unique'功能对于知道以及:)也很有用。 – CaptainProg

3

也许来代替eye有多个元素,你有RECORDINGS每个有eye单个值的多个元素?您可能需要dataFile.RECORDINGS(1).eyedataFile.RECORDINGS(2).eye