我试图引用一个隐藏在我没有创建的结构中的元素(因此我不知道它的确切构建方式)。
加载结构后,如果我输入:
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 :(得分: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}}。