答案 0 :(得分:4)
要索引元素,可以使用blkdiag
创建相应的蒙版。
%your parameters
n=2
j=4
%some example matrix
M=magic(n*j);
%create the input for blkdiag, j matrices of size n
h=repmat({true(n)},j,1)
%use blkdiag to select the elements
M(logical(blkdiag(h{:})))
答案 1 :(得分:1)
对于大j,@ Daniel的答案变慢。相反,我建议使用块对角线的线性索引。
n=2;
j=4;
%some example matrix
M=magic(n*j);
linIndices = (0:n*((n*j)+1):n*((n*j)+1)*(j-1))+reshape((1:n)'+n*j*(0:n-1),[],1);
newM = reshape(M(linIndices),n,n,[]);