Can anyone tell what is this line doing
조회 수: 4 (최근 30일)
이전 댓글 표시
It seems these two first lines two the exact same thing can anyone help
I cannot figure out what they are doing
a = d{1}(f(1,2));
a = f(1,2);
...
f = [1 2 4];
d = {[4 2 1] [4 1 2] [4 3 5]};
댓글 수: 6
채택된 답변
John D'Errico
2020년 11월 23일
편집: John D'Errico
2020년 11월 23일
You asked again, why you cannot use f(1,3), instead of f(1,2).
LOOK CAREFULLY AT WHAT YOU HAVE. TAKE IT ONE STEP AT A TIME.
f = [1 2 4];
d = {[4 2 1] [4 1 2] [4 3 5]};
Now, what is f(1,3)? TRY IT!
f(1,3)
It is the number 4. How are you using it? As an index into a cell of the cell array d. So what is d{1}?
d{1}
Does d{1} have a 4th element? NO.
Why was this not a problem with f(1,2)? Because f(1,2) is 2.
d{1}(f(1,2))
d{1}(f(1,3))
The latter case fails because you cannot access the 4th element of a vector that has only 3 elements.
댓글 수: 3
John D'Errico
2020년 11월 23일
Excellent.
For most problems in MATLAB where you need to understand a complicated line of code, you take apart the line from the inside and work out. Figure out what the inside piece is doing. Then look backwards and outwards. In this case, it is perhaps not fully obvious, that (f(1,2)) was an index into what came before.
추가 답변 (1개)
KSSV
2020년 11월 23일
f = [1 2 4]; % this is an array can be access by f (i) where i = 1,2,3
d = {[4 2 1] [4 1 2] [4 3 5]}; % this is a cell array, can be access by d {i} where i = 1,2,3
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Matrix Indexing에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!