MATLAB: Set zero in matrix elements

matrix index

Hi, I have a 3d tensor in MATLAB. Call it A. Lets say, size(A)=[4 6 10]. I have another matrix M which holds few indexes of the first two dimensions of the matrix A. Like
M=[1 5;3 2;1 4];
Now, I want to set all elements of the matrix A as zero which has the different index (of the first two dimensions) than the matrix M. Basically, what I want to do is-
A((if index(A{1,2})~=M),:)=0
Please help me.

Best Answer

This is a little clunky, but it works.
A = rand(4,6,10);
M = [1 5;
3 2;
1 4;];
[a1,a2,a3] = size(A);
[m1,m2] = size(M);
subIndices = [repmat(M,a3,1),repmat((1:a3)',m1,1)];
linearIndicesToKeep = sub2ind([a1,a2,a3],subIndices(:,1),subIndices(:,2),subIndices(:,3));
linearIndicesToZero = setxor(linearIndicesToKeep,1:(a1*a2*a3));
A(linearIndicesToZero) = 0;