【问题标题】:Matlab bad cell reference operation when if statementmatlab if语句时坏单元格引用操作
【发布时间】:2014-05-04 17:50:44
【问题描述】:

我有一个名为 x 的 单元格。每个单独的结构都有一个“标签”名称和一个带有 数据值的“数据”单元格。

(即 x{1,1}.Tag = 'Channel1', x{1,1}.Data= )

所以,我想通过 x 单元格,识别具有“Channel1”标签名称的结构并提取该结构的数据。然后,将数据合并到一个名为 Ch1 的单元格中。到目前为止,这是我的方法:

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

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

有什么想法可能会出错吗?

【问题讨论】:

    标签: matlab if-statement cell logical-operators


    【解决方案1】:

    这里有两个问题。首先,您的 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 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-27
      • 2021-12-16
      相关资源
      最近更新 更多