Matlab:矩阵的操作和存储

Matlab:矩阵的操作和存储,matlab,matrix,Matlab,Matrix,如何将位置的所有值指定给新变量 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

如何将位置的所有值指定给新变量

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
结果: =

差不多 位置= 1. 2. 3. 4. 5. 6. 7. 8. 9 10 11 十二,


对于代码中的i

来说,同样的事情,你总是会有
c=position
,所以一个必须是多余的。在循环结束时,您可以通过执行
S(:,1)
来提取
position
的值,这将给出
S
的第一列。同样,您可以通过执行
S(:,2)
来获得
i
的值。这就是你想要的吗?

我想你可以通过以下方法来避免很多悲伤:


将分别将非零元素的
(i,j)
位置放置在
i
j
中,其值位于
V
中。如果您确实需要
位置
向量,您可以使用
位置=1:length(V)创建它

是否要提取
S
的第一列?只需执行
position=S(:,1)
 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
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);