How to normalize a matrix in such a wat that every row sum of X(:,:,i) should be 1 except for ith row

3 views (last 30 days)
IRANI ACHARJAMAYUM
IRANI ACHARJAMAYUM on 23 Oct 2021
Commented: Jan on 24 Oct 2021
I have created a matrix X = rand([6,3,6]); i want to normalize this matrix in such a way that every row sum of X(:,:,i) should be 1 except for ith row.
Inside an while(1) loop ,i have
i=randi(n);
Say for example when i=2 that particular row sum should not be equal to one. same goes for other node.How it can be done?
  3 Comments
Jan
Jan on 24 Oct 2021
@IRANI ACHARJAMAYUM: What yre your inputs? How does X = rand([6,3,6]) and an infinite loop with i=randi(n) match? What is the wanted output?
It is still not clear, what you want to achieve. I've posted some code for normalizing the rows of a 3D array except for certain indices. Does it work? If not, what have to be changed?

Sign in to comment.

Answers (2)


Jan
Jan on 23 Oct 2021
Edited: Jan on 23 Oct 2021
X = rand(6, 3, 6);
N = sum(X, 2);
N(sub2ind(size(N), 1:6, ones(1,6), 1:6)) = 1;
Y = X ./ N;
Now sum(Y(i, :, j)) is 1 is i~=j.
sum(Y(1, :, 2))
ans = 1
sum(Y(3, :, 3))
ans = 1.5543

Community Treasure Hunt

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

Start Hunting!

Translated by