problem of matrix operations

1 view (last 30 days)
mahesh chathuranga
mahesh chathuranga on 30 Sep 2013
Edited: Andrei Bobrov on 3 Oct 2013
i have a n*n matrix. i want to obtain (row number-column number) matrix.for a 4*4 matrix result should be
[0 -1 -2 -3;
1 0 -1 -2;
2 1 0 -1;
3 2 1 0];
i want to do this for any (n*n) matrix.is there any method to do this.

Accepted Answer

Honglei Chen
Honglei Chen on 30 Sep 2013
You can do
rownumber = 4
colnumber = 4
bsxfun(@minus,(1:rownumber)',1:colnumber)
Or considering the special form of this matrix, you can just do
toeplitz((0:rownumber-1)',0:-1:-colnumber+1)

More Answers (2)

Azzi Abdelmalek
Azzi Abdelmalek on 30 Sep 2013
a=rand(4) % Example
n=size(a,1)
bsxfun(@minus,repmat((1:n)',1,n),(1:n))

Andrei Bobrov
Andrei Bobrov on 30 Sep 2013
Edited: Andrei Bobrov on 3 Oct 2013
toeplitz(0:3,-(0:3))

Categories

Find more on Resizing and Reshaping Matrices in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!