fix a center of gravity loop

imshow(matrix(:,:,1))
%identify axes
[x, y] = ginput(2);
% preallocate matrices
cog = zeros(size(matrix,3),1);
% the loop does not work and the error in the cog(i) line
% loop start
for i = 1:size(matrix,3)
I = matrix(:,:,i);
test = improfile(I,[x(1) x(2)],[y(1) y(2)]);
%the error comes from this line
cog(i) = sum((1:length(test)).*test)/sum(test);
% loop end
end
scog = (cog - min(cog)) / (max(cog) - min(cog));

1 commentaire

Matt J
Matt J le 27 Juil 2022
You need to demonstrate the code and show us the error messages.

 Réponse acceptée

David Hill
David Hill le 27 Juil 2022

0 votes

cog(i) = sum((1:length(test)).*test')/sum(test); %need to transpose test' to match dimensions

1 commentaire

BA
BA le 27 Juil 2022
Modifié(e) : BA le 27 Juil 2022
Fab. it works perfectly. I have another question: what is the equivalent of 'improfile' in octave? I mean to change the 'improfile' line to work in octave

Plus de réponses (0)

Cette question est clôturée.

Question posée :

BA
le 27 Juil 2022

Clôturé :

le 28 Juil 2022

Community Treasure Hunt

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

Start Hunting!

Translated by