Suppose I have a matrix mxn A.Is there a way to create a matrix B , a (nxm) xn whose “diagonal” is formed by columns A ?
mxn
B
(nxm) xn
A
Example:
A = [1 2; 3 4] B = [1 0; 3 0; 0 2; 0 4]
Here is a way:
mat2cell
blkdiag
the code:
A = [1 2; 3 4]; %// example data C = mat2cell(A, size(A,1), ones(1,size(A,2))); %// step 1 B = blkdiag(C{:}); %// step 2
It creates
B = 1 0 3 0 0 2 0 4
Here is a short script to execute this. It works for any A. measurements.
A=[1 2; 3 4]; [RC] = size(A); for i=1:C B( 1+R*(i-1) : R*i , i ) = A(:,i); end