MATLAB Indexing type dependence (bug?)
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Please see this strange example, where the datatype (single vs double) of the starting index affects how many data points are returned:
y = rand(67347456+50,1);
y = single(y);
N = single(50);
size(y(N+1:end))
MATLAB returns: >> 67347454 1 (incorrect, missing 2 elements)
size([N+1:length(y)])
MATLAB returns: >> 1 67347456 (which is correct)
and
size(y(double(N)+1:end))
MATLAB returns >> 67347456 1 (also correct)
Other datatypes like uint32 also work fine.
Please help me understand: If N is only 50, what does it matter to the indexing whether it is a single or a double? Also, aren't these ending index values well within the presicion of single?
0 Kommentare
Akzeptierte Antwort
Stephen23
am 20 Feb. 2025
Verschoben: Stephen23
am 21 Feb. 2025
"what does it matter to the indexing whether it is a single or a double?"
Because single precision cannot represent all of those indices. The largest index is:
y = rand(67347456+50,1);
x = numel(y)
which cannot be represented using SINGLE. The closest SINGLE value is:
single(x)
"...aren't these ending index values well within the presicion of single?"
Nope, those indices are well above FLINTMAX:
flintmax('single')
"MATLAB Indexing type dependence (bug?)"
I do not see anything that indicates a bug.
0 Kommentare
Weitere Antworten (1)
Walter Roberson
am 20 Feb. 2025
eps(single(67347456+50))
single precision numbers are 8 apart by the time of 67347456
0 Kommentare
Siehe auch
Kategorien
Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!