How To: Multi-level subindexing
显示 更早的评论
I'm tryig to achieve a proper 1-line ndex/sub-indexing operation, but have thus far failed to get the syntax right
ArrayA = sparse(100,100000);
ArrayA(randi(100*100000,[7000 1])) = (82-36).*rand(7000,1)+36;
[ArrayAFull(:,1),ArrayAFull(:,2),ArrayAFull(:,3)] = find(ArrayA);
ArrayB = sparse(100,100000);
ArrayB(randi(100*100000,[7000 1])) = (90-30).*rand(7000,1)+30;
[ArrayBFull(:,1),ArrayBFull(:,2),ArrayBFull(:,3)] = find(ArrayB);
[~,IdxA,IdxB] = intersect(ArrayAFull(:,[1,2]),ArrayBFull(:,[1,2]),'stable','rows');
t1 = ArrayBFull(ArrayBFull(IdxB,1)==1,:); %This is where things go sour
%The next two lines get me the actually desired matrix
t2 = ArrayBFull(IdxB,:);
t2 = t2(t2(:,1)==1,:);
isequal(t1,t2); %false
Is it possible to compress the t2 lines into a single line, or no?
采纳的回答
更多回答(0 个)
类别
在 帮助中心 和 File Exchange 中查找有关 Matrix Indexing 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!