我有几行代码可以比较两个不同矩阵中的某些值,即使它是真的,也不会输入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'.
我找不到方法,您能帮我吗?
答案 0 :(得分:0)
()-按元素索引数组的子集,并且可以在任何类型的数组上工作。
{}-索引是一个单元格数组的子集,并提取单元格中包含的值。基本上,它“进入”单元格并取出其内容。它仅适用于单元格数组或subsref()
重载以提供此行为的对象。
我猜您在其中两个引用都应()-indexing的情况下,无意中对您的uniquexy
应用{} -indexing:
... uniquexy(ux, 1) && uniquexy{ux, 2} ...
答案 1 :(得分:0)
除了索引问题(这取决于矩阵的数据类型,作为最小的工作示例的一部分将很容易给出)之外,在if语句中,您不会循环遍历数组元素。我假设您要使用索引 i 和 j ,而不是 SIR 和 ux (它们表示固定在数组中的位置)。那么,为什么要在两个for循环中使用if语句呢?
根据数组类型,可以在访问数组元素时检查以下链接: