思云L 2022-02-21 21:14 采纳率: 0%
浏览 101
已结题

MATLAB无法执行赋值

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
    clc
clear all
close all
%初始化
H=50;
M=2;   %无人机数目
J=6;
K=2;
T=25;
L=50;
Vmax=30; 
Tsum=T/L;
% P0=10;
eta=0.8;
rou=10^(0.3);
deta = 10^(-12);
epsilon=10^(-4); 
Pm=0.1;%每个无人机在每个时隙下的功率·


%用户坐标
wx=[50,9,110,261,290,110,50,90,230,180,170,220];
wy=[80,117,80,110,243,20.6,175,150,170,130,230,80];

% wx = 300*rand(1,K*N);
% wy = 300*rand(1,K*N);%在200*200区域内,产生用户随机位置

w=zeros(J*K,2);
for i=1:J*K
    w(i,1)=wx(i);
    w(i,2)=wy(i);
end       %用w表示用户坐标

scatter(w(:,1),w(:,2),'r' ,'filled');
hold on

%%%%无人机位置初始化
cini=[sum(w)/(J*K)];%用户重心坐标
r_ini=0;
for i=1:J*K
    if norm(cini-w(i,:))>r_ini
        r_ini=norm(cini-w(i,:));%初始化无人机圆的半径为圆心到最远的用户距离
    end
end

Rcp= r_ini/M;%中圆半径
Ctrj1=[cini(1),cini(2)-Rcp];
Ctrj2=[cini(1),cini(2)+Rcp];
Rmax=Vmax*T/(2*pi);
Rtrj=Rcp;%小圆半径
jd=zeros(1,L);%角度
q=zeros(M,L,2);%两个无人机的坐标,三维变量,生成两个m*n的矩阵
for l=1:L
    jd(l)=2*pi*(l-1)/(L-1);
    q(1,l,:)=[Ctrj1(1)+Rtrj*cos(jd(l)),Ctrj1(2)+Rtrj*sin(jd(l))];
    q(2,l,:)=[Ctrj2(1)+Rtrj*cos(jd(l)),Ctrj2(2)+Rtrj*sin(jd(l))];
end
q0=q;

scatter(q(1,:,1),q(1,:,2),50,'b','filled');
scatter(q(2,:,1),q(2,:,2),50,'g','filled');
scatter(q(1,1,1),q(1,1,2),60,'r','filled');
scatter(q(2,1,1),q(2,1,2),60,'c','filled');
hold on;
% Rmax=Vmax*T/(2*pi);
% Rtrj=min(cini/2,Rmax);%半径
% q=zeros(L,2);
% jd=zeros(1,L);
% for l=1:L
%     jd(l)=2*pi*((l-1)/(L-1));
%     q(l,:)=[cini(1)+Rtrj*cos(jd(l)),cini(2)+Rtrj*sin(jd(l))];
% end
% q0=q;
% 
% scatter(q(:,1),q(:,2),50,'b','filled');
% hold on;

% theta(1) = 0;
% theta(L) = 2*pi;
% for l=2:L-1
%     theta(l) = 2*pi*(l-1)/(L-1);
% 
% end      %初始化时,第m时隙的角度theta(l)
% 
% for l=1:L
%     q(l,:)=[cini(1)+r_ini*cos(theta(l)),cini(2)+r_ini*sin(theta(l))];
% end   %初始化无人机轨迹的l个坐标

%初始化变量
h1=zeros(J,M,L);
% beta_0_dB=-30;%1m的衰减
beta_0_dB=-20;%单位是dB
beta_0=10^(beta_0_dB/10);

%无人机对用户的信道增益
for l=1:L   %M=2是无人机的数量
    for m=1:M
        for i=1:J*K
             d(i)=(w(i,1)-q(m,l,1))^2+(w(i,2)-q(m,l,2))^2+H^2;%无人机m与用户i在时隙n下的距离的平方
             h1(i,m,l)= (beta_0)/d(i);  %信道增益
        end
    end
end

%%--------------固定无人机轨迹,开始进行资源分配-----------------
beta_0_dB=-20;%单位是dB
beta_0=10^(beta_0_dB/10);
I=4;
deta=0.05;
for opt=1:I
    for l=1:L
        for m=1:M 
             for i=1:J*K
                 h(i)= h1(i,m,l);%信道增益
             end
        %%--------------开始分簇-----------------
        H_zuhe=zeros(15,12);
        H_zuhe=[h(1),h(2),h(3),h(4),h(5),h(6),h(7),h(8),h(9),h(10),h(11),h(12);h(1),h(2),h(3),h(5),h(4),h(6),h(7),h(8),h(9),h(11),h(10),h(12);h(1),h(2),h(3),h(6),h(4),h(5),h(7),h(8),h(9),h(12),h(10),h(11);h(1),h(3),h(2),h(4),h(5),h(6),h(7),h(9),h(8),h(10),h(11),h(12);h(1),h(3),h(2),h(5),h(4),h(6),h(7),h(9),h(8),h(11),h(10),h(12);h(1),h(3),h(2),h(6),h(5),h(4),h(7),h(9),h(8),h(12),h(10),h(11);h(1),h(4),h(2),h(3),h(5),h(6),h(7),h(10),h(8),h(9),h(11),h(12);h(1),h(4),h(2),h(5),h(3),h(6),h(7),h(10),h(8),h(11),h(9),h(12);
            h(1),h(4),h(2),h(6),h(3),h(5),h(7),h(10),h(8),h(12),h(9),h(11);h(1),h(5),h(2),h(3),h(4),h(6),h(7),h(11),h(8),h(9),h(10),h(12);h(1),h(5),h(2),h(4),h(3),h(6),h(7),h(11),h(8),h(10),h(9),h(12);h(1),h(5),h(2),h(6),h(3),h(4),h(7),h(11),h(8),h(12),h(9),h(10);h(1),h(6),h(2),h(3),h(4),h(5),h(7),h(12),h(8),h(9),h(10),h(11);h(1),h(6),h(2),h(4),h(3),h(5),h(7),h(12),h(8),h(10),h(9),h(11);h(1),h(6),h(2),h(5),h(3),h(4),h(7),h(12),h(8),h(11),h(9),h(10);];
        D=zeros(1,15);
        for js=1:15 %js为计数的意思,为与j区分
            D(js)=0;
            for ii=1:2:12           
                D(js)=D(js)+abs((H_zuhe(js,ii+1))-(H_zuhe(js,ii)));%计算15种方案的所有簇信道增益差异之和
            end
        end
        MAX=max(D);%取信道增益差异和的最大值
        W=find(D==MAX);%找到信道增益差异和最大值所对应的方案号
        LL=length(W);
        d=zeros(LL,6);
        for l=1:LL
            for ii=1:2:12
                d(l,(ii+1)/2)=abs((H_zuhe(W(l),ii+1))-(H_zuhe(W(l),ii)));%计算增益差异和最大方案对应的d1,d2,d3,d4,d5,d6,
            end
        end
        F=zeros(1,LL);
        for l=1:LL
            ff(l)=mean(d(l,:));%取d1,d2,d3,d4,d5,d6的平均值
            F(l)=((d(l,1)-ff(l))^2+(d(l,2)-ff(l))^2+(d(l,3)-ff(l))^2+(d(l,4)-ff(l))^2+(d(l,5)-ff(l))^2+(d(l,6)-ff(l))^2)/6;%计算增益差异和最大方案对应的方差
        end
        MIN=min(F);%取方差的最小值
        Y=find(F==MIN);%找到方差取最小值所对应的位置
        C=zeros(1,12);
        C=H_zuhe(W(Y),:);%得到最终选择的分簇方案
        
        CC1=[C(1),C(2)];%第一个簇中两个用户的信道增益
        CC2=[C(3),C(4)];
        CC3=[C(5),C(6)];
        CC4=[C(7),C(8)];
        CC5=[C(9),C(10)];
        CC6=[C(11),C(12)];
        C1=sort(CC1,'descend');
        C2=sort(CC2,'descend');
        C3=sort(CC3,'descend');
        C4=sort(CC4,'descend');
        C5=sort(CC5,'descend');
        C6=sort(CC6,'descend');
        hh=zeros(6,2);%存放每个用户的信道增益
        hh(1,1)=C1(1);
        hh(1,2)=C1(2);
        hh(2,1)=C2(1);
        hh(2,2)=C2(2);
        hh(3,1)=C3(1);
        hh(3,2)=C3(2);
        hh(4,1)=C4(1);
        hh(4,2)=C4(2);
        hh(5,1)=C5(1);
        hh(5,2)=C5(2);
        hh(6,1)=C6(1);
        hh(6,2)=C6(2);
        HH(:,:,L)=hh;  %HH为L个时隙下分簇后的信道增益矩阵
        
        ww(1,:,1)=w(find(h==H_zuhe(W(Y),1)),:);
        ww(2,:,1)=w(find(h==H_zuhe(W(Y),2)),:);
        ww(1,:,2)=w(find(h==H_zuhe(W(Y),3)),:);
        ww(2,:,2)=w(find(h==H_zuhe(W(Y),4)),:);
        ww(1,:,3)=w(find(h==H_zuhe(W(Y),5)),:);
        ww(2,:,3)=w(find(h==H_zuhe(W(Y),6)),:);
        ww(1,:,4)=w(find(h==H_zuhe(W(Y),7)),:);
        ww(2,:,4)=w(find(h==H_zuhe(W(Y),8)),:);
        ww(1,:,5)=w(find(h==H_zuhe(W(Y),9)),:);
        ww(2,:,5)=w(find(h==H_zuhe(W(Y),10)),:);
        ww(1,:,6)=w(find(h==H_zuhe(W(Y),11)),:);
        ww(2,:,6)=w(find(h==H_zuhe(W(Y),12)),:);   %分簇后12个用户的位置ww(n,:,j)
        end
    end
end
        
        
        %--------------分簇结束-----------------
        
        %%%%%%%%初始化调度变量

AA=zeros(J,M,L);
for l=1:L
    for m=1:M
        [value,jj]=max(hh(:,2));  %[Y,U]=max(A):返回行向量Y和U,Y向量记录A的每列的最大值,U向量记录每列最大值的行号。
        AA(jj,m,l)=1;
    end
  %%%保证同一个用户不会被分配给两个无人机
    if AA(jj,1,l)==AA(jj,2,l)
        [value,mm]=min(h(:,2));
        AA(jj,mm,l)=0;
        da=0;
        for j=1:J
            if j~=jj
                if hh(j,:)>da;
                    da=hh(j,2);
%                     jj=j;
                      jjj=j;
                end
            end
        end
%         AA(j,mm,l)=1;
         AA(jjj,mm,l)=1;
    end
end 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%
for l=1:L
    for j=1:J
        if sum(AA(j,:,l))==0;
%             R_chu(k,n)=0;
        else
            m=find(AA(j,:,l)==1);
            mm=3-m;
            jj=find(AA(:,mm,l)==1);
%             R_chu(k,n)=delta_I(n)*log2(1+P(k,n)*h(k,m,n)/(P(kk,n)*h(kk,m,n)+N0));
        end
    end
end
% for k=1:K
%     R_optimal(k)=(1/N)*sum(R_chu(k,:));
% end
% Ar=A;
Ar=AA;

% t0=ones(1,L);%初始化上下行时隙
% t1=ones(1,L);
         P=zeros(J,K,L);%初始化上行功率
        
        %%--------------开始优化时隙-----------------
        
        N0_dBm=-75; %dBm/Hz;
        N0=(10^(N0_dBm/10))*(10^(-3));
%         A=zeros(J,L);
        for j=1:J
            A(j,l)=0;
            for k=1:K 
                A(j,l)=A(j,l)+((HH(j,k,l))^2*Pm*eta)/N0;
            end
        end
        
        %二分法求得最优的T0,T1
        f=@(T0)(1/log(2))*((A(1,l)*Tsum*2)/((Tsum-T0)+A(1,l)*T0*2)+(A(2,l)*Tsum*2)/((Tsum-T0)+A(2,l)*T0*2)+(A(3,l)*Tsum*2)/((Tsum-T0)+A(3,l)*T0*2)+(A(4,l)*Tsum*2)/((Tsum-T0)+A(4,l)*T0*2)+(A(5,l)*Tsum*2)/((Tsum-T0)+A(5,l)*T0*2)+(A(6,l)*Tsum*2)/((Tsum-T0)+A(6,l)*T0*2))-(log2(1+(A(1,l)*T0*2)/(Tsum-T0))+log2(1+(A(2,l)*T0*2)/(Tsum-T0))+log2(1+(A(3,l)*T0*2)/(Tsum-T0))+log2(1+(A(4,l)*T0*2)/(Tsum-T0))+log2(1+(A(5,l)*T0*2)/(Tsum-T0))+log2(1+(A(6,l)*T0*2)/(Tsum-T0)));
        a=0.0001;
        b=Tsum-0.0001;
        g=0.00001;
        e=b-a;
        j=0;  
        while e>g
            c=(a+b)/2;
            if f(a)*f(c)<0
                b=c;
            elseif f(a)*f(c)>0
                a=c;
            else
                a=c;b=c;
            end
            e=e/2;
            j=j+1;
        end
        T0=(a+b)/2;
        T1=Tsum-T0;
        t0(l)=T0;
        t1(l)=T1;
        
         P=zeros(J,K,L);%初始化上行功率
     for l=1:L
        for j=1:J
            for k=1:K
                for m=1:M
%                   jj=find(A(:,m,l));
                  P(j,k,l)=(eta*HH(j,k,l)*Pm*t0(l))/t1(l);
                end
            end
        end
     end
        
  
    %%--------------时隙优化完毕-----------------
    
    %%%%%%%%%%优化无人机-用户调度%%%%%%%%%%%%%%
    cvx_begin
    variables s0;
    variables  AAA(J,K,L) tao(J,M,L) ;
%     expression pj,pjj;
%     expression P(J,K,L);
    
%     P=zeros(J,K,L);%初始化上行功率
     for l=1:L
        for j=1:J
            for k=1:K
% %                 for m=1:M
%                 P(j,k,l)=(eta*HH(j,k,l)*Pm*t0(l))/t1(l);
% %                 end
%             end
%             for k=1:K
                pr=0;
                pj=0;
                ii=1;
                iii=1;
                for jj=1:J
                    m=1:M
                    kk=k+1:K;
                    mm=3-m;
%                     pj=pj+P(j,kk,l);
                    pr(ii)=P(jj,kk,l);
%                      pj=sum(P(jj,kk,l).*AA(jj,mm,l));
%                     pjj=pjj+P(j,k,l);
                    pj(iii)=P(jj,k,l)*AA(jj,mm,l);
%                      pj(iii)=P(jj,k,l);
                    ii=ii+1;
                     
%                     pjj=pjj+P(jj,k,l).*AA(jj,mm,l);
                end
                 IN=sum(pr)+sum(pj)+N0;
%                 IN=pj*HH(jj,kk,l)+pjj*HH(jj,k,l)+N0;
%                 isNan( P);
                S = P(j,k,l)*HH(j,k,l);
%                 taor(j,m,l)=log(1+S*inv_pos(IN))/log(2);
                taor(j,m,l)=log(1+S/IN)/log(2);
                rou(j,m,l)=(Ar(j,m,l)+taor(j,m,l)).^2+2*(Ar(j,m,l)+taor(j,m,l)).*(AAA(jj,m,l)-Ar(j,m,l))+2*(Ar(jj,m,l)+taor(j,m,l)).*(tao(j,m,l)-taor(j,m,l));
%                 rou(k,m,n)=(Ar(k,m,n)+taor(k,m,n))^2+2*(Ar(k,m,n)+taor(k,m,n))*(AA(k,m,n)-Ar(k,m,n))+2*(Ar(k,m,n)+taor(k,m,n))*(tao(k,m,n)-taor(k,m,n));
                R0(j,m,l)=t1(l)*(rou(j,m,l)-(AAA(j,m,l)^2+tao(j,m,l)^2))/2;
            end  
             R00(j,l)=sum(R0(j,:,l));
        end      
     end

运行结果及报错内容

m =

 1     2

无法执行赋值,因为左侧和右侧的元素数目不同。

出错 cyclemotive (line 321)
pj(iii)=P(jj,k,l)*AA(jj,mm,l);

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

已经卡到这里好几天了

我想要达到的结果
  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 3月1日
    • 创建了问题 2月21日

    悬赏问题

    • ¥15 高价求中通快递查询接口
    • ¥15 解决一个加好友限制问题 或者有好的方案
    • ¥15 关于#java#的问题,请各位专家解答!
    • ¥15 急matlab编程仿真二阶震荡系统
    • ¥20 TEC-9的数据通路实验
    • ¥15 ue5 .3之前好好的现在只要是激活关卡就会崩溃
    • ¥50 MATLAB实现圆柱体容器内球形颗粒堆积
    • ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
    • ¥20 vitis-ai量化基于pytorch框架下的yolov5模型
    • ¥15 如何实现H5在QQ平台上的二次分享卡片效果?