LINE Solver
MATLAB API documentation
Loading...
Searching...
No Matches
sn_region_members.m
1function mask = sn_region_members(sn, f, Rmat, memvec)
2% MASK = SN_REGION_MEMBERS(SN, F, RMAT, MEMVEC) 1xM logical membership mask of
3% finite capacity region F.
4%
5% Membership is read from sn.regionmembers{f}, which refreshRegions records
6% directly from the region's node list. It cannot be derived from sn.region{f}:
7% -1 there means "unbounded", which is indistinguishable from "not a member", so
8% a region constrained only by regionlincon (or only by a memory budget) reads as
9% empty and is silently ignored.
10%
11% RMAT and MEMVEC provide the legacy derivation, used only for an sn built before
12% regionmembers existed (for instance one deserialised from an older model file).
13% That derivation carries the ambiguity above and is not equivalent.
14
15if isfield(sn,'regionmembers') && numel(sn.regionmembers) >= f && ~isempty(sn.regionmembers{f})
16 mask = logical(sn.regionmembers{f}(:))';
17 return
18end
19mask = (any(Rmat ~= -1, 2) | memvec(:) ~= -1)';
20end
Definition Station.m:245