我有一个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]'
答案 0 :(得分:0)
我认为这可以满足您的需求:
ind = find(T(:,:,1));
ind = bsxfun(@plus, ind(:), (0:size(T,3)-1)*size(T,1)*size(T,2));
result = T(ind);
答案 1 :(得分:0)
这样做:
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