Matlab基于数组填充零点matric

时间:2017-05-22 10:57:56

标签: arrays matlab matrix

所以我有这个数据

F =

     1
     1
     2
     3
     1
     2
     1
     1

和zeros matric

NM =

     0     0     0
     0     0     0
     0     0     0

我有规则,从每个变量的数组make连接的lis,连接应该是F数据

1&1, 1&2, 2&3, 3&1, 1&2, 2&1, 1&1

每个连接表示NM matric上的列和行值,如果有连接,则值必须为+1

所以从新的matric上面的连接应该是

NNM=
2 2 0
1 0 1
1 0 0

我试图像这样编码

[G H]=size(NM)
    for i=1:G
        j=2:G
        if F(i)==A(j)
            (NM(i,j))+1
        else
            NM(i,j)=0
        end
    end
    NNM=NM

但NM matric没有变化? 我该怎么办?

3 个答案:

答案 0 :(得分:2)

这就是你想要做的事情

F = [1 1 2 3 1 2 1 1];

NM = zeros(3, 3);

for i=1:(numel(F)-1)
    NM(F(i), F(i+1))=NM(F(i), F(i+1))+1;
end

答案 1 :(得分:2)

您可以按如下方式使用sparse(然后转换为full):

NM = full(sparse(F(1:end-1), F(2:end), 1));

答案 2 :(得分:0)

list = [1 1 ; 1 2 ; 2 3 ; 3 1 ; 1 2 ; 2 1 ; 1 1 ] ;
[nx,ny] = size(list) ;
NM = zeros(3) ;
for i = 1:nx
    for j = 1:ny
        NM(list(i,1),list(i,2)) = NM(list(i,1),list(i,2)) + 1/2 ;
    end
end