How to create a matrix using conditional statements in a loop based in another matrix

3 visualizaciones (últimos 30 días)
Hello,
I have a matrix and I want to generate another matrix according to their elements using a loop.
If one ore more elements of a row is ==0 the correspondent row in the new matrix need to be 0.
If not, it needs to be the sum of the elements in the row.
Comb = % The initial matrix
0 0
4.303 0
2.68 0
0 1.705
4.303 1.705
2.68 1.705
% I need this output:
H = [0
0
0
0
6.008
4.385]
I started with this loop:
for i = 1:size(Comb, 1)
for j = 1:size(Comb, 2)
x = (sum(Comb'))'
if abs(Comb(i,j)) == 0
end
end
end
But it gives that:
x =
0
4.303
2.68
1.705
6.008
4.385
I do not know what insert on the if to display zeros when one element of the row is equal to zero.
Could you help me ?
Thans in advance !

Respuesta aceptada

Andrei Bobrov
Andrei Bobrov el 20 de Mzo. de 2019
H = all(Comb,2).*sum(Comb,2);

Más respuestas (2)

madhan ravi
madhan ravi el 20 de Mzo. de 2019
Editada: madhan ravi el 20 de Mzo. de 2019
H=zeros(size(Comb,1),1);
idx=any(Comb,2);
H(idx)=sum(Comb(idx,:),2)
  4 comentarios

Iniciar sesión para comentar.


Joel Newton
Joel Newton el 10 de Oct. de 2019
Editada: Joel Newton el 10 de Oct. de 2019
Hi, i wish to make a new matrix from the one below such that if the difference between elements in the second and third row is plus or minus 2 return a value of the mid point in each element of the new matrix. if the difrrence is more than 2 then keep the values from the old matrix in the new matrix.
orginal data =
1 1 1 1
10 10 10 9
14 11 14 11
new matrix should look like this =
1 1 1 1
10 10.5 10 10
14 10.5 14 10
my data set has multiple rows of this 3 block of values (if that makes sense), how do I then iterate down for the rest of the data?
Thanks!

Categorías

Más información sobre Loops and Conditional Statements 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