【问题标题】:Cell contents assignment to a non-cell array object将单元格内容分配给非单元格数组对象
【发布时间】:2013-02-22 07:18:14
【问题描述】:
for ch=1:63
    for h=1:5
        for a=1:6
            for b=1:6
                m{a,b}{h,ch}=zeros(4,4);
            end
        end
    end
end


for a=1:6
    for b=1:6
        if b==a
            for h=1:5
                for ch=1:63
                    for c=1:4
                        for d=1:4
                            m{a,b}{h,ch}{c,d}=1;
                        end
                    end
                end
            end
        end
    end
end

错误出现在第 17 行(m{a,b}{h,ch}{c,d}=1;),表明单元格内容分配给了非单元格数组对象。有解决此类错误的解决方案吗?

【问题讨论】:

  • 在第 17 行和第 18 行,用普通括号替换最后一个大括号:` m{a,b}{h,ch}(c,d)=1;` 和 p{a,b}{h,ch}(c,d)=1;
  • @H.Muster 我们对p 了解多少?你确定它也是一个 4x4 数组而不是元胞数组吗?
  • @Shai 是的,你是对的,我只是在没有考虑的情况下替换了那里的括号。但尽管如此,我敢打赌p 看起来就像m
  • 抱歉输入错误,感谢您的帮助!!
  • @TonyYEe - 请考虑使用dealcell 命令来构造m。此外,当您为a==b 设置m{}{}() = 1 时,为什么要同时遍历ab?使用for 循环:for a=1:6, b = a; for h=1:5 ... 等不是更简单吗???

标签: matlab if-statement for-loop cell


【解决方案1】:

这是一个可怕的代码。

至于错误,m{a,b}{h,ch} 引用的变量在第 5 行被分配给了一个 4x4 数组,而不是一个元胞数组。因此,您应该将第 17 行更改为

m{a,b}{h,ch}(c,d)=1;

注意正则括号(访问数组时)和花括号(访问元胞数组时)之间的区别。

【讨论】:

    猜你喜欢
    • 2016-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-30
    • 2018-08-05
    • 2021-01-22
    相关资源
    最近更新 更多