Sum of each row ?
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
I have [1 1 0; 0 1 0; 0 0 0;] and I want to write that if average of each row > 0.5 it equals 1 , else 0
for the example above, first row 1+1+0 / 3 > 0.5 then it is 1 ..
for i=1:length(nx);
s(i)= sum(nx(i,:))/3;
for n=1:length(nx);
if s(i(n+1))> 0.5;
s(i(n+1)) == 1;
else
s(i(n+1))== 0 ;
end
end
end
2 comentarios
Star Strider
el 10 de Dic. de 2017
What functions are you permitted to use in this obvious homework assignment?
Respuestas (3)
Jos (10584)
el 10 de Dic. de 2017
Use the matlab way! Use the functions mean, or sum and size. Read the documentation on these functions and pay attention to the dimension argument.
Then take a closer look at logical operators, like >
A = [.9 .7 .4 .6 .2]
B = A > 0.5
0 comentarios
Image Analyst
el 10 de Dic. de 2017
Editada: Image Analyst
el 10 de Dic. de 2017
Does it have to be a for loop? Why not just do:
rowMeans = mean(nx, 2);
s = zeros(size(nx));
s(rowMeans > 0.5, :) = 1;
You've said both "sum" and "average" - which is it?????. The above is for average. If you want sums, do
rowSums = sum(nx, 2);
s = zeros(size(nx));
s(rowSums > 0.5, :) = 1;
3 comentarios
Stephen23
el 11 de Dic. de 2017
"There are no specific number of rows therefore i am trying to use for loop to see average of each row"
This makes no sense: vectorized code has no restrictions on how many rows it can handle. Why do you think that a loop is required?
Image Analyst
el 26 de Dic. de 2017
Original question:
I have [1 1 0; 0 1 0; 0 0 0;] and I want to write that if average of each row > 0.5 it equals 1 , else 0
for the example above, first row 1+1+0 / 3 > 0.5 then it is 1 ..
for i=1:length(nx);
s(i)= sum(nx(i,:))/3;
for n=1:length(nx);
if s(i(n+1))> 0.5;
s(i(n+1)) == 1;
else
s(i(n+1))== 0 ;
end
end
end
Ver también
Categorías
Más información sobre Startup and Shutdown 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!