MATLAB:循环中的新变量/变量名称

MATLAB:循环中的新变量/变量名称,matlab,Matlab,这可能是一个极其补救性的问题,所以我提前道歉,不过我对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); 我所要做的就是计算每个节点的出度。可以使用以

这可能是一个极其补救性的问题,所以我提前道歉,不过我对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':(

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

非常感谢,


Owen

您需要的基本上是一个数组,谢天谢地,matlab在这方面做得很好,您可以简单地使用
O(i)
,但最好先初始化:
O=0(大小(D,2),1)


也就是说,在这种情况下,您真正需要的是函数:
O=sum(D,2)
,这里
O(i)
将是节点的出度
i

假设您希望matlab将“O_i”作为变量,您希望将“O_i”格式化为“i”作为更改变量。在存储变量之前,您可以使用以下命令创建变量名。即

eval(['O' num2str(i) ' = O (' num2str(i) ', n )']) ;

为什么不将结果存储在数组中?重复:这个问题经常被问到,与邻接矩阵或图论无关。参见上面的重复问题,通常认为在循环中定义变量
a_i
是不好的做法,最好将所有内容都放在向量中并进行简单的索引:
a(i)
。对那里的不称职表示歉意;感谢您的帮助抱歉,您在matlab中编写的任何内容都无效。请在发布代码之前测试一行代码。