В чем разница между фигурными скобками и парантезом - PullRequest
0 голосов
/ 19 апреля 2019

У меня есть пара строк кода, которые сравнивают некоторые значения в двух разных матрицах, и даже если это правда, он не входит в часть 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 голосов
/ 19 апреля 2019

Помимо проблемы индексации (которая зависит от типа данных ваших матриц и будет удобна для использования в качестве части минимального рабочего примера), в вашем операторе if вы не зацикливаете элементы массива.Я предполагаю, что вы захотите использовать индексы i и j вместо SIR и ux (они указывают фиксированное положение в ваших массивах).Так зачем вам тогда оператор if внутри двух циклов for?

Можно проверить эти ссылки при доступе к элементам массива в зависимости от типов массива:

Базовое индексирование массива

Ячейки против структурных массивов

Таблицы

0 голосов
/ 19 апреля 2019

() - индексация подмножества массива элементами и работает с любым типом массива.

{} - индексация подмножества массива ячеек и извлечение содержащихся в них значений ячеек.По сути, он «проникает» в клетки и вытаскивает их содержимое.Он работает только с массивами ячеек или объектами, которые перегружены subsref() для обеспечения этого поведения.

Я предполагаю, что вы случайно применяете {} -индексирование к вашему uniquexy в одной из ваших ссылок там, когда оба они должны быть () -индексированы:

... uniquexy(ux, 1) && uniquexy{ux, 2} ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...