2013-09-04 3 views
3

find 함수 내에서 matlab은 지정된 locigal 인수가 true로 평가되는 인덱스를 반환합니다.
따라서 반환 값 (인덱스에 대한)이 double이 아니고 uint32 또는 uint64과 같이 가장 큰 인덱스가 될 수있는 매트릭스가 될 수 있는지 궁금합니다.matlab에서 double 값을 반환하는 이유는 무엇입니까

[~,max_num_of_elem]=computer 

을 실행하는 것도 타입 double이다 변수 max_num_of_elem의 행렬에 허용되는 요소의 최대 수를 반환한다는 것입니다 여기에 연결되어있을 수 있습니다
또 다른 이상한 것은,.

+2

'find'는 인덱스 ** 및 ** 값을 반환 할 수 있습니다. 나는 당신이 인덱스가 아닌 값의 데이터 타입에 대해 질문하고 있다고 가정합니다. – am304

+0

아, 죄송합니다 am304 - 물론 당신이 옳습니다. 그에 따라 질문을 채택 할 것입니다. –

+1

'double'은 Matlab의 기본 유형입니다. 거의 모든 것이 그것을 사용하고 그것을 반환합니다. 이것은 디자인 선택이었고 많은 경우 변환하지 않고 방정식에서 반환 된 값을 직접 사용할 수 있기 때문에 훨씬 쉽게되었습니다. 유일한 문제는'find'가'2^53' 개 이상의 원소를 가진 행렬에 대해 작동하지 않을 가능성이 있다는 것입니다. – horchler

답변

6

나는 단지 추측 할 수 있지만 기능 범위가 다양하므로 double 만 지원할 수 있습니다. 함수는 MATLAB의 버전에 uint32에 대한 double하지에 대해 정의 된 것을 볼 수

setdiff(methods('double'), methods('uint32')) 

를 실행합니다.

overflow issue with integer data types in MATLAB 또한 버그를 발견하기가 어렵습니다.

+1

또한 역사적인 이유 때문에; MATLAB은 원래 'double'유형 만 가지고 있었으며 이후에 다른 유형이 소개 될 때까지는 없었습니다. http://blogs.mathworks.com/steve/2013/01/15/data-types/ – Amro

관련 문제