Loop in loop only returns results of first iteration
2 ビュー (過去 30 日間)
古いコメントを表示
Hello,
I used these loops to get the volume of particles from multiple fotos. Each iteration for 'f' is a separate foto. The table 'results' gets the properties for each foto and 'results_total' combines the results. The table 'results' also has different number of rows with each iteration.
I wanted to do the same with the second loop, where 'j' gives the number of particles identified in each picture and with Vol(j) I get the volume of each particle. As I did above I wanted to save the results for all fotos in 'Vol_total' but I get the values from the first foto, so f=1 added 2 times. So for example in the first foto there are 141 particles and in the second 111, Vol_total returns a double array 282x1 instead of 252x1.
How can I change the code to get the right results? Thank you!
Vol_total = table;
for f=1:2
% particles in each foto from a folder are being analyzed and some characteristics measured
% to simplify here number of fotos = 2
% code for calculation of results
results = regionprops('table',lm2, 'Area','Perimeter','MinFeretProperties','MaxFeretProperties');
results_total = vertcat(results,results_total);
for j=1:height(results)
Vol(j) = sum(V(lm2==j)); % V is the volume of each pixel and lm2 is the labelmatrix which shows the pixels that belong to the same particle
end
Vol_total = [Vol_total; Vol'];
end
0 件のコメント
採用された回答
darova
2021 年 8 月 14 日
Try to preallocate Vol variable before for loop. Vol has size 141 after first iteration, that's why you have 282 elements
Vol = table(size(results));
for j=1:height(results)
Vol(j) = sum(V(lm2==j)); % V is the volume of each pixel and lm2 is the labelmatrix which shows the pixels that belong to the same particle
end
You should sum in two directions volume value. Don't know why don't you have an error in this line
% Vol(j) = sum(V(lm2==j)); % V is the volume of each pixel and lm2 is the labelmatrix which shows the pixels that belong to the same particle
v1 = V(lm2==j);
Vol(j) = sum(v1(:)); % sum all elements
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Basic Display についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!