无线携能通信网络在多用户接收用户时的波束成形优化代码
2017-11-28 19:54
357 查看
clear all clc for j=1:50 q1 = 20; q2 = 30; q3 = 15; q4 = 5; sigma_sq = 1; W(:,:,1) = eye(2); W(:,:,2) = eye(2); V = eye(2); h1 = complex(randn(2,1),randn(2,1)); h2 = complex(randn(2,1),randn(2,1)); h3 = complex(randn(2,1),randn(2,1)); h4 = complex(randn(2,1),randn(2,1)); g1 = complex(randn(2,1),randn(2,1)); g2 = complex(randn(2,1),randn(2,1)); g3 = complex(randn(2,1),randn(2,1)); g4 = complex(randn(2,1),randn(2,1)); t = -1; minus_SINR1 = -h1'*W(:,:,1)*h1/(h1'*W(:,:,2)*h1+g1'*V*g1+sigma_sq); minus_SINR2 = -h2'*W(:,:,2)*h2/(h2'*W(:,:,1)*h2+g2'*V*g2+sigma_sq); u1 = max(minus_SINR1,minus_SINR2); k = 1; while abs(t) >= 1e-3 cvx_begin sdp variable W(2,2,2) complex hermitian variable V(2,2) complex hermitian variable t minimize t; subject to trace( W(:,:,1)+W(:,:,2) ) <= q1; % information power constraint trace(V) <= q2; % energy power constraints W(:,:,1) == hermitian_semidefinite(2); W(:,:,2) == hermitian_semidefinite(2); V == hermitian_semidefinite(2); real( h3'*( W(:,:,1)+W(:,:,2) )*h3 + g3'*V*g3 ) >= q3; % EH constraint imag( h3'*( W(:,:,1)+W(:,:,2) )*h3 + g3'*V*g3 ) == 0; real( h4'*( W(:,:,1)+W(:,:,2) )*h4 + g4'*V*g4 ) <= q4; % Interference constraint imag( h4'*( W(:,:,1)+W(:,:,2) )*h4 + g4'*V*g4 ) == 0; real( - h1'*W(:,:,1)*h1 - u1*(h1'*W(:,:,2)*h1+g1'*V*g1+sigma_sq) ) <= t; % mimus_SINR for user 1 real( - h2'*W(:,:,2)*h2 - u1*(h2'*W(:,:,1)*h2+g2'*V*g2+sigma_sq) ) <= t; % minus_SINR for user 2 imag( - h1'*W(:,:,1)*h1 - u1*(h1'*W(:,:,2)*h1+g1'*V*g1+sigma_sq) ) == 0; imag( - h2'*W(:,:,2)*h2 - u1*(h2'*W(:,:,1)*h2+g2'*V*g2+sigma_sq) ) == 0; cvx_end imag(u1)==0 q(k)=real(u1) p(k) = t; if p(k) == 0 W_opt = W; V_opt = V; break; else minus_SINR1 = -h1'*W(:,:,1)*h1/(h1'*W(:,:,2)*h1+g1'*V*g1+sigma_sq); minus_SINR2 = -h2'*W(:,:,2)*h2/(h2'*W(:,:,1)*h2+g2'*V*g2+sigma_sq); u1 = max(minus_SINR1,minus_SINR2); k = k+1; end end z1(j)=u1 W(:,:,1) = eye(2); W(:,:,2) = eye(2); V = eye(2); t = -1; minus_SINR1 = -h1'*W(:,:,1)*h1/(h1'*W(:,:,2)*h1+g1'*V*g1+sigma_sq); minus_SINR2 = -h2'*W(:,:,2)*h2/(h2'*W(:,:,1)*h2+g2'*V*g2+sigma_sq); u2 = max(minus_SINR1,minus_SINR2); k = 1; g_value1 = h1'*W(:,:,2)*h1+g1'*V*g1+sigma_sq g_value2 = h2'*W(:,:,1)*h2+g2'*V*g2+sigma_sq while abs(t) >= 1e-3 cvx_begin sdp variable W(2,2,2) complex hermitian variable V(2,2) complex hermitian variable t minimize t; subject to trace( W(:,:,1)+W(:,:,2) ) <= q1; % information power constraint trace(V) <= q2; % energy power constraints W(:,:,1) == hermitian_semidefinite(2); W(:,:,2) == hermitian_semidefinite(2); V == hermitian_semidefinite(2); real( h3'*( W(:,:,1)+W(:,:,2) )*h3 + g3'*V*g3 ) >= q3; % EH constraint imag( h3'*( W(:,:,1)+W(:,:,2) )*h3 + g3'*V*g3 ) == 0; real( h4'*( W(:,:,1)+W(:,:,2) )*h4 + g4'*V*g4 ) <= q4; % Interference constraint imag( h4'*( W(:,:,1)+W(:,:,2) )*h4 + g4'*V*g4 ) == 0; real( ( - h1'*W(:,:,1)*h1 - u2*(h1'*W(:,:,2)*h1+g1'*V*g1+sigma_sq))/g_value1 ) <= t; % mimus_SINR for user 1 real( (- h2'*W(:,:,2)*h2 - u2*(h2'*W(:,:,1)*h2+g2'*V*g2+sigma_sq))/ g_value2 ) <= t; % minus_SINR for user 2 imag( ( - h1'*W(:,:,1)*h1 - u2*(h1'*W(:,:,2)*h1+g1'*V*g1+sigma_sq))/g_value1 ) == 0; imag( (- h2'*W(:,:,2)*h2 - u2*(h2'*W(:,:,1)*h2+g2'*V*g2+sigma_sq))/ g_value2 ) == 0; cvx_end imag(u2)==0 q(k)=real(u2) p(k) = t; if p(k) == 0 W_opt = W; V_opt = V; break; else minus_SINR1 = -h1'*W(:,:,1)*h1/(h1'*W(:,:,2)*h1+g1'*V*g1+sigma_sq); minus_SINR2 = -h2'*W(:,:,2)*h2/(h2'*W(:,:,1)*h2+g2'*V*g2+sigma_sq); u2 = max(minus_SINR1,minus_SINR2); k = k+1; end g_value1 = h1'*W(:,:,2)*h1+g1'*V*g1+sigma_sq; g_value2 = h2'*W(:,:,1)*h2+g2'*V*g2+sigma_sq; end z2(j)=u2 W(:,:,1) = eye(2); W(:,:,2) = eye(2); V = eye(2); t = -1; minus_SINR1 = -h1'*W(:,:,1)*h1/(h1'*W(:,:,2)*h1+sigma_sq); minus_SINR2 = -h2'*W(:,:,2)*h2/(h2'*W(:,:,1)*h2+sigma_sq); u3 = max(minus_SINR1,minus_SINR2); k = 1; while abs(t) >= 1e-3 cvx_begin sdp variable W(2,2,3) complex hermitian variable V(2,2) complex hermitian variable t minimize t; subject to trace( W(:,:,1)+W(:,:,2)+W(:,:,3) ) <= q1; % information power constraint trace(V) <= q2; % energy power constraints W(:,:,1) == hermitian_semidefinite(2); W(:,:,2) == hermitian_semidefinite(2); W(:,:,3) == hermitian_semidefinite(2); V == hermitian_semidefinite(2); real( h3'*( W(:,:,1)+W(:,:,2) + W(:,:,3))*h3 + g3'*V*g3 ) >= q3; % EH constraint imag( h3'*( W(:,:,1)+W(:,:,2) + W(:,:,3) )*h3 + g3'*V*g3 ) == 0; % real( h4'*( W(:,:,1)+W(:,:,2) )*h4 + g4'*V*g4 ) <= q4; % Interference constraint %imag( h4'*( W(:,:,1)+W(:,:,2) )*h4 + g4'*V*g4 ) == 0; real( - h1'*W(:,:,1)*h1 - u3*(h1'*W(:,:,2)*h1+sigma_sq) ) <= t; % mimus_SINR for user 1 real( - h2'*W(:,:,2)*h2 - u3*(h2'*W(:,:,1)*h2+sigma_sq) ) <= t; % minus_SINR for user 2 imag( - h1'*W(:,:,1)*h1 - u3*(h1'*W(:,:,2)*h1+sigma_sq) ) == 0; imag( - h2'*W(:,:,2)*h2 - u3*(h2'*W(:,:,1)*h2+sigma_sq) ) == 0; cvx_end imag(u3)==0 z(k)=real(u3) p(k) = t; if p(k) == 0 W_opt = W; V_opt = V; break; else minus_SINR1 = -h1'*W(:,:,1)*h1/(h1'*W(:,:,2)*h1+sigma_sq); minus_SINR2 = -h2'*W(:,:,2)*h2/(h2'*W(:,:,1)*h2+sigma_sq); u3 = max(minus_SINR1,minus_SINR2); k = k+1; end end z3(j)=u3 W(:,:,1) = eye(2); W(:,:,2) = eye(2); V = eye(2); t = -1; minus_SINR1 = -h1'*W(:,:,1)*h1/(h1'*W(:,:,2)*h1+sigma_sq); minus_SINR2 = -h2'*W(:,:,2)*h2/(h2'*W(:,:,1)*h2+sigma_sq); u4 = max(minus_SINR1,minus_SINR2); k = 1; g_value1 = h1'*W(:,:,2)*h1+sigma_sq g_value2 = h2'*W(:,:,1)*h2+sigma_sq while abs(t) >= 1e-3 cvx_begin sdp variable W(2,2,3) complex hermitian variable V(2,2) complex hermitian variable t minimize t; subject to trace( W(:,:,1)+W(:,:,2)+W(:,:,3) ) <= q1; % information power constraint trace(V) <= q2; % energy power constraints W(:,:,1) == hermitian_semidefinite(2); W(:,:,2) == hermitian_semidefinite(2); W(:,:,3) == hermitian_semidefinite(2); V == hermitian_semidefinite(2); real( h3'*( W(:,:,1)+W(:,:,2) + W(:,:,3))*h3 + g3'*V*g3 ) >= q3; % EH constraint imag( h3'*( W(:,:,1)+W(:,:,2) + W(:,:,3) )*h3 + g3'*V*g3 ) == 0; % real( h4'*( W(:,:,1)+W(:,:,2) )*h4 + g4'*V*g4 ) <= q4; % Interference constraint %imag( h4'*( W(:,:,1)+W(:,:,2) )*h4 + g4'*V*g4 ) == 0; real( ( - h1'*W(:,:,1)*h1 - u4*(h1'*W(:,:,2)*h1+sigma_sq))/g_value1 ) <= t; % mimus_SINR for user 1 real( (- h2'*W(:,:,2)*h2 - u4*(h2'*W(:,:,1)*h2+sigma_sq))/ g_value2 ) <= t; % minus_SINR for user 2 imag( ( - h1'*W(:,:,1)*h1 - u4*(h1'*W(:,:,2)*h1+sigma_sq))/g_value1 ) == 0; imag( (- h2'*W(:,:,2)*h2 - u4*(h2'*W(:,:,1)*h2+sigma_sq))/ g_value2 ) == 0; cvx_end imag(u4)==0 l(k)=real(u4) p(k) = t; if p(k) == 0 W_opt = W; V_opt = V; break; else minus_SINR1 = -h1'*W(:,:,1)*h1/(h1'*W(:,:,2)*h1+sigma_sq); minus_SINR2 = -h2'*W(:,:,2)*h2/(h2'*W(:,:,1)*h2+sigma_sq); u4 = max(minus_SINR1,minus_SINR2); k = k+1; end g_value1 = h1'*W(:,:,2)*h1+g1'*V*g1+sigma_sq; g_value2 = h2'*W(:,:,1)*h2+g2'*V*g2+sigma_sq; end z4(j)=u4 end figure; plot(1:length(z1),real(-z1),'-ro'); grid on; hold on; plot(1:length(z2),real(-z2),'-bo'); hold off; hold on; plot(1:length(z3),real(-z3),'-go'); hold off; hold on; plot(1:length(z4),real(-z4),'-mo'); hold off;
相关文章推荐
- 关于原子哥ENC28J60网络通信模块接收数据代码的一点疑惑
- 网络编程_UDP协议发送和接收数据代码优化
- 《NS2仿真实验——多媒体和无线网络通信》二手书 出售
- 无线网络-LTE (04) 通信过程之 Service Request procedure -- UE triggered SR
- 无线网络优化学习第一天
- 文件接收网络对讲机C#服务器 Android客户端(二) C#服务器代码分析
- 无线通信网络之TD网络架构
- Android网络通信的六种方式示例代码
- 电信CDMA 无线网络优化 基础知识
- CNN网络优化加速开源代码汇总
- Android网络通信的六种方式示例代码
- 无线网络通信技术完全介绍
- 实现路由器无线接收另一个路由器无线信号搭建网络
- 网络通信,收发包规则代码说明
- 无线通信网络之GSM网络架构
- 优化家庭无线网络
- 无线网络优化与安全(贡献者)
- 无线通信网络学习之GSM,TD,LTE演进篇(20141211)
- 无线通信网络学习之LTE关键技术之AMC(20141216)
- 网络通信 TCP UDP 接收数据