Why I get ans = logical 1
Show older comments
for i=1:100
x(i)=normrnd(0,1);
end;
A=x(:);
for i=1:100
if (A(i)<0.9557 & A(i) > 0)
Aq(i)=0.497;
elseif (A(i)>0.9957)
Aq(i)=1.493;
elseif (A(i)<-0.9957)
Aq(i)=-1.493;
else
(A(i)>-0.9957 & A(i) <0)
Aq(i)=-0.497;
end;
end;
sum=0;
for i=1:100
sum = (A(i)-Aq(i))^2+sum;
end;
Avg = sum/100
2 Comments
Geoff Hayes
on 3 Apr 2020
Mohamed - look closely at your else
else
(A(i)>-0.9957 & A(i) <0)
Aq(i)=-0.497;
end;
Should this be an elseif instead where (A(i)>-0.9957 & A(i) <0) is the condition?
Mohamed Mahir
on 3 Apr 2020
Accepted Answer
More Answers (1)
David Hill
on 3 Apr 2020
Edited: David Hill
on 3 Apr 2020
Much easier way:
A=normrnd(0,1,[100,1]);
[~,~,a]=histcounts(A,[-10,-.9957,0,.9957,10]);
b=[-1.493;-0.497;0.497;1.493];
Aq=b(a);
s=sum((A-Aq).^2);
Avg = s/100;
1 Comment
Mohamed Mahir
on 3 Apr 2020
Categories
Find more on Multidimensional Arrays in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!