I want to create matrix C, from matrix A and B.
A = (r1 r2 r3) B= [r1 r2 r3 r4 r2 r1 r5 r6 r2 r3 r3 r2 r3 r1 r1 r3] C=(s1 s2 s3)
s1, s2, s3 are row’s number in matrix B.
s1= bigger row’s number between r1 r2 and r2 r1
s2= bigger row’s number between r2 r3 and r3 r2
s3= bigger row’s number between r3 r1 and r1 r3
this is an example:
A= [4 1 6] B= [4 1 6 8 1 6 1 4 6 1 6 4 4 6] C= [3 4 6]
I use the following code, but it gives me an error.
could you please help me with the code.
[m,n] = size(A); Y1 = reshape(permute(cat(3,A,circshift(A,[0 -1])),[3,2,1]),2,[]); Y2 = flip(Y1,1); Bp = permute(B,[2,3,1]); X = reshape(any([all(bsxfun(@eq,Y1,Bp));all(bsxfun(@eq,Y2,Bp))]),m*n,[])'; C = reshape(max(bsxfun(@times,X,(1:size(B,1))')),[],m)'-1;
error:
Error using bsxfun Requested 2x80310x80310 (12.0GB) array exceeds maximum array size preference. Creation of arrays greater than this limit may take a long time and cause MATLAB to become unresponsive. See array size limit or preference panel for more information. Error in untitle (line 81) X = reshape(any([all(bsxfun(@eq,Y1,Bp));all(bsxfun(@eq,Y2,Bp))]),m*n,[])';
Best Answer