1 | function [IsTest, Index] = ismemberof(FamilyName, Field, MemberString) |
---|
2 | %ISMEMBEROF - Returns turn if the membership information of a family (cell of strings) |
---|
3 | % [MemberOfBooleanVector, Index] = ismemberof(FamilyName, MemberString) |
---|
4 | % |
---|
5 | % If FamilyName is a matrix, then a column of individual ismemberof calls is returned. |
---|
6 | % MemberString must be a string. |
---|
7 | % If the family was not found, then [] is returned. |
---|
8 | % |
---|
9 | % An optional Field input can be used to only look through subfields. |
---|
10 | % [MemberOfBooleanVector, Index] = ismemberof(FamilyName, Field, MemberString) |
---|
11 | % Subfield membership is usually not used. |
---|
12 | % |
---|
13 | % INPUTS |
---|
14 | % 1. If FamilyName is a matrix, then a column of individual ismemberof calls is returned. |
---|
15 | % 2. MemberString must be a string. |
---|
16 | % If the family was not found, then [] is returned. |
---|
17 | % |
---|
18 | % |
---|
19 | % See Also getmemberof, findmemberof, isfamily |
---|
20 | |
---|
21 | % |
---|
22 | % Written by Gregory J. Portmann |
---|
23 | |
---|
24 | if nargin < 2 |
---|
25 | error('2 inputs required'); |
---|
26 | end |
---|
27 | if nargin == 2 |
---|
28 | MemberString = Field; |
---|
29 | end |
---|
30 | |
---|
31 | if isstruct(FamilyName) |
---|
32 | if isfield(FamilyName, 'FamilyName') |
---|
33 | FamilyName = FamilyName.FamilyName; |
---|
34 | else |
---|
35 | error('For structure inputs, FamilyName field must exist'); |
---|
36 | end |
---|
37 | end |
---|
38 | |
---|
39 | IsTest = []; |
---|
40 | Index = []; |
---|
41 | for i = 1:size(FamilyName,1) |
---|
42 | Family = deblank(FamilyName(i,:)); |
---|
43 | if nargin == 2 |
---|
44 | IsTest(i,1) = any(strcmpi(MemberString, getmemberof(Family))); |
---|
45 | else |
---|
46 | IsTest(i,1) = any(strcmpi(MemberString, getmemberof(Family, Field))); |
---|
47 | end |
---|
48 | if IsTest(i,1) == 1 |
---|
49 | Index = [Index; i]; |
---|
50 | end |
---|
51 | end |
---|