我有< 850x1>细胞称为x。每个单独的结构都有一个标签'姓名和'数据' < 7168x1 double>的细胞数据值。
(即 x {1,1} .Tag =' Channel1',x {1,1} .Data =< 7168x1 double>)
所以,我想通过x单元格,用' Channel1'来识别结构。标记名称并提取该结构的数据。然后,将数据组合到名为Ch1的单元格中。到目前为止,这是我的方法:
n=1:850
if x{n,1}.Tag == 'Channel1'
Ch1{:,n} = x{n,1}.Data;
end
但是,这会产生错误:错误的单元格引用操作。
任何想法可能出错?
答案 0 :(得分: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