2014-05-04 30 views
0

我有一個< 850x1>單元格被稱爲x。每個單獨的結構都有一個'標記'名稱和'數據'單元格,其中包含數據值爲< 7168x1的double>數據值。Matlab錯誤的單元格引用操作,當if語句

(即 X {1,1} .TAG = '通道1',X {1,1}。數據= < 7168x1雙>)

所以,我想通過在X細胞,識別帶有'Channel1'標籤名稱的結構並提取該結構的數據。然後,將數據組合到名爲Ch1的單元中。這是我迄今的做法:

n=1:850 
if x{n,1}.Tag == 'Channel1' 
    Ch1{:,n} = x{n,1}.Data; 
end 

但是,這給出了一個錯誤:錯誤的單元格引用操作。

任何想法可能會出錯?

回答

1

這裏有2個問題。首先,if語句會將字符串x {n,1} .Tag中的每個條目與字符串'Channel1'中的每個條目進行比較。如果尺寸不一樣,會出現錯誤。要解決這個問題,你可以使用字符串比較函數strcmp。另一個問題是你一次將n分配給1和850之間的所有值。這是產生您所看到的實際錯誤的問題。相反,您想用for循環逐個遍歷每個值。我會建議嘗試下面的代碼:

for n=1:850 
    if strcmp(x{n,1}.Tag, 'Channel1') 
     Ch1{:,n} = x{n,1}.Data; 
    end 
end