我是靠谱客的博主 殷勤画板,这篇文章主要介绍分式规划和波束成形(MATLAB代码)Dinkelbach_type_algorthm,现在分享给大家,希望可以做个参考。

复制代码
1
2

Dinkelbach_type_algorthm

复制代码
1
2
复制代码
1
2
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
q1=20 q2=30 q3=35 q4=28 N=4 m=4 k=1 h=abs(rand(N,m+2)) g=abs(rand(N,m+2)) v=abs(randn(N,1,k)) x=abs(randn(N,m,k)) t2=1 while t2~=0 for i=1:m temp0=0 for j=1:m if i==j continue else s=temp0+h(:,i)'*x(:,j,k)*x(:,j,k)'*h(:,i) temp0=s end end u(i)=(-h(:,i)'*x(:,i,k)*x(:,i,k)'*h(:,i))/(s+g(:,i)'*v(:,:,k)*v(:,:,k)'*g(:,i)) end u_value(k)=max(u) cvx_begin sdp variable W(N,N,m+1) complex hermitian variable V(N,N) complex hermitian variable t minimize t; subject to; temp1=0 for i=1:m+1 s1=trace(W(:,:,i))+temp1 temp1=s1 W(:,:,i) == hermitian_semidefinite(N) end temp1<=q1 %信息发射端的功率小于q1 trace(V(:,:))<=q2 V == hermitian_semidefinite(N) %是半定矩阵 temp2=0 for i=1:m+1 s2= trace( h(:,4)'*W(:,:,i)*h(:,4))+temp2 temp2=s2 end temp2+trace(g(:,4)'*V(:,:)*g(:,4))>=q3 temp3=0 for i=1:m+1 s3= trace(h(:,5)'*W(:,:,i)*h(:,5))+temp3 temp3=s3 end temp3+trace(g(:,5)'*V(:,:)*g(:,5))<=q4 for i=1:m temp5=0 for j=1:m if i==j continue else s2=-h(:,i)'*W(:,:,j)*h(:,i)+temp5 temp5=s2 end end trace(s2*u_value(k))-trace(h(:,i)'*W(:,:,i)*h(:,i))-trace(g(:,i)'*V(:,:)*g(:,i)*u_value(k))<=t end cvx_end mine(k)=cvx_optval k=k+1 for i=1:m for j=1:N a(j)=sqrt(W(j,j,i)) end b(:,i)=a' end x(:,:,k)=b for i=1:N c(i)=sqrt(V(i,i)) end v(:,:,k)=c' t2(k-1)=-cvx_optval if k<=18 continue else break end end

对原问题进行一点改进:

Dinkelbach_type_2algorthm

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
q1=20 q2=30 q3=35 q4=28 N=4 m=4 k=1 h=abs(rand(N,m+2)) g=abs(rand(N,m+2)) v=abs(randn(N,1,k)) x=abs(randn(N,m,k)) t2=1 while t2~=0 for i=1:m temp0=0 for j=1:m if i==j continue else s=temp0+h(:,i)'*x(:,j,k)*x(:,j,k)'*h(:,i) temp0=s end end u(i)=(-h(:,i)'*x(:,i,k)*x(:,i,k)'*h(:,i))/(s+g(:,i)'*v(:,:,k)*v(:,:,k)'*g(:,i)) end u_value(k)=max(u) cvx_begin sdp variable W(N,N,m+1) complex hermitian variable V(N,N) complex hermitian variable t minimize t; subject to; temp1=0 for i=1:m+1 s1=trace(W(:,:,i))+temp1 temp1=s1 W(:,:,i) == hermitian_semidefinite(N) end temp1<=q1 %信息发射端的功率小于q1 trace(V(:,:))<=q2 V == hermitian_semidefinite(N) %是半定矩阵 temp2=0 for i=1:m+1 s2= trace( h(:,4)'*W(:,:,i)*h(:,4))+temp2 temp2=s2 end temp2+trace(g(:,4)'*V(:,:)*g(:,4))>=q3 temp3=0 for i=1:m+1 s3= trace(h(:,5)'*W(:,:,i)*h(:,5))+temp3 temp3=s3 end temp3+trace(g(:,5)'*V(:,:)*g(:,5))<=q4 for i=1:m temp4=0 temp5=0 for j=1:m if i==j continue else s1=temp4+h(:,i)'*x(:,j,k)*x(:,j,k)'*h(:,i) temp4=s1 s2=-h(:,i)'*W(:,:,j)*h(:,i)+temp5 temp5=s2 end end trace(s2*u_value(k))-trace(h(:,i)'*W(:,:,i)*h(:,i))-trace(g(:,i)'*V(:,:)*g(:,i)*u_value(k))<=trace((s1+g(:,i)'*v(:,:,k)*v(:,:,k)'*g(:,i)))*t end cvx_end mine(k)=cvx_optval k=k+1 for i=1:m for j=1:N a(j)=sqrt(W(j,j,i)) end b(:,i)=a' end x(:,:,k)=b for i=1:N c(i)=sqrt(V(i,i)) end v(:,:,k)=c' t2(k-1)=-cvx_optval if k<=18 continue else break end end


最后

以上就是殷勤画板最近收集整理的关于分式规划和波束成形(MATLAB代码)Dinkelbach_type_algorthm的全部内容,更多相关分式规划和波束成形(MATLAB代码)Dinkelbach_type_algorthm内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(142)

评论列表共有 0 条评论

立即
投稿
返回
顶部