花括号和小括号之间有什么区别

时间:2019-04-19 08:17:44

标签: matlab

我有几行代码可以比较两个不同矩阵中的某些值,即使它是真的,也不会输入if部分。

for i = 1:ux
    for j = 1:SIR
        if ShelfInfo{SIR, 2} == uniquexy(ux, 1) && uniquexy{ux, 2} == ShelfInfo{SIR, 3}
            shelf = ShelfInfo{j,5};
            shelves = [shelves; shelf];
            1
        end
    end
end

此代码有效,但未输入if部分。我相信是因为大括号。当我用花括号更改所有内容时,我会收到此错误Brace indexing is not supported for variables of this type.当我在括号中更改此括号时,我将收到此错误Undefined operator '==' for input arguments of type 'table'.

我找不到方法,您能帮我吗?

2 个答案:

答案 0 :(得分:0)

()-按元素索引数组的子集,并且可以在任何类型的数组上工作。

{}-索引是一个单元格数组的子集,并提取单元格中包含的值。基本上,它“进入”单元格并取出其内容。它仅适用于单元格数组或subsref()重载以提供此行为的对象。

我猜您在其中两个引用都应()-indexing的情况下,无意中对您的uniquexy应用{} -indexing:

... uniquexy(ux, 1) && uniquexy{ux, 2} ...

答案 1 :(得分:0)

除了索引问题(这取决于矩阵的数据类型,作为最小的工作示例的一部分将很容易给出)之外,在if语句中,您不会循环遍历数组元素。我假设您要使用索引 i j ,而不是 SIR ux (它们表示固定在数组中的位置)。那么,为什么要在两个for循环中使用if语句呢?

根据数组类型,可以在访问数组元素时检查以下链接:

Basic array indexing

Cell vs. structure arrays

Tables