Manipulating dimensions without using loops
정보
이 질문은 마감되었습니다. 편집하거나 답변을 올리려면 질문을 다시 여십시오.
이전 댓글 표시
I would like to know if there is a way to manipulate the following high dimensional array with permute or bsxfun or other functions without using so many loops, here iTe1, iTe2,... are known indexing matrices. Thanks in advance!
for i1 = 1:nE1
for i2 = 1:nE2
for i3 = 1:nE3
for i4 = 1:nE4
outputM(:,:,:,:,i1,i2,i3,i4) = inputM(iTe1(:,i1),iTe2(:,i2),iTe3(:,i3),iTe4(:,i4));
end
end
end
end
댓글 수: 2
James Tursa
2020년 6월 8일
편집: James Tursa
2020년 6월 8일
What is inputM? A variable or a function? What are the dimensions of all of your variables? How are the values in the iTe1,...,iTe4 variables created? Any pattern to them?
답변 (1개)
James Tursa
2020년 6월 9일
It looks like the indexing is consecutive, it is just that you have a mixture of reshaping (which doesn't change memory order of data) and permuting (which does channge memory order of the data) the dimensions. E.g., for your specific example:
inputM = 22 x 22 x 22 x 22 array
r = reshape(inputM,[2,11,2,11,2,11,2,11]);
outputM = permute(r,[1 3 5 7 2 4 6 8]);
Perhaps you can use a variation of this two-step scheme for your actual problem.
댓글 수: 1
Boyi Ye
2020년 6월 10일
이 질문은 마감되었습니다.
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!




