Matlab найти не работает с массивом больших размеров?
Скажи A = ранд (2,2,2); [a,b,c] = найти (A == A(1,2,2))
Я получил а =1 б =4 с =1
что?
4 ответа
Находите только те работы, которые вы пытаетесь применить для двухмерных массивов.
В Matlab Central доступно несколько функций, которые будут выполнять n-мерные массивы.
Используйте равенство ==
вместо оператора присваивания =
,
A = rand(2,2,2); [a,b,c] = find(A == A(1,2,2))
Смотрите документацию для поиска. выходные аргументы не для всех направлений, только для строк и столбцов. Похоже, MATLAB объединяет 3-е направление вдоль 2-го и возвращает 4-й столбец. Последний аргумент равен 1, потому что у вас есть только одно совпадение.
Выходные данные функции FIND представляют собой два набора индексов (a
а также b
) и значения по этим показателям (c
). Для матриц, больших чем 2 измерения, второй индекс будет линейным индексом.
В вашем примере вы создаете логический массив, когда вы делаете A == A(1,2,2)
, Это логический массив, который имеет значение 1
(т.е. true
) по индексу (1,2,2)
, передается в функцию НАЙТИ. Позиция этого ненулевого значения находится в первом ряду матрицы (вывод a = 1
) и четвертый линейный индекс в оставшихся измерениях (выходной b = 4
). Ненулевое значение 1
выводится для c
,