问题遇到的现象和发生背景
编写代码时,提示用于矩阵乘法的维度不正确,但是我检查了矩阵的维度,保第一个矩阵中的列数与第二个矩阵中的行数匹配,不知道问题出在了哪里
问题相关代码,请勿粘贴截图
%% step2:优化预编码向量Wx和人工噪声协方差Zx
S3=[h_I3.',eye(M_irs)].'; %转置是.',共轭转置是'
S4=[h_I4.',eye(M_irs)].';
%% 对于任何可行点W1t,W2t,Zxt
M1=h_BI'*theta0'*(h_I1'*h_I1)*theta0*h_BI;
M2=h_BI'*theta0'*(h_I2'*h_I2)*theta0*h_BI;
W1t=eye(Nt,Nt);
W2t=eye(Nt,Nt);
Zxt=eye(Nt,Nt);
cvx_begin sdp
variables W1x(Nt,Nt) W2x(Nt,Nt)
variable Zx(Nt,Nt) complex semidefinite
variable p13 nonnegative
variable p23 nonnegative
variable p14 nonnegative
variable p24 nonnegative
obj=-log(real(trace(Zx*M1))+sigmak^2+real(trace(M1*W1x))+real(trace(M1*W2x)))-log(real(trace(Zx*M2))+sigmak^2+real(trace(M2*W1x)))+real(trace(M2*W2x))-real(trace((-(1/log(2))*(M1/real((trace(Zxt*M1))+sigmak^2+real(trace(M1*W2t)))+M2/(real(trace(Zxt*M2))+sigmak^2+real(trace(M2*W1t)))))'*Zx))-real(trace((-(1/log(2))*M2/(real(trace(Zxt*M2))+sigmak^2+real(trace(M2*W1t))))'*W1x))-real(trace((-(1/log(2))*M1/real((trace(Zxt*M1))+sigmak^2+real(trace(M1*W2t))))'*W2x))-re;
minimize obj
subject to
trace(W1x)+trace(Zx)<=P;
trace(W2x)+trace(Zx)<=P;
[sigmak^2*(2^(re)-1)-p13,zeros(1,M_irs);zeros(M_irs,1),p13*epsilong_e^(-2)*eye(M_irs)]+S3*theta0*h_BI*((2^(re)-1)*Zx-W1x)*h_BI'*theta0'*S3'>=0;
%矩阵维度:前面是(M_irs+1)*(M_irs+1)的矩阵;S3是(M_irs+1)*(M_irs);theta0是(M_irs)*(M_irs);h_BI是(M_irs)*16;Zx,W1x是16*16;
Zx>=0;
W1x>=0;
W2x>=0;
cvx_end
运行结果及报错内容
提示这句:[sigmak^2*(2^(re)-1)-p13,zeros(1,M_irs);zeros(M_irs,1),p13epsilong_e^(-2)eye(M_irs)]+S3theta0h_BI*((2^(re)-1)*Zx-W1x)*h_BI'*theta0'S3'>=0;
错误使用 *
用于矩阵乘法的维度不正确。请检查并确保第一个矩阵中的列数与第二个矩阵中的行数匹配。要执行按元素相乘,请使用 '.'。
我的解答思路和尝试过的方法
这是工作区的值
我想要达到的结果
不报错