loop doesn't work
Mostrar comentarios más antiguos
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 comentarios
Walter Roberson
el 12 de Feb. de 2021
Your kk is not sequential so your for j=kk is not using sequential numbers, so your C02_CB(j) is not going to write to sequential locations.
It is not clear from your code what e11 and e21 are really supposed to represent. These lines,
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;
are equivalent to the single line of code
Co2_CB(j)=sum(Q(:,r:q),'all')
So, the partitioning into e11 and e21 is inconsequential in what you have posted for us thus far.
Victoria Pake
el 12 de Feb. de 2021
But if e11_j is the total emission from the j-th country and e21_j is the total emission from every other country, then the sum e11_j+e21_j will simply be the total emission from all countries. There is no real j-dependence in e11_j+e21_j .
Victoria Pake
el 12 de Feb. de 2021
Victoria Pake
el 12 de Feb. de 2021
Respuesta aceptada
Más respuestas (0)
Categorías
Más información sobre Loops and Conditional Statements en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!