2 variable for-loop

조회 수: 5 (최근 30일)
mehra
mehra 2019년 11월 4일
댓글: mehra 2019년 11월 4일
hello
I have the following code which I want to write it as a two variable for loop, Apparently I am making mistake that it gives the same values for all elements of results matrix
TKE_dave is a 19000*13 matrix
and
tp =[4833 6499 8165 9831 11497 13163 14829 16495 18161]
TKE_ave1=TKE_dave(:,1);
TKE_avep1=zeros(8,1);
for m=1:8
TKE_avep1(m,1)=nanmean(TKE_ave1(tp(m):tp(m+1)));
end
TKE_ave2=TKE_dave(:,2);
TKE_avep2=zeros(8,1);
for m=1:8
TKE_avep2(m,1)=nanmean(TKE_ave2(tp(m):tp(m+1)));
end
TKE_ave3=TKE_dave(:,3);
TKE_avep3=zeros(8,1);
for m=1:8
TKE_avep3(m,1)=nanmean(TKE_ave3(tp(m):tp(m+1)));
end
TKE_ave4=TKE_dave(:,4);
TKE_avep4=zeros(8,1);
for m=1:8
TKE_avep4(m,1)=nanmean(TKE_ave4(tp(m):tp(m+1)));
end
TKE_ave5=TKE_dave(:,5);
TKE_avep5=zeros(8,1);
for m=1:8
TKE_avep5(m,1)=nanmean(TKE_ave5(tp(m):tp(m+1)));
end
TKE_ave6=TKE_dave(:,6);
TKE_avep6=zeros(8,1);
for m=1:8
TKE_avep6(m,1)=nanmean(TKE_ave6(tp(m):tp(m+1)));
end
TKE_ave7=TKE_dave(:,7);
TKE_avep7=zeros(8,1);
for m=1:8
TKE_avep7(m,1)=nanmean(TKE_ave7(tp(m):tp(m+1)));
end
TKE_ave8=TKE_dave(:,8);
TKE_avep8=zeros(8,1);
for m=1:8
TKE_avep8(m,1)=nanmean(TKE_ave8(tp(m):tp(m+1)));
end
TKE_ave9=TKE_dave(:,9);
TKE_avep9=zeros(8,1);
for m=1:8
TKE_avep9(m,1)=nanmean(TKE_ave9(tp(m):tp(m+1)));
end
TKE_ave10=TKE_dave(:,10);
TKE_avep10=zeros(8,1);
for m=1:8
TKE_avep10(m,1)=nanmean(TKE_ave10(tp(m):tp(m+1)));
end
TKE_ave11=TKE_dave(:,11);
TKE_avep11=zeros(8,1);
for m=1:8
TKE_avep11(m,1)=nanmean(TKE_ave11(tp(m):tp(m+1)));
end
TKE_ave12=TKE_dave(:,12);
TKE_avep12=zeros(8,1);
for m=1:8
TKE_avep12(m,1)=nanmean(TKE_ave12(tp(m):tp(m+1)));
end
TKE_ave13=TKE_dave(:,13);
TKE_avep13=zeros(8,1);
for m=1:8
TKE_avep13(m,1)=nanmean(TKE_ave13(tp(m):tp(m+1)));
end
I tried to make it shorter and write it as the following two variable for-loop and for that I learend that I have to define a temporary matrix so I defined test matrix which is the same as TKE_dave actually
TKE_avep=zeros(8,13);
test=zeros(19000,13);
for m=1:8;
for ss=1:13;
test(:,ss)=TKE_dave(:,ss);
TKE_avep(m,ss)=nanmean(test(tp(m):tp(m+1)));
end
end
but it gives the same values for all the elemants of the result matrix.
can someone help me where is my mistake?

채택된 답변

Bob Thompson
Bob Thompson 2019년 11월 4일
The issue is with your definition of test. Nested for loops are totally fine.
test(:,ss)=TKE_dave(:,ss);
On your last loop test and TKE_dave will be the same matrix, whereas in your individual loops it is only each column. Replace test(:,ss) with just test.
  댓글 수: 1
mehra
mehra 2019년 11월 4일
Thanks Bob

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

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by