我有一个矩阵,我想将它分成更小的部分一步一步。在第一步中,它本身就是一个1 by 1
矩阵,在第二步中将其分成四个子矩阵,2 by 2
矩阵,下一步将其分为16个子矩阵,4 by 4
矩阵等。快速四叉树构造,matlab中的矩阵分割
我的矩阵用的2
n和功率N如何我能做到这一点,根据步骤我在和一个快速的方法?
这是我写的代码,但效率不够高。
function [A,B] = qtree(X,K,N,l)
L = log2(N);
wx = (size(X,1))/(2^l);
wk = (size(K,1))/(2^(L-l));
for n=1:2^l
m (n,:) = (n-1)*wx+1:n*wx ;
end
for n=1:2^(L-l)
mm (n,:) = (n-1)*wk+1:n*wk ;
end
% the ordering is like MATLAB, from top to bottom and left to right
k=1;
for i = 1:size(m,1)
for j= 1:size(m,1)
A(:,:,k) = X(m(j,:),m(i,:));
k = k+1;
end
end
kk=1;
for i = 1:size(mm,1)
for j= 1:size(mm,1)
B(:,:,kk) = K(mm(j,:),mm(i,:));
kk = kk+1;
end
end
你能否描述一下你的算法并且定义你所说的级别? – Dan 2014-10-28 13:03:52
@丹我已编辑它。 – 2014-10-28 13:24:54
不要删除你的代码!你的矩阵也保证是* n * -by- * n *,其中* n *是2的幂。 – Dan 2014-10-28 14:05:34