Help with syntax for a self-made function
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Teshan Rezel
le 12 Août 2021
Commenté : Teshan Rezel
le 16 Août 2021
Hi folks,
I have the following function defined in Matlab but am getting an error when running. The error and the code are below. May I please ask for help with debugging this?
Thanks in advance
function fields = populateFields(index, structure)
Area(index) = getfield(structure, 'Area');
MajorAxisLength(index) = getfield(structure, 'MajorAxisLength');
MinoeAxisLength(index) = getfield(structure, 'MinorAxisLength');
Eccentricity(index) = getfield(structure, 'Eccentricity');
Orientation(index) = getfield(structure, 'Orientation');
ConvexArea(index) = getfield(structure, 'ConvexArea');
Circularity(index) = getfield(structure, 'Circularity');
EquivDiameter(index) = getfield(structure, 'EquivDiameter');
Solidity(index) = getfield(structure, 'Solidity');
Extent(index) = getfield(structure, 'Extent');
Perimeter(index) = getfield(structure, 'Perimeter');
MaxFeretDiameter(index) = getfield(structure, 'MaxFeretDiameter');
MaxFeretAngle(index) = getfield(structure, 'MaxFeretAngle');
MinFeretDiameter(index) = getfield(structure, 'MinFeretDiameter');
MinFeretAngle(index) = getfield(structure, 'MinFeretAngle');
end
function call:
[matrix, numObjects] = bwlabel(mask1);
rg = regionprops(matrix, 'all');
fields = populateFields(1, rg);
The error:
Output argument "fields" (and maybe others) not assigned during call to "Threshold>populateFields".
0 commentaires
Réponse acceptée
Simon Chan
le 12 Août 2021
Modifié(e) : Simon Chan
le 12 Août 2021
You have not define your output variable 'fields' in your function, so nothing returns from the function
11 commentaires
Stephen23
le 14 Août 2021
Modifié(e) : Stephen23
le 14 Août 2021
"It seems like this technique doesn't allow for that."
Here are two simple approaches you could use. Either use the same index
for k = ..
RG(k) = regionprops(mask1, 'all');
RG(k).Area
..
end
or a temporary variable:
for k = ..
tmp = regionprops(mask1, 'all');
tmp.Area
..
RG(k) = tmp;
end
What did you try?
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Logical dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!