loop doesn't work

3 Ansichten (letzte 30 Tage)
Victoria Pake
Victoria Pake am 12 Feb. 2021
Kommentiert: Victoria Pake am 12 Feb. 2021
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 Kommentare
Victoria Pake
Victoria Pake am 12 Feb. 2021
it worked now, it was somethin with the sequence
Victoria Pake
Victoria Pake am 12 Feb. 2021
thanks all of you

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Matt J
Matt J am 12 Feb. 2021
Bearbeitet: Matt J am 12 Feb. 2021
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 Kommentar
Victoria Pake
Victoria Pake am 12 Feb. 2021
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.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu MATLAB finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by