这可能是一个非常有用的问题,所以我提前道歉,但是我对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':(。
有没有办法为每个循环创建一个新变量?
非常感谢,
欧文
答案 0 :(得分:0)
你想要的本质上是一个数组,谢天谢地,matlab相当不错,你可以简单地使用O(i)
,但最好首先初始化:O=zeros(size(D,2),1)
。
有人说,在这种情况下,您真正需要的是sum函数:O=sum(D,2)
,此处O(i)
将是节点i
的外度
答案 1 :(得分:-2)
假设您希望matlab将“O_i”作为变量,您希望将“O_i”格式化为“i”作为变化变量。您可以在存储变量名之前使用以下命令。即
eval(['O' num2str(i) ' = O (' num2str(i) ', n )']) ;