# Element by element (xor) operation on cells.

3 views (last 30 days)
Meghana Dinesh on 1 Aug 2017
Answered: Akira Agata on 2 Aug 2017
I have two variables, Test and Train.
Test = cell of dimension 10 x 1 and
Train = cell of dimension 20 x 1
All elements are logical.
I want an operation similar to matrix multiplication, except that I want xor, instead of multiplication.
All of the 100 elements in Test should be xor(ed) with each of the 2000 elements in Train. All the while, I was doing this using for loop, but I want to avoid for loops now. I was trying to figure out performing this using bsxfun, but couldn't get it as desired. What is the most efficient way to do this?
Meghana Dinesh on 2 Aug 2017
Right, thanks!
Since MATLAB is used for matrix operations, I thought there would be a more efficient way to perform this task. In reality, the dimensions are in the range of 27,000 so it takes a lot of time to compute the output.

Akira Agata on 2 Aug 2017
I think cellfun would be suitable to this, like:
Result = cell(numel(Test), numel(Train));
for kk = 1:numel(Train)
Result(:,kk) = cellfun(@xor, repmat(Train(kk),numel(Test),1), Test,...
'UniformOutput', false);
end