sub2ind() errors out with NaN inputs - handled differently since R2024a
9 次查看(过去 30 天)
显示 更早的评论
>> 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 个评论
Walter Roberson
2025-3-4
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.
采纳的回答
Matt J
2025-3-4
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
更多回答(1 个)
Steven Lord
2025-3-4
This was a bug fix introduced in release R2024a.
3 个评论
Steven Lord
2025-3-7
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.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Startup and Shutdown 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!