My question is regarding the output of the ind2sub function. In my code, since the input dimention of ind2sub changes, i should expect the output dimention to change. But a code like this is not working.
B = rand(6,6,6);
A(1:ndims(B)) = ind2sub(size(B),56);
The output of the above code is [56 56 56] while I'm expecting something like [2 4 2].
Any suggestion?

 채택된 답변

Fangjun Jiang
Fangjun Jiang 2011년 12월 11일

2 개 추천

Follow the same clue in the answer to your other question, you can do the following:
B=rand(4,5,6);
Ind=(20:25).';
n=ndims(B);
Sub=cell(1,n);
[Sub{:}]=ind2sub(size(B),Ind)
SubMatrix=cell2mat(Sub)
Sub =
[6x1 double] [6x1 double] [6x1 double]
SubMatrix =
4 5 1
1 1 2
2 1 2
3 1 2
4 1 2
1 2 2

추가 답변 (1개)

bym
bym 2011년 12월 10일

1 개 추천

you need multiple assignments for that function.
[r,c,p]=ind2sub(size(B),56)
r =
2
c =
4
p =
2

댓글 수: 2

Paulo Silva
Paulo Silva 2011년 12월 10일
that one was bugging me for some time, +1 vote
Mohsen  Davarynejad
Mohsen Davarynejad 2011년 12월 10일
But as I've mentioned, the output dimention is changing. So I do not know if the I need three variables, in your case r, c, p, of if I need more.

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터 및 File Exchange에서 MATLAB에 대해 자세히 알아보기

태그

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by