function DvecZH = MIMO_ML_DvecZ2DvecZH(DvecZ, rows, columns); Given the derivative of vec(Z) w.r.t. to a vector param, calculate the derivative of vec(Z^H) w.r.t. param where Z has dimensions rows x columns x number of frequencies. Note: size(DvecZ, 1) = rows*columns Output parameter DvecZH = derivative of vec(Z') w.r.t. parameter vector, dimension rows*columns x dim(param) x number of frequencies where Z has dimensions rows x columns x number of frequencies Input parameter DvecZ = derivative of vec(Z) w.r.t. parameter vector, dimension rows*columns x dim(param) x number of frequencies where Z has dimensions rows x columns x number of frequencies Copyright (c) Rik Pintelon, Vrije Universiteit Brussel - dept. ELEC, November 2009 All rights reserved. Software can be used freely for non-commercial applications only.
0001 function DvecZH = MIMO_ML_DvecZ2DvecZH(DvecZ, rows, columns); 0002 % 0003 % function DvecZH = MIMO_ML_DvecZ2DvecZH(DvecZ, rows, columns); 0004 % 0005 % Given the derivative of vec(Z) w.r.t. to a vector param, calculate the derivative of vec(Z^H) w.r.t. param 0006 % where Z has dimensions rows x columns x number of frequencies. 0007 % Note: size(DvecZ, 1) = rows*columns 0008 % 0009 % Output parameter 0010 % DvecZH = derivative of vec(Z') w.r.t. parameter vector, dimension rows*columns x dim(param) x number of frequencies 0011 % where Z has dimensions rows x columns x number of frequencies 0012 % 0013 % Input parameter 0014 % DvecZ = derivative of vec(Z) w.r.t. parameter vector, dimension rows*columns x dim(param) x number of frequencies 0015 % where Z has dimensions rows x columns x number of frequencies 0016 % 0017 % 0018 % Copyright (c) Rik Pintelon, Vrije Universiteit Brussel - dept. ELEC, November 2009 0019 % All rights reserved. 0020 % Software can be used freely for non-commercial applications only. 0021 % 0022 0023 F = size(DvecZ, 3); 0024 np = size(DvecZ, 2); 0025 DvecZH = zeros(size(DvecZ)); 0026 0027 % intermediate matrix with singleton dimension to calculate DvecZH for each column of DvecZ seperately 0028 dummy = zeros(rows*columns, 1, np, F); 0029 dummy(:,1,:,:) = DvecZ; % derivative vec(Z) w.r.t. param 0030 dummy = reshape(dummy, rows, columns, np, F); % derivative Z w.r.t. param 0031 dummy = conj(permute(dummy,[2, 1, 3, 4])); % derivative Z' = Z^H w.r.t. param 0032 dummy = reshape(dummy, rows*columns, 1, np, F); % derivative vec(Z^H) w.r.t. param 0033 dummy = permute(dummy, [1, 3, 4, 2]); 0034 0035 DvecZH = dummy;