我有一个NxNx5数组T,我想将其转换为Rx5数组TT,以满足以下条件(其中R是数组T(:,:,1)的非零项数):
如果T(i,j,1)== 0,那么我们忽略。如果T(i,j,1)!= 0那么我想要一行TT,其条目是
[T(i,j,1) T(i,j,2) T(i,j,3) T(i,j,4) T(i,j,5)]
注意,T(i,j,k)(k = 2,3,4,5)可以为零。例如,
如果
T(3,2,1) = 3
然后我想要一排TT
[3 0 2 1 5].
一些说明:
TT的条目都是整数。条目按列顺序强调。即TT(:,:,1)的第一列可能
[1 2 0 0 3 4 0 0 0 5 6]'
然后是下一栏
[7 8 0 0 0 0 0 9 10 11 12]'
我认为这样做你想要的:
ind = find(T(:,:,1));
ind = bsxfun(@plus, ind(:), (0:size(T,3)-1)*size(T,1)*size(T,2));
result = T(ind);
这样做:
clear
rng(343)
N=7;
K=5;
T=randi([0,4],[N,N,K])
TT=reshape(T,[N*N,K])
TT(T(:,1)==0,:)=[] %delete rows with first col equal to 0