Find position of cell array within another cell array or table or in a structure
I have a number of nodes on a graph and a number of edges that connect them. Attached to each edge is a structure wear the first field is the EndNodes data from the edge table which defines the edges. I want to search the struct array to find the structure that matches the selected edge EndNodes but I can’t figure out the syntax. The closest I’ve come is something like this where EdgeData is the struct array and data is the 2×1 cell containing the desired EndNodes:
selectedEdge=EdgeData(ismember(data,array2table({app.EdgeData.EndNodes}).Var1))
This fails because the inputs of ismember must be character arrays rather than cell arrays containing character arrays. Concatenating them could work but I would then simply be detecting if the two names of the edges are present and not whether they are contained together within one field. I’ve tried ==, ismember, strcmp, isequal and I’ve run out of things to try and ideas of documentation to comb through. It’s possible that arrayfun might be the way forward but I don’t really understand it honestly
PS yes I’m using app designer hence the referencing of EdgeData as a propertyI have a number of nodes on a graph and a number of edges that connect them. Attached to each edge is a structure wear the first field is the EndNodes data from the edge table which defines the edges. I want to search the struct array to find the structure that matches the selected edge EndNodes but I can’t figure out the syntax. The closest I’ve come is something like this where EdgeData is the struct array and data is the 2×1 cell containing the desired EndNodes:
selectedEdge=EdgeData(ismember(data,array2table({app.EdgeData.EndNodes}).Var1))
This fails because the inputs of ismember must be character arrays rather than cell arrays containing character arrays. Concatenating them could work but I would then simply be detecting if the two names of the edges are present and not whether they are contained together within one field. I’ve tried ==, ismember, strcmp, isequal and I’ve run out of things to try and ideas of documentation to comb through. It’s possible that arrayfun might be the way forward but I don’t really understand it honestly
PS yes I’m using app designer hence the referencing of EdgeData as a property I have a number of nodes on a graph and a number of edges that connect them. Attached to each edge is a structure wear the first field is the EndNodes data from the edge table which defines the edges. I want to search the struct array to find the structure that matches the selected edge EndNodes but I can’t figure out the syntax. The closest I’ve come is something like this where EdgeData is the struct array and data is the 2×1 cell containing the desired EndNodes:
selectedEdge=EdgeData(ismember(data,array2table({app.EdgeData.EndNodes}).Var1))
This fails because the inputs of ismember must be character arrays rather than cell arrays containing character arrays. Concatenating them could work but I would then simply be detecting if the two names of the edges are present and not whether they are contained together within one field. I’ve tried ==, ismember, strcmp, isequal and I’ve run out of things to try and ideas of documentation to comb through. It’s possible that arrayfun might be the way forward but I don’t really understand it honestly
PS yes I’m using app designer hence the referencing of EdgeData as a property struct, structures, array, arrays, cell, cell array, cell arrays, ismember, table, data, string MATLAB Answers — New Questions









