MATLAB Answers

0

4-D Matrix Indices Corresponding to an Entry Inequality

Asked by Paul Fishback on 17 Jun 2015
Latest activity Edited by Matt J
on 17 Jun 2015
I have a 4-dim matrix, A, of size say 10-by-10-by-200-by-30.
I would like to find all 4-tuples [i,j,f,t] for which A(i,j,f,t)<.01 and store each 4-tuple [i,j,f,t] as a row in a matrix, call it "Entries." For example, if Entries had a row consisting of 5,4,120,8, then A(5,4,120,8)<.01.
I started J=find(A<=.01), which of course returns a vector, where each vector entry corresponds to a particular 4-tuple.
The problem I'm having is determining the correspondence. If A was 2-by-2, I would just use
[I_row, I_col] = ind2sub(size(A),J),
in which case Entries=[I_row,I_col].
It's the fact my matrix A is 4-dim that's causing my difficulty.

  0 Comments

Sign in to comment.

1 Answer

Answer by Matt J
on 17 Jun 2015
Edited by Matt J
on 17 Jun 2015
 Accepted Answer

[Tuples{1:ndims(A)}]=ind2sub(size(A), J);
Entries=[Tuples{:}];

  1 Comment

For further relevant reading, see Comma Separated Lists

Sign in to comment.