0

如何将所有位置值分配给一个新变量?

A = [ -1   0  -2   0   0
       2   8   0   1   0
       0   0   3   0  -2
       0  -3   2   0   0
       1   2   0   0  -4];

  a=size(A);
  b=size(A);
  c=0;
  position=0;
  for i=1:a 
      for j=1:b 
          if A(i,j) ~=0
              c=c+1;
              position=position+1;
              S(c,:)=[position,i,j,A(i,j)];
          end
      end
  end

结果:S =

 1     1     1    -1
 2     1     3    -2
 3     2     1     2
 4     2     2     8
 5     2     4     1
 6     3     3     3
 7     3     5    -2
 8     4     2    -3
 9     4     3     2
10     5     1     1
11     5     2     2
12     5     5    -4

类似位置= 1 2 3 4 5 6 7 8 9 10 11 12

我也一样

4

2 回答 2

2

我认为您可以使用以下find功能为自己省去很多麻烦:

A = [ -1   0  -2   0   0
       2   8   0   1   0
       0   0   3   0  -2
       0  -3   2   0   0
       1   2   0   0  -4];

[I,J,V] = find(A);

将in和(i,j)的非零元素的位置分别与 in 的值一起放置。如果你真的想要向量,你可以用.IJVpositionposition = 1:length(V);

于 2013-10-29T00:11:11.093 回答
0

在你的代码中,你总是有c=position,所以必须是多余的。在循环结束时,您可以提取 的值,方法positionS(:,1)给出 的第一列S。同样,您可以i通过做得到 的值S(:,2)。那是你要找的吗?

于 2013-10-28T23:59:29.677 回答