Where is documentation for colon range of the form 1:vector?

조회 수: 2 (최근 30일)
Paul Hoffrichter
Paul Hoffrichter 2023년 6월 13일
댓글: Stephen23 2023년 6월 13일
I think the following code examples should result in a Matlab error and not be allowed to run. I think the code syntax should be disallowed by Matlab.
Where is the documentation that describes the use of the colon operator having the following form? All the examples in https://www.mathworks.com/help/matlab/ref/colon.html appear to use only scalar integers.
I was reviewing code that had code analogous to:
a = [ 3 9 44];
b = 1:a
b = 1×3
1 2 3
I didn't recognize this form. The results appear to show that only the first element of a is used. Where is the documentation that allows this?
A quick experiment shows that the first element sof both vectors are used when creating a range:
a = [2 12 11];
b = [ 13 19 144];
c = a:b
c = 1×12
2 3 4 5 6 7 8 9 10 11 12 13

채택된 답변

Steven Lord
Steven Lord 2023년 6월 13일
The third item in the Description section of the documentation page to which you link describes what the colon, : operator does when its inputs are non-scalar.
"x = j:i:k creates a regularly-spaced vector x using i as the increment between elements. The vector elements are roughly equal to [j,j+i,j+2*i,...,j+m*i] where m = fix((k-j)/i). However, if i is not an integer, then floating point arithmetic plays a role in determining whether colon includes the endpoint k in the vector, since k might not be exactly equal to j+m*i. If you specify nonscalar arrays, then MATLAB interprets j:i:k as j(1):i(1):k(1)." [Emphasis added.]
  댓글 수: 4
Stephen23
Stephen23 2023년 6월 13일
This should definitely be deprecated. And also that counter-productive column-iteration behavior of FOR.

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

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Matrix Indexing에 대해 자세히 알아보기

태그

제품


릴리스

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by