I have to create a function in Matlab that given a parameter N, it returns the N-by-N identity matrix. I cannot use loops, nor built-in functions like eye or diag. I have tried the following:
function I = identity( n )
I = zeros( n,n );
p = [1:n;1:n]';
I( p ) = 1;
end
But, when I call it with I = identity(3); I obtain the following result:
I =
1 0 0
1 0 0
1 0 0
And I don't understand why, because I thought Matlab could use a vector as a matrix index, and the way I did it, I have that:
p =
1 1
2 2
3 3
So when I do I( p ) = 1, the first step should be I( 1,1 ) = 1 then I( 2,2 ) = 1 and so on. What am I not seeing?