How to find the difference in values present in each row of two cell arrays of same size.

조회 수: 1 (최근 30일)
I am having two cell arrays A and B of same size as follows
A B
1 1
1 1
1 1
1 1
1 1
[1,2] [1,2]
[1,1] [1,2]
[1,2] [1,1]
[1,2] [1,2]
[1,1] [1,2]
[1,2,2] [1,1,2]
[1,2,3] [1,2,2]
[1,2,3] [1,2,2]
[1,1,2] [1,1,2]
[1,2,2] [1,2,3]
I want to find the difference between A and B.
As the size is small I can do it manually by seeing it.
On seeing it I can find 7th ,8th, 10th, 11th, 12th, 13th, 15th rows are different.
But I having cell arrays for larger size and I am unable to do it manually.
Could anyone please help how to find the rows in a general way that are different using matlab command.

채택된 답변

Adam Danz
Adam Danz 2021년 6월 24일
편집: Adam Danz 2021년 6월 24일
I want to find the difference between A and B.
Set up a loop that runs isequal(A,B) on pairs from cell array A and B.
A = {1; [1 2]; [1 1]; [1 2 2]};
B = {1; [1 1]; [1 1]; 1 };
iseq = false(size(A));
for i = 1:numel(A)
iseq(i) = isequal(A{i},B{i});
end
iseq
iseq = 4×1 logical array
1 0 1 0
Or use cellfun that performs the loop above within 1 line of code,
iseq = cellfun(@isequal, A,B)
iseq = 4×1 logical array
1 0 1 0
These methods require A and B to be equal lengths.
I want to calculate the mean square error of the two cell arrays.
The pairs of vectors in A and B must have the same length.
A = {1; [1 2]; [1 1]; [1 2 2]};
B = {1; [1 1]; [1 1]; [1 2 3]};
mse = nan(size(A));
for i = 1:numel(A)
mse(i) = sum((A{i}-B{i}).^2)/numel(A{i});
end
mse
mse = 4×1
0 0.5000 0 0.3333
Or use cellfun that performs the loop above within 1 line of code,
mse = cellfun(@(A,B)sum((A-B).^2)/numel(A), A,B)
mse = 4×1
0 0.5000 0 0.3333
  댓글 수: 4
Adam Danz
Adam Danz 2021년 6월 24일
To count the number of paired coordinates that are 'near',
sum(iseq)
You can compute the MSE between the pairs of vectors within the loop or you could do it within cellfun. However, the paired vectors must always have the same number of values within each pair.
I can update my answer to show how.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by