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 commentaires

Star Strider
Star Strider le 10 Déc 2017
What functions are you permitted to use in this obvious homework assignment?
Rena Berman
Rena Berman le 26 Déc 2017
(Answers Dev) Restored edit

Connectez-vous pour commenter.

Réponses (3)

Jos (10584)
Jos (10584) le 10 Déc 2017

0 votes

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
Image Analyst
Image Analyst le 10 Déc 2017
Modifié(e) : Image Analyst le 10 Déc 2017

0 votes

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 commentaires

Image Analyst
Image Analyst le 10 Déc 2017
That does not make sense. My code has no requirement on the number of rows. You can have however many rows you want. Just because the number of rows is not specified, that does NOT mean a loop is required.
Stephen23
Stephen23 le 11 Déc 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
Image Analyst le 26 Déc 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

Connectez-vous pour commenter.

Walter Roberson
Walter Roberson le 10 Déc 2017

0 votes

mean(nx, 2) > 0.5 %the 2 means "by rows" here.

Catégories

En savoir plus sur Get Started with MATLAB dans Centre d'aide et File Exchange

Commenté :

le 26 Déc 2017

Community Treasure Hunt

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

Start Hunting!

Translated by