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 Comment

You need to demonstrate the code and show us the error messages.

 Accepted Answer

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

1 Comment

BA
BA on 27 Jul 2022
Edited: BA on 27 Jul 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

More Answers (0)

This question is closed.

Asked:

BA
on 27 Jul 2022

Closed:

on 28 Jul 2022

Community Treasure Hunt

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

Start Hunting!