Matlab Diff Function with Matrices of Unequal Dimensions

Matlab Diff Function with Matrices of Unequal Dimensions

I read MATLAB diff.m readme, still couldn't figure out the following:

    a = [1 2 3]'
    b = [3 2 1 4; 1 1 1 5; 5 5 5 6]
    diff([a b]') = 
    2  -1  2
   -1   0  0
   -1   0  0
    3   4  1

what rule is MATLAB applying here? does MATLAB apply different rule if one of the matrices (i.e. a or b) is logical matrix? or both a and b are logical matrix?

2

2 Answers

MATLAB applies the same rule regardless of the input matrices. Run your code line-by-line in the command window and see.

a and b are like this:

>> a = [1 2 3]'
a =
     1
     2
     3
>> b = [3 2 1 4; 1 1 1 5; 5 5 5 6]
b =
     3     2     1     4
     1     1     1     5
     5     5     5     6

then [a b]':

>> [a b]'
ans =
     1     2     3
     3     1     5
     2     1     5
     1     1     5
     4     5     6

Now apply the diff rule on this as follows:

[ row 2 - row 1 ]
[ row 3 - row 2 ]
[ row 4 - row 3 ]
[ row 5 - row 4 ]

you will get

>> diff([a b]')
ans =
     2    -1     2
    -1     0     0
    -1     0     0
     3     4     1
a = 
[1
 2
 3]

So,

[a b] = 
[ 1 3 2 1 4
  2 1 1 1 5
  3 5 5 5 6 ]

and thus

[a b]' = 
[ 1 2 3
  3 1 5
  2 1 5
  1 1 5
  4 5 6 ]

and then diff takes the differences along the first dimension whose size is not 0 (i.e. down each column). This gives the result

diff([a b]') = 
[ 2 -1  2
 -1  0  0
 -1  0  0
  3  4  1 ].

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

James H. Sterling
Author

James H. Sterling

James Sterling reports on renewable energy developments, climate policy, ecological conservation, and green tech innovations around the globe.