2012-05-24 109 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