I'm trying to realise the following Octave command in MATLAB:
M = eye(x)(y,:);
x
is just a number (in my example 10
) and y
is a vector (here 8x1):
y = [1 3 4 5 7 10 9 10];
The Octave command would generate:
M =
1 0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0
0 0 0 1 0 0 0 0 0 0
0 0 0 0 1 0 0 0 0 0
0 0 0 0 0 0 1 0 0 0
0 0 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0 1 0
0 0 0 0 0 0 0 0 0 1
The ones are kept very near to the diagonal.
The nearest I came with MATLAB is with the following commands:
n = size(y,1);
Y = eye(n, x);
but it would generate something still different. If the difference between rows and columns gets bigger, it would be very different.
M =
1 0 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0
0 0 0 1 0 0 0 0 0 0
0 0 0 0 1 0 0 0 0 0
0 0 0 0 0 1 0 0 0 0
0 0 0 0 0 0 1 0 0 0
0 0 0 0 0 0 0 1 0 0
How could I get the first matrix with MATLAB?