Transformation matrix for matrix indices to cartesian coordinates In MatLab matrices, the indices are as follows:

(1,1) (1,2) (1,3)
(2,1) (2,2) (2,3)
(3,1) (3,2) (3,3)


This is an example 3x3 matrix. In corresponding cartesian coordinate system, the representation would be:

(-1,1) (0,1) (1,1)
(-1,0) (0,0) (1,0)
(-1,1) (0,-1) (1,-1)


Say, I have any square matrix with dimension-N, where N is odd. I need a generic transformation matrix such that I can get a vector as cartesian coordinates from matrix indices. Does such a function already exist? How should I go ahead in implementing this?

Thanks.
The transformation of indices is the following:

$$
(x,y) = f(i,j) = \left( j-\frac{n+1}{2} ,-i + \frac{n+1}{2}\right) \ .
$$

Here $i$ is the index for the rows, $j$  the one for the columns and $n$ the order of your square matrix.
clear all; clc; close all;

% % % % % % % % Create array with '1' and mark the center with '0' % % % % % % % % %
ones = ones(8,8);
ones(4,5)=2;

[x,y] = size(ones);
for i=1:x
    for j=1:y
        if ones(i,j) == 2;
            index = [i j];
        end

    end
end

newT1 = zeros(x,y);

newT1(index(1,1),index(1,2)) = 5;



[x,y] = size(ones);
for i=1:x
    for j=1:y
            A(i,j) = int2str(i)+","+int2str(j);
    end
end


c = strsplit (A(index(1,1),index(1,2)),',');

% % % % % % % % find Upper and Down limit % % % % % % % % %
uplimit= strsplit(A(1,index(1,2)),',');
dnlimit= strsplit(A(x,index(1,2)),',');

rilimit= strsplit(A(index(1,1),y),',');
lelimit= strsplit(A(index(1,1),1),',');

% % % % % % % % find how many blocks are until the end % % % % % % % % %
up = abs(str2num(c(1,1)) - str2num(uplimit(1,1)));
down = abs(str2num(c(1,1)) - str2num(dnlimit(1,1)));

right = abs(str2num(c(1,2)) - str2num(rilimit(1,2)));
left = abs(str2num(c(1,2)) - str2num(lelimit(1,2)));


% % % % % % % % Create X,Y axis of the cartesians  % % % % % % % % %
for i=1:up
    one = strsplit(A(index(1,1)-i,index(1,2)),',');
    A(index(1,1)-i,index(1,2)) = "0," + int2str(i);
end

for i=1:down
    one = strsplit(A(index(1,1)+i,index(1,2)),',');
    A(index(1,1)+i,index(1,2)) =  "0,"+int2str(-i);
end


for i=1:right
    one = strsplit(A(index(1,1),index(1,2)+i),',');
    A(index(1,1),index(1,2)+i) = int2str(i) + ",0";
end


for i=1:left
    one = strsplit(A(index(1,1),index(1,2)-i),',');
    A(index(1,1),index(1,2)-i) = int2str(-i) + ",0";
end



% % % % % % % % Complete the matrices with the values  % % % % % % % % %

 A(index(1,1),index(1,2)) = "0,0";


 for i=1:up
     for j=1:right
         A(i,y-right+j) = int2str(j) +"," +int2str(up+1-i);
     end 
 end



  for i=1:down
     for j=1:right
         A(up+i+1,y-right+j) =int2str(j)+","+int2str(0-i);
     end 
  end



for i=1:up
     for j=1:left
         A(i,j) =  int2str(-left-1+j)+","+int2str(up+1-i);
     end 
end


for i=1:down
     for j=1:left
         A(up+i+1,j) = int2str(-left-1+j)+","+int2str(0-i);
     end 
 end

A


That's my solution for MATLAB :)