if语句时matlab坏单元引用操作

时间:2014-05-04 17:50:44

标签: matlab if-statement cell logical-operators

我有< 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

但是,这会产生错误:错误的单元格引用操作。

任何想法可能出错?

1 个答案:

答案 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