For loop for function values

Hey everyone,
I've been trying to improve my coding lately with for loops, but I'm sturggling to figure this one out.
Here's the original code. BW2_BW refers to an image and the row's all refer to image coordinates.
R1 = imcrop(BW2_BW, [row_1]);
R2 = imcrop(BW2_BW, [row_2]);
R3 = imcrop(BW2_BW, [row_3]);
R4 = imcrop(BW2_BW, [row_4]);
R5 = imcrop(BW2_BW, [row_5]);
stats_BW_R1 = regionprops(R1,'Centroid');
stats_BW_R2 = regionprops(R2,'Centroid');
stats_BW_R3 = regionprops(R3,'Centroid');
stats_BW_R4 = regionprops(R4,'Centroid');
stats_BW_R5 = regionprops(R5,'Centroid');
This is what I'm trying to do:
for k = 1:5
stats_BW_R(k) = regionprops(R(k),'Centroid');
end
I basically want k to replicate values 1:5 to replace what my original code did. What am I doing wrong?
Thanks!

 Risposta accettata

madhan ravi
madhan ravi il 4 Giu 2020
stats_BW_R = cell(1,5);
for k = 1:5
R = imcrop(BW2_BW, rows{k}); % rows = [row_1,...row_5]
stats_BW_R{k} = regionprops(R,'Centroid');
end

4 Commenti

DP
DP il 4 Giu 2020
Okay, for the rows function, do you create a cell or a double? I did as you commented and I get the error Brace indexing is not supported for variables of this type.
madhan ravi
madhan ravi il 4 Giu 2020
Modificato: madhan ravi il 4 Giu 2020
rows = {row_1,...row_5}
You need to learn the basics of MATLAB.
DP
DP il 4 Giu 2020
I agree
And make sure to read the comment of Fangjun and Stephens.

Accedi per commentare.

Più risposte (1)

Fangjun Jiang
Fangjun Jiang il 4 Giu 2020

1 voto

Don't create variables R1, R2, ... R5. Instead, create array R, use R(1), R(2), ... R(5). Then you can run your for-loop.

Categorie

Scopri di più su Loops and Conditional Statements in Centro assistenza e File Exchange

Tag

Community Treasure Hunt

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

Start Hunting!

Translated by