将元胞分配给元胞数组
assign a cell to a cell array
我有以下矩阵:
adj = O1 O2 O3 O4 S1 S2 S3 S4 S5
O1 0 0 0 0 0 1 1 0 0
O2 0 0 0 0 0 1 0 1 0
O3 0 0 0 0 0 1 1 0 0
O4 0 0 0 0 0 0 0 1 1
S1 0 0 1 0 0 0 0 0 0
S2 0 1 0 0 0 0 0 0 0
S3 0 1 1 0 0 0 0 0 0
S4 0 1 0 1 0 0 0 0 0
S5 0 0 0 1 0 0 0 0 0
我有一个 cellarray nodeNames,其中包含矩阵的行和列的标签,因此:
nodeNames = {O1 O2 O3 O4 S1 S2 S3 S4 S5}
我想执行以下操作:在节点 S
(i = 5: 9) 的行中浏览 matirce adj,对于列,节点 O
(j = 1; 4) if adj (i, j) = 1
然后从 nodeNames
获取节点 Oj
的标签并将其放入我们将命名为 w
的新 cellarray 的单元格 w {i}
.
所以我想要以下内容:
w{1}={O3}.
w{2}={O2}.
w{3}={O2 O3}.
w{4}={O2 O4}.
w{5}={O4}.
我曾尝试这样做,但我的结果中出现了一个空的 cellarray:
for i=5 : 9
k=1;
for j=1:4
if adj(i,j)==1;
w{i}{k}=nodeNames{j};
end
k=k+1;
end
end
我知道问题出在对 cellarray 的赋值 w
但找不到正确的,有什么建议吗?
nodeNames
or nodNames
, 还有你的k=k+1 必须在if语句中.
adj=[0,0,0,0,0,1,1,0,0;0,0,0,0,0,1,0,1,0;0,0,0,0,0,1,1,0,0;0,0,0,0,0,0,0,1,1;0,0,1,0,0,0,0,0,0;0,1,0,0,0,0,0,0,0;0,1,1,0,0,0,0,0,0;0,1,0,1,0,0,0,0,0;0,0,0,1,0,0,0,0,0]==1;
nodeNames = {'O1','O2','O3','O4','S1','S2','S3','S4','S5'};
w={};
for i = 5:9
k=1;
for j=1:4
if adj(i,j)
w{i-4,k}=nodeNames{j};
k=k+1;
end
end
end
结果:
w =
5×2 cell array
'O3' []
'O2' []
'O2' 'O3'
'O2' 'O4'
'O4' []
我有以下矩阵:
adj = O1 O2 O3 O4 S1 S2 S3 S4 S5
O1 0 0 0 0 0 1 1 0 0
O2 0 0 0 0 0 1 0 1 0
O3 0 0 0 0 0 1 1 0 0
O4 0 0 0 0 0 0 0 1 1
S1 0 0 1 0 0 0 0 0 0
S2 0 1 0 0 0 0 0 0 0
S3 0 1 1 0 0 0 0 0 0
S4 0 1 0 1 0 0 0 0 0
S5 0 0 0 1 0 0 0 0 0
我有一个 cellarray nodeNames,其中包含矩阵的行和列的标签,因此:
nodeNames = {O1 O2 O3 O4 S1 S2 S3 S4 S5}
我想执行以下操作:在节点 S
(i = 5: 9) 的行中浏览 matirce adj,对于列,节点 O
(j = 1; 4) if adj (i, j) = 1
然后从 nodeNames
获取节点 Oj
的标签并将其放入我们将命名为 w
的新 cellarray 的单元格 w {i}
.
所以我想要以下内容:
w{1}={O3}.
w{2}={O2}.
w{3}={O2 O3}.
w{4}={O2 O4}.
w{5}={O4}.
我曾尝试这样做,但我的结果中出现了一个空的 cellarray:
for i=5 : 9
k=1;
for j=1:4
if adj(i,j)==1;
w{i}{k}=nodeNames{j};
end
k=k+1;
end
end
我知道问题出在对 cellarray 的赋值 w
但找不到正确的,有什么建议吗?
nodeNames
or nodNames
, 还有你的k=k+1 必须在if语句中.
adj=[0,0,0,0,0,1,1,0,0;0,0,0,0,0,1,0,1,0;0,0,0,0,0,1,1,0,0;0,0,0,0,0,0,0,1,1;0,0,1,0,0,0,0,0,0;0,1,0,0,0,0,0,0,0;0,1,1,0,0,0,0,0,0;0,1,0,1,0,0,0,0,0;0,0,0,1,0,0,0,0,0]==1;
nodeNames = {'O1','O2','O3','O4','S1','S2','S3','S4','S5'};
w={};
for i = 5:9
k=1;
for j=1:4
if adj(i,j)
w{i-4,k}=nodeNames{j};
k=k+1;
end
end
end
结果:
w =
5×2 cell array
'O3' []
'O2' []
'O2' 'O3'
'O2' 'O4'
'O4' []