0
私は与えられた行列からグラフを作成する次のコードを持っています。 得られたグラフには、タイプO
とタイプS
の2種類のノードがあります。配列内の文字列を検索
B=[0 0 0 0;0 0 1 0;1 1 1 0;0 1 0 0;1 0 1 0;0 1 1 0;0 1 0 1;0 1 0 1;0 0 0 1; 0 0 0 1]; % Example Matrix
disp('The Matrix of the system is the following');
display(B); % Get the system matrix
nNodeCol = size(B,2); % one node for each column of B
nNodeLine = size(B,1)/2; % one node for every two lines of B
% First the column nodes, then the line nodes:
nodeNames = [cellstr(strcat('O',num2str((1:size(B,2))'))) ; cellstr(strcat('S',num2str((1:size(B,1)/2)')))];
% Adjacency matrix adj, adj(i,j)=1 means there is an edge from node#i to node#j:
adj = zeros(nNodeCol+nNodeLine); % square matrix which size is the number of nodes
adj(1:nNodeCol, nNodeCol+1:end) = B(1:2:end,:)'; % edge from a column node to a line node is added for all the 1 in the first line of the node in the matrix
adj(nNodeCol+1:end, 1:nNodeCol) = B(2:2:end,:); % edge from the line node to a column node is added for all the 1 in the second line of the node in the matrix
% Creation of the graph:
G = digraph(adj,nodeNames);
for x=1: nNodeCol
v{x} = dfsearch(G,nodeNames{x}); % Finding paths from nodes type O .
end
celldisp(v);
今、私たちはすべての細胞がタイプO
のノード上dfsearchの結果であるノードのセットを含有する配列v
を持っている私は、(そうv{1}
はdfsearch(G,O1)
の結果が含まれ、その上に行きます。)私は別の配列を取得したいタイプS
のノード数とすべてのW{x}
があるサイズnNodeLine
を持っているW
はの最初の要素が含まれています
v{1}= (O1,S2,O2,S4,S5,S3,O3)
v{2}= (O2,S2,S4,S5)
v{3}= (O3,S2,O2,S4,O4,S5,S3)
v{4}= (O4,S4,O2,S2,S5)
、私の問題は以下の通りです:次の結果を得ましたv{x}
(v{x}{1})
であり、Sx
は、v{x}
の一部である。例えば、w{1}
はv{x}
のすべての最初の要素を含み、S1
が含まれます。だから私は次を取得する必要があります:
W{1}= {}
W{2}= {O1,O2,O3,O4}
W{3}= {O1,O3}
W{4}= {O1,O2,O3,O4}
W{5}= {O1,O2,O3,O4}
何か提案がありますか?
@ハゼム......何かバグはありません....もしあなたがそれを修正することができれば....あなたの答えに感謝します。 – StamDad
また、 'ind = find(strcmp(v {1、j、:}、ss));}のポイントは何も使われていないので何ですか? – StamDad
ああ、間違いだったので修正されました。 – Haz