Короче говоря, мой вопрос:Индексирование Matlab использует числа с плавающей запятой?
Является ли double в Matlab действительно двойным, или это класс с дополнительным свойством, действующим как целое число?
А вот контекст и мотивация к этому вопросу :)
>> 1:4
ans =
1 2 3 4
>> class(ans)
ans =
double
Просто делать это создает двойной ...
>> 1.00:4.00
ans =
1 2 3 4
>> class(ans)
ans =
double
..., как это делает, даже если это напечатано как целые числа.
Характер чисел с плавающей запятой показывает только тогда, когда вводится большая численная неопределенность.
>> acosd(cosd(1:4))
ans =
0.999999999999900 1.999999999999947 3.000000000000045 4.000000000000041
Является двойной в Matlab действительно двойной, или это класс с дополнительным свойством действовать как целое?
вектор, определенный с «целых» (что, конечно, на самом деле двойники), он может быть использован для индекса другой вектор, который обычно является свойством целых чисел.
>> A = [9 8 7 6]
A =
9 8 7 6
>> idx = [4 3 2 1]
idx =
4 3 2 1
>> class(idx)
ans =
double
>> A(idx)
ans =
6 7 8 9
Я также попытался A(acosd(cosd(1:4)))
, который не работает.
Но как же я могу индексировать с удвоениями, когда они определены как '[4 3 2 1]', но не тогда, когда они имеют (допустимую) меньшую точность с плавающей запятой (по сравнению с тем, когда они устанавливаются в оригинале)? Угадайте, что Matlab следует отличать только от класса, а не от самого номера? – AllanLRH
@NovicePhysicist 'double's не теряют точность до 53-бит, поэтому MATLAB позволяет использовать их (цифры более 9,007,199,254,740,992 потеряют точность). См. [Здесь] (http: // stackoverflow.ком/а/1848762/2778484). – chappjc
@NovicePhysicist Если вы выполните тест с чем-то вроде 'x = rand (4,1); x (1.6: 2.4), x (1.2: 2.6) 'есть, очевидно, некоторое округление продолжается (усечение?). Я не знаю, что происходит, когда вы пытаетесь дать индекс около 9 квадриллионов, но я думаю, что это [максимальный размер массива в MATLAB на каждой зарегистрированной платформе] (http://www.mathworks.com/support/ решения/о/данные/1-IHYHFZ/index.html). – chappjc