problem in my matlab code 'Index in position 1 exceeds array bounds (must not exceed 1)'
    조회 수: 1 (최근 30일)
  
       이전 댓글 표시
    
Hello everyone,
please how can i solve this problem:Index in position 1 exceeds array bounds (must not exceed 1).
Error in Sphere (line 51)
           SinrC(i,j)=Pcellular(i,j)*calculate_gain(PositionsBS(1),PositionsBS(2), PositionsC(i,1),PositionsC(i,2)
           )/(Icv+Noise);
Error in GeneticAlgorithm (line 11)
    population.Chromosomes(i).fitness = obj( population.Chromosomes(i).Gene(:) );
Error in Main (line 50)
[BestChrom]  = GeneticAlgorithm (M , N, MaxGen , Pc, Pm , Er , Problem.obj , visualization).
This is the code where i have SinrC(i,j):
throughputC=zeros(C);
  SinrC=zeros(C,RB);
for i=1:C
    Icv=0;
     for j=1:RB
                if binc(i,j)==1  
           for v=1:V   
           if binv(v,j)==1
           Icv=Icv+Pv(v,j)*calculate_gain(PositionsBS(1),PositionsBS(2), PositionsV(v,1),PositionsV(v,2) );
           end
           end
           SinrC(i,j)=Pcellular(i,j)*calculate_gain(PositionsBS(1),PositionsBS(2), PositionsC(i,1),PositionsC(i,2) )/(Icv+Noise);
            throughputC(i)=  throughputC(i)+W*log2(1+ SinrC(i,j));
                end
     end
댓글 수: 4
답변 (2개)
  Walter Roberson
      
      
 2019년 8월 29일
        You define PositionsC as a row vector but you access it as a column vector.
댓글 수: 4
  Walter Roberson
      
      
 2019년 8월 29일
				c=a+b does not appear in the code you posted, so we can only make guesses about it.
One of my guesses is that you are using R2018a or earlier.
  brahmi ibtissem
 2019년 8월 29일
        댓글 수: 2
  Walter Roberson
      
      
 2019년 8월 29일
				Fishing through your postings as you do not show all of your code in one place, we see the lines
C=2;
V=3;
throughputC=zeros(C);
throughputV=zeros(V);
So throughputC is 2 x 2 and sum(throughputC) would be 1 x 2. Meanwhile throughputV is 3 x 3, and sum(throughputV) would be 1 x 3. You cannot add a 1 x 2 vector and a 1 x 3 vector.
I refer back to my first response,
I note by the way that you refer to throughputC(i) with a single subscript, after having defined throughputC=zeros(C ) . zeros(C ) defines a CxC matrix, equivalent to zeros(C,C) . This would not cause any problem in the part of the code you posted, but could potentially cause a problem in other parts of your code.
If you want a 1 x C vector, then you should be using zeros(1,C) not zeros(C )
참고 항목
카테고리
				Help Center 및 File Exchange에서 Matrix Indexing에 대해 자세히 알아보기
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


