hongyu.. 2022-02-21 04:16 采纳率: 100%
浏览 2572
已结题

matlab用于矩阵乘法的维度不正确

问题遇到的现象和发生背景

编写代码时,提示用于矩阵乘法的维度不正确,但是我检查了矩阵的维度,保第一个矩阵中的列数与第二个矩阵中的行数匹配,不知道问题出在了哪里

问题相关代码,请勿粘贴截图
%% 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;
错误使用 *
用于矩阵乘法的维度不正确。请检查并确保第一个矩阵中的列数与第二个矩阵中的行数匹配。要执行按元素相乘,请使用 '.
'。

我的解答思路和尝试过的方法

这是工作区的值

img

img

我想要达到的结果

不报错

展开全部

  • 写回答

2条回答 默认 最新

  • 技术专家团-Joel 2022-02-21 07:03
    关注

    尝试一下这个

    [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)*((S3*theta0*h_BI)');
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    hongyu.. 2022-02-21 10:27

    您好,还是报同样的错误

    1
    回复
    技术专家团-Joel 回复 hongyu.. 2022-02-21 10:44

    首先运行到这一步之前,请确认

    A = [sigmak^2*(2^(re)-1)-p13,zeros(1,M_irs);
        zeros(M_irs,1),p13*epsilong_e^(-2)*eye(M_irs)];
    [mA, nA] = size(A)
    B1 = S3*theta0*h_BI;
    [mB1, nB1] = size(B1)
    B2 = ((2^(re)-1)*Zx-W1x);
    [mB2, nB2] = size(B2)
    

    看看输出的是什么。

    回复
    hongyu.. 回复 技术专家团-Joel 2022-02-22 02:54

    您好,输出的维度是
    A = [sigmak^2*(2^(re)-1)-p13,zeros(1,M_irs);
    zeros(M_irs,1),p13epsilong_e^(-2)eye(M_irs)];
    [mA, nA] = size(A) %65 65
    B1 = S3
    theta0
    h_BI;
    [mB1, nB1] = size(B1) %65
    16
    B2 = ((2^(re)-1)Zx-W1x);
    [mB2, nB2] = size(B2) %16
    16

    回复
    展开全部9条评论
查看更多回答(1条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 3月7日
  • 已采纳回答 2月28日
  • 创建了问题 2月21日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部