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);