Borrar filtros
Borrar filtros

Normalize matrix elements resulting in sum of elements of one.

28 visualizaciones (últimos 30 días)
Ihiertje
Ihiertje el 28 de Nov. de 2017
Editada: Jan el 28 de Nov. de 2017
Hi,
For part of my matlab code I have to normalize a space-variant matrix K:
K[u][v](x,y)
so that the sum (u and v) of all locations in this matrix after normalization is 1:
∑∑K[u][v](x,y) = 1
However, I'm not sure where to begin with this. Could someone help me with the steps I should take?
Thanks!
  8 comentarios
Ihiertje
Ihiertje el 28 de Nov. de 2017
The input is X=rand(x,y), where x and y are values between 1 and 512. And the normalization should be over all elements. Thanks for your time and effort by the way!
Jan
Jan el 28 de Nov. de 2017
Editada: Jan el 28 de Nov. de 2017
Then see my answer, which divides all elements by the sum over all elements. In consequence the sum equals 1 (beside rounding errors).

Iniciar sesión para comentar.

Respuestas (2)

Jan
Jan el 28 de Nov. de 2017
Perhaps you want:
A = rand(5, 5); % Test data
B = A / sum(A(:))
If you want something else, please explain which sum should be 1.

KSSV
KSSV el 28 de Nov. de 2017
A = magic(5) ;
B = A ;
for i = 1:5
B(:,i) = A(:,i)./norm(A(:,i),1) ;
end
sum(B)
  2 comentarios
Ihiertje
Ihiertje el 28 de Nov. de 2017
I adjusted your code to my problem and tried it, but I don't think it is right at the moment as it does not result in a sum of 1.
KSSV
KSSV el 28 de Nov. de 2017
It normalizes every column.....so sum of columns will be 1.

Iniciar sesión para comentar.

Categorías

Más información sobre Numeric Types en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by