Effacer les filtres
Effacer les filtres

summation of a matrix inside circle

10 vues (au cours des 30 derniers jours)
JK
JK le 10 Nov 2021
Modifié(e) : DGM le 11 Nov 2021
Hello,
I have 2D NxN matrix array and I want to get summation of data inside circle from center.
The size of circle is varied from smallest i.e. one pixel at the center to largest i.e. N/2
I want to plot summation w.r.t. circle.
Thanks,
  1 commentaire
DGM
DGM le 10 Nov 2021
Is N always odd? Is it always even? Could it be either?

Connectez-vous pour commenter.

Réponse acceptée

DGM
DGM le 10 Nov 2021
Modifié(e) : DGM le 11 Nov 2021
This should work regardless of whether N is odd or even.
s = 100;
A = ones(s); % test array
% build distance map
rmax = s/2 - 0.5;
x = linspace(-rmax,rmax,s);
D = sqrt(x.^2 + x.'.^2);
r = 0:ceil(D(1,floor(s/2)));
circint = zeros(1,numel(r));
for rind = 1:numel(r)
circint(rind) = sum(A(D<=r(rind)));
end
plot(r,circint)
  2 commentaires
JK
JK le 11 Nov 2021
any thought on even case?
DGM
DGM le 11 Nov 2021
Modifié(e) : DGM le 11 Nov 2021
I modified it. Bear in mind that there is no center pixel in an array with even geometry. The center four pixels are 1/sqrt(2) away from the center. Consequently, the first element of the output is zero.
Similarly, the pixels straddling the midpoints of the edges of a 10x10 array are not at a radius of 5px. They're at a radius of 4.5227px. As the radius vector in this example is integer-valued, you can either choose to stop short at 4px or go a bit too far (5px). I chose to go to 5px. If you want to stop short in the even case, you can remove the ceil() from the definition of r.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Creating and Concatenating Matrices 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!

Translated by