gusucode.com > 非线性BD-GMD均分功率用户排序误码率源码程序 > 非线性BD-GMD均分功率用户排序误码率源码程序/code/gmd_zcy_streamreduce.m

    % Matlab implementation of the "Geometric Mean Decomposition"
% version of Hager, December 3, 2003
% slightly modified by Yi, April 19, 2004
% Copyright 2003, University of Florida, Gainesville, Florida
% 
%A = U*S*V' is the singular value decomposition of A
%           U, V unitary, S diagonal matrix with nonnegative
%           diagonal entries in decreasing order
%  = Q*R*P' is the geometric mean decomposition of A
%           P, Q unitary, R real upper triangular with r_ii =
%           geometric mean of the positive singular values of A,
%           1 <= i <= p, p = number of positive singular values
% All singular values smaller than tol treated as zero

function [Q1, R1, P1] = gmd_zcy_streamreduce (h,streamnum)
%reducednum为减少流数,小于等于h的行数,减少后的流数不小于2
%"Uesr order and subchannel selection for power minimization in mimo broadcast channels using BD-GMD"
[m n]=size(h);
if streamnum==m
    [Q1 R1 P1]=gmd_zcy(h);
else
[U,S,V]=svd(h);
T1=[eye(m,m);zeros(n-m,m)];
S=S*T1;
V=V*T1;

[u s v]=gmd_zcy(S(1:streamnum,1:streamnum));
Q1=U(:,1:streamnum)*u;
R1=s;
P1=V(:,1:streamnum)*v;

end