Я ищу элегантный способ выяснить, полностью ли равны ячейки в массиве ячеек, используя equaln. Вот игрушечный пример:

cellarray{1,1,1} = [true, true, true];
cellarray{1,1,2} = [true, true, true];
cellarray{1,1,3} = [true, true, true];

cellarray{1,2,1} = [true, false, false];
cellarray{1,2,2} = [true, true, false];
cellarray{1,2,3} = [false, false, false];

Я хочу проверить, можно ли считать содержимое ячеек cellarray{1,1,:} равным. На самом деле размер третьего измерения этой матрицы равен 1000.

1
Andi 8 Окт 2018 в 18:22

2 ответа

Лучший ответ

Один вызов isequal с передачей список аргументов, разделенных запятыми для проверки, должны быть все тебе нужно:

>> isequal(cellarray{1,1,:})

ans =

  logical

   1

>> isequal(cellarray{1,2,:})

ans =

  logical

   0

Если вы хотите рассматривать значения NaN как равные (они не по умолчанию), просто используйте isequaln вместо этого.

4
gnovice 8 Окт 2018 в 16:20
c = cellarray(1,1,:);
allTheSameValues = (nnz(bsxfun(@minus, cell2mat(c), cell2mat(c(1)))) == 0)
0
Muttley 8 Окт 2018 в 15:59