sub2ind() errors out with NaN inputs - handled differently since R2024a
9 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Eric Machorro
el 4 de Mzo. de 2025
Comentada: Eric Machorro
el 7 de Mzo. de 2025
>> matlabRelease
ans =
matlabRelease with properties:
Release: "R2022b"
Stage: "release"
Update: 3
Date: 17-Nov-2022
>> sub2ind([ 3 5 7], [ 3 3], [2 2], [1 nan])
ans =
6 NaN
versus
>> matlabRelease
ans =
matlabRelease with properties:
Release: "R2024b"
Stage: "release"
Update: 4
Date: 26-Dec-2024
>> sub2ind([ 3 5 7], [ 3 3], [2 2], [1 nan])
Error using sub2ind (line 71)
Out of range subscript.
2 comentarios
Walter Roberson
el 4 de Mzo. de 2025
That change probably came with R2024a, which had the following documented change to sub2ind:
The sub2ind (R2024a) function now supports scalar expansion and accepts a mix of scalars and vectors for subscript inputs. For example, sub2ind(sz,[1 2 3],2) is now the same as sub2ind(sz,[1 2 3],[2 2 2]). Previously, the subscript inputs were required to be the same size.
Respuesta aceptada
Matt J
el 4 de Mzo. de 2025
You can get the old behavior back if you need it,
Sub2Ind([ 3 5 7], [ 3 3], [2 2], [1 nan])
function out=Sub2Ind(sz,varargin)
out=varargin{1};
for i=2:numel(varargin)
out=out+(varargin{i}-1)*(sz(i-1));
end
end
Más respuestas (1)
Steven Lord
el 4 de Mzo. de 2025
This was a bug fix introduced in release R2024a.
3 comentarios
Steven Lord
el 7 de Mzo. de 2025
Generally, my mental model for the workflow for sub2ind (from the name) is that what comes out ought to be a valid linear index into an array that selects the same element as the subscripts you passed into the function. NaN is neither a valid subscript nor a valid linear index. Nor is 0.
I = sub2ind([10 10], 1, 0)
Perhaps the error message could be more descriptive.
Ver también
Categorías
Más información sobre Startup and Shutdown en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!