Normalize matrix elements resulting in sum of elements of one.

21 次查看(过去 30 天)
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 个评论
Ihiertje
Ihiertje 2017-11-28
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 2017-11-28
编辑:Jan 2017-11-28
Then see my answer, which divides all elements by the sum over all elements. In consequence the sum equals 1 (beside rounding errors).

请先登录,再进行评论。

回答(2 个)

Jan
Jan 2017-11-28
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 2017-11-28
A = magic(5) ;
B = A ;
for i = 1:5
B(:,i) = A(:,i)./norm(A(:,i),1) ;
end
sum(B)
  2 个评论
Ihiertje
Ihiertje 2017-11-28
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.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Matrix Indexing 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by