MATLAB: Obtaining an updated diagonal Matrices

MATLABmatricesmatrixmatrix manipulation

Good day everyone. Pls, can someone assist on generating a diagonal matrices from each row of a random matrix as: M=rand(N,2) where N=20 iterations =300 The matrices i want to generate, at first is, for iter=1:iterations for i=1:N generate a diagonal matrices of 2×2 from M i.e 20 diagonal matrices of size 2×2.
for the update matrices meaning the first ones are previous, so the update or current matrices should be for j=2:iterations-1 for i=1:N generate a 20 diagonal matrices of size 2×2 up to j, Let say something like P(i, ,j)=diag(, ,j) where P(i, ,j) are the current generated 20 diagonal matrices of 2×2 up to j. Thank you. Best regards,

Best Answer

N=20;
itr = 300;
i1 =...
bsxfun(@plus,bsxfun(@plus,1:4:4*N,[0;3]),reshape(0:4*N:(itr-1)*4*N,1,1,[]));
out = zeros(2,2,N,itr);
M=rand(N*itr,2);
out(i1) = M.';