필터 지우기
필터 지우기

Stuck using For-loops

조회 수: 2 (최근 30일)
Tyee
Tyee 2014년 3월 8일
편집: Jacques 2014년 3월 8일
I am completely new to Matlab and I am stuck. Hopefully someone will be able to help me. I'm trying to run a loop so I don't have to write repetitive lines of code. Below is a sample of my loop.
for k=0:5
count000_k = numel(xyz_values_k(xyz_values_k(:,2)>=0.000 & xyz_values_k(:,2)<0.025));
count025_k = numel(xyz_values_k(xyz_values_k(:,2)>=0.025 & xyz_values_k(:,2)<0.050));
count050_k = numel(xyz_values_k(xyz_values_k(:,2)>=0.050 & xyz_values_k(:,2)<0.075));
count075_k = numel(xyz_values_k(xyz_values_k(:,2)>=0.075 & xyz_values_k(:,2)<0.100));
count100_k = numel(xyz_values_k(xyz_values_k(:,2)>=0.100 & xyz_values_k(:,2)<0.125));
count125_k = numel(xyz_values_k(xyz_values_k(:,2)>=0.125 & xyz_values_k(:,2)<0.150));
count150_k = numel(xyz_values_k(xyz_values_k(:,2)>=0.150 & xyz_values_k(:,2)<0.175));
count175_k = numel(xyz_values_k(xyz_values_k(:,2)>=0.175 & xyz_values_k(:,2)<0.200));
count200_k = numel(xyz_values_k(xyz_values_k(:,2)>=0.200 & xyz_values_k(:,2)<0.225));
count225_k = numel(xyz_values_k(xyz_values_k(:,2)>=0.225 & xyz_values_k(:,2)<0.250));
count250_k = numel(xyz_values_k(xyz_values_k(:,2)>=0.250 & xyz_values_k(:,2)<0.275));
count275_k = numel(xyz_values_k(xyz_values_k(:,2)>=0.275 & xyz_values_k(:,2)<0.300));
count300_k = numel(xyz_values_k(xyz_values_k(:,2)>=0.300 & xyz_values_k(:,2)<0.325));
count325_k = numel(xyz_values_k(xyz_values_k(:,2)>=0.325 & xyz_values_k(:,2)<0.350));
count350_k = numel(xyz_values_k(xyz_values_k(:,2)>=0.350 & xyz_values_k(:,2)<0.375));
count375_k = numel(xyz_values_k(xyz_values_k(:,2)>=0.375 & xyz_values_k(:,2)<0.400));
count400_k = numel(xyz_values_k(xyz_values_k(:,2)>=0.400 & xyz_values_k(:,2)<0.425));
count425_k = numel(xyz_values_k(xyz_values_k(:,2)>=0.425 & xyz_values_k(:,2)<0.450));
count450_k = numel(xyz_values_k(xyz_values_k(:,2)>=0.450 & xyz_values_k(:,2)<0.475));
count475_k = numel(xyz_values_k(xyz_values_k(:,2)>=0.475 & xyz_values_k(:,2)<0.500));
count500_k = numel(xyz_values_k(xyz_values_k(:,2)>=0.500 & xyz_values_k(:,2)<0.525));
count525_k = numel(xyz_values_k(xyz_values_k(:,2)>=0.525 & xyz_values_k(:,2)<0.550));
count550_k = numel(xyz_values_k(xyz_values_k(:,2)>=0.550 & xyz_values_k(:,2)<0.575));
count575_k = numel(xyz_values_k(xyz_values_k(:,2)>=0.575 & xyz_values_k(:,2)<0.600));
count600_k = numel(xyz_values_k(xyz_values_k(:,2)>=0.600 & xyz_values_k(:,2)<0.625));
count_k = [count000_k, count025_k, count050_k, count075_k, count100_k, count125_k, count150_k, count175_k, count200_k, count225_k, count250_k, count275_k, count300_k, count325_k, count350_k, count375_k, count400_k, count425_k, count450_k, count475_k, count500_k, count525_k, count550_k, count575_k, count600_k];
bar(count_k);
end
I'm having difficulties replacing the 'k's inside the code with the numeric values of the initial vector. If for-loops can't solve this problem, are there other options?

채택된 답변

Jacques
Jacques 2014년 3월 8일
편집: Jacques 2014년 3월 8일
use count000 = zeros(5,1); which declares a vector of 5 elements initialized at 0. Now, you can loop:
for i=1:5
count000(i) = blablabla...
end
And make sure that xyz_values(:,2) is also a vector, by declaring xyz_values to be a 3dimensional matrix instead of 2D.
Even better, now you can keep only one variable for all count000, count025, etc... by using
count = zeros(5,22);
for i=1:5
for j=1:22
count(i,j) = blablabla... >= (j-1)*0.025 blablabla....
end
bar(i,:)
end
The (j-1)*0.025 gives you 0.00, 0.025, 0.050 etc as appropriate. By using two loops, you can reduce the size of the code pretty much :)

추가 답변 (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