【发布时间】:2018-08-08 20:08:06
【问题描述】:
我正在使用邻接矩阵研究图论,我想在多个节点之间分割边,例如我有以下初始邻接矩阵:
a= [ 0 2 3;
2 0 1;
3 1 0]
从该矩阵可以清楚地看出我们有 3 个节点,现在我想将上述行(边)拆分为 (1-3) 之间的新随机节点:
split= randi([1 3],1,length(A));
split = [ 2 2 1]
我现在知道我需要将第一行的元素分成两行,第二行的元素也分成两行,而第三行的元素将保持原样,我会有新的大小为 5X5 的矩阵如下:
A = [0 0 2 0 3;
0 0 0 0 0;
2 0 0 0 1;
0 0 0 0 0;
3 0 1 0 0]
我想要做的是将第一行中的非零元素在这一行和第二行之间拆分,第三行与第四行拆分,所以我的矩阵看起来像:
An = [0 0 2 0 0;
0 0 0 0 3;
2 0 0 0 0;
0 0 0 0 1;
0 3 0 1 0]
【问题讨论】:
-
所以如果
split = [3 3 3]那么An将是一个[9 x 9]矩阵。对吗? -
@rahnema1 没错!
-
矩阵对角线不应该是0吗?
-
@rahnema1 是的,分裂前后一直都是这样
-
对不起,但是……上下移动一行的非零值的标准是什么?
标签: matlab split adjacency-matrix edges