Difference
2 次查看(过去 30 天)
显示 更早的评论
I have vector A =
Columns 1 through 5
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
Columns 6 through 10
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
Columns 11 through 15
1.4602 1.4606 1.4609 1.4612 1.4615
0 0 0 0 0
0 0 0 0 0
Columns 16 through 20
1.4619 1.4622 1.4625 1.4629 1.4632
0 0 0 0 0
0 0 0 0 0
Column 21
1.4635
0
0
Why does
diff(A) =
ans =
Columns 1 through 5
0 0 0 0 0
0 0 0 0 0
Columns 6 through 10
0 0 0 0 0
0 0 0 0 0
Columns 11 through 15
-1.4602 -1.4606 -1.4609 -1.4612 -1.4615
0 0 0 0 0
Columns 16 through 20
-1.4619 -1.4622 -1.4625 -1.4629 -1.4632
0 0 0 0 0
Column 21
-1.4635
0
diff(A(1,:)) =
ans =
Columns 1 through 5
0 0 0 0 0
Columns 6 through 10
0 0 0 0 1.4602
Columns 11 through 15
0.0003 0.0003 0.0003 0.0003 0.0003
Columns 16 through 20
0.0003 0.0003 0.0003 0.0003 0.0003
give different result?
4 个评论
Daniel Shub
2011-7-23
of course it did because you are not reading the documentation of diff. The [] is important. The first argument to diff is the matrix, the second is the order of the difference. You want this to be 1, which is the default so [] works or you could use 1. The third argument is the dimension over which to take the difference. Since you want the difference across rows, you want 2. Grab a pencil and paper and see which one you want.
采纳的回答
Daniel Shub
2011-7-23
If I remember correctly, diff works across the first non-singleton dimension. So diff(A) works across columns and diff(A(1, :)) works across rows.
x = [1,2,3; 4,5,6];
diff(x, [], 1)
ans =
3 3 3
diff(x, [], 2)
ans =
1 1
1 1
0 个评论
更多回答(1 个)
另请参阅
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!