loop doesn't work

조회 수: 3 (최근 30일)
Victoria Pake
Victoria Pake 2021년 2월 12일
댓글: Victoria Pake 2021년 2월 12일
Hello People :),
I have a 2464x220 matrix with 44 countries represented by 56 rows each and 5 columns each. I want to do some matrix mulitplication and sum the co2 emissions e11 +e21 in the end, but it calculates 44 times the same number(which is correct, but just for 1 country ) . It just gives me the first countries number and repeats it although i am trying to tell matlab to calcluate it for 44 different countries. I did the following:
kk=1:56:2464;
yy=1:5:220;
Co2_CB=ones([44,1]);
for j=kk
v=j+55;
r=yy;
q=r+4;
e11_j=sum(Q(j:v,r:q),'all');
e21_j=Q(1:2464,r:q);
e21_j(j:v,:)=[];
e21_j=sum(e21_j,'all');
Co2_CB(j)=e11_j+e21_j;
end
Co2_CB(Co2_CB==0)=[];
Co2_CB(Co2_CB==1)=[];
I dont understandt why matlab does not calculates the other 43 numbers.
Thanks in advance
  댓글 수: 6
Victoria Pake
Victoria Pake 2021년 2월 12일
it worked now, it was somethin with the sequence
Victoria Pake
Victoria Pake 2021년 2월 12일
thanks all of you

댓글을 달려면 로그인하십시오.

채택된 답변

Matt J
Matt J 2021년 2월 12일
편집: Matt J 2021년 2월 12일
Note that you can use sepblockfun
to do blockwise summation over the 56x5 sub-tiles of Q.
E11=sepblockfun(Q,[56,5],'sum')
This might make it easier to see how to get the restof what you want.
  댓글 수: 1
Victoria Pake
Victoria Pake 2021년 2월 12일
Hey Matt,
Thanks for your anwser, but i think the main problem is the e21, because i did a different method and it worked:
tt=1:56:2464;
pp=1:5:220;
Co2_PB=ones([44,1]);
for i=tt;
o=i+55;
p=pp;
q=p+4;
e11_j=sum(Q(i:o,p:q),'all');
e12_i=sum(Q(i:o,1:220));
e12_i(:,p:q)=[];
e12=sum(e12_i,'all');
Co2_PB(i)=sum(e11_j+e12,'all');
end
Co2_PB(Co2_PB==0)=[];
Co2_PB(Co2_PB==1)=[];
since the e11 is the same under both methods, i dont get what the problem is.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 MATLAB에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by