-1

这可能是一个非常有帮助的问题,所以我提前道歉,但是我对 MATLAB 还是很陌生,并且一直被这个简单的问题所困扰。

因此,我有一个表示有向网络的任意矩阵 (D):

D = [0,1,1,0,0,0,0;
     0,0,0,1,1,0,0;
     0,0,0,0,1,0,0;
     0,0,0,0,0,1,0;
     0,0,0,0,0,1,0;
     0,0,0,0,0,0,1;
     0,0,0,0,0,0,0]

n = length(D);

我要做的就是计算每个节点的出度。这可以使用以下命令轻松计算:

O = cumsum(D,2);
O1 = (1,n);
... for all n in D...

我只是想编写一个循环命令,以便脚本计算网络中每个节点的出度,并在这样做时创建一个新变量。我写了以下循环命令:

O = cumsum(D,2);
for i=1:n
    O_i = O(i,n)
end

但是,我只更新相同的变量 'O_i' 而不是创建新变量 'O_1,...,O_7' :( .

有没有办法为每个循环创建一个新变量?

非常感谢,

欧文

4

2 回答 2

0

你想要的本质上是一个数组,谢天谢地,matlab 很好用,你可以简单地使用O(i),但最好先初始化:O=zeros(size(D,2),1).

话虽如此,在这种情况下,您真正​​需要的是sum函数:O=sum(D,2),这O(i)将是节点的出度i

于 2013-09-24T19:07:44.117 回答
-2

假设您希望matlab将“​​O_i”作为变量,您希望将“O_i”格式化为“i”作为变化变量。您可以在存储之前使用以下内容来创建变量名称。IE

eval(['O' num2str(i) ' = O (' num2str(i) ', n )']) ;
于 2013-09-25T17:03:25.013 回答