필터 지우기
필터 지우기

Compare values of array of matrix 5x5x106

조회 수: 1 (최근 30일)
pamela sulis
pamela sulis 2015년 11월 20일
편집: Thorsten 2015년 11월 20일
Hi!
I have a array of logical matrix 5x5x106 (attached file): I want to compare every logical matrix with the others to find common elements end save them. I try this code:
for k=1:106
if valueNoZeros(:,:,k)==valueNoZeros(:,:,k+1)
a(:,:,k)=1;
end
end
and also this
for k=1:106
if valueNoZeros(:,:,k)==valueNoZeros(:,:,k+1)
for i=1:5
for j=1:5
a(i,j,k)=1;
end
end
end
end
but it gives me an error: 'Conversion to cell from double is not possible'
Can you help me?

채택된 답변

Thorsten
Thorsten 2015년 11월 20일
편집: Thorsten 2015년 11월 20일
If you want to compare every matrix with each other, you have 5565 pairs to compare:
Npairs = nchoosek(1:106,2);
N = size(Npairs, 1);
A = zeros(5,5,N);
for i = 1:N
A(:,:,i) = valueNoZeros(:,:,Npairs(i,1)) == valueNoZeros(:,:,Npairs(i,2));
end
If you just want to compare a matrix with the following matrix, you have 105 comparisons:
N = 106 - 1;
for i = 1:N
A(:,:,i) = valueNoZeros(:,:,i) == valueNoZeros(:,:,i+1);
end
  댓글 수: 2
pamela sulis
pamela sulis 2015년 11월 20일
편집: pamela sulis 2015년 11월 20일
I have a doubt: I want to compare only the values '1' and not the '0', I modify your code in this way:
Npairs = nchoosek(1:106,2);
N = size(Npairs, 1);
A = zeros(5,5,N);
for i = 1:N
if (valueNoZeros~=0)
A(:,:,i) = valueNoZeros(:,:,Npairs(i,1)) == valueNoZeros(:,:,Npairs(i,2));
end
end
but now the comparison give me matrix of all zeros: isn't correct the command 'if (valueNoZeros~=0)'? I have thought that with this command, the code doesn't consider values '0' but only the '1'.
Thorsten
Thorsten 2015년 11월 20일
편집: Thorsten 2015년 11월 20일
valueNoZeros~=0 gives an 5x5x106 logical array that is logical 1 if valueNoZeros is one (valueNoZeros~=0) else 0. So this is just the same as valueNoZeros! Moreover, it is a whole array, which is only true if all elements are true; in the example, it is never true...
So if you want A to be 1 if there is a one in two matrices, use
A(:,:,i) = valueNoZeros(:,:,Npairs(i,1)) & valueNoZeros(:,:,Npairs(i,2));

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

추가 답변 (0개)

카테고리

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

Community Treasure Hunt

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

Start Hunting!

Translated by