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

2 views (last 30 days)
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?
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?

Cris LaPierre on 23 Oct 2021
Why not just create a row vector of random numbers, and insert it into a matrix of ones?

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