MATLAB Answers

0

why i get an error ?

Asked by Sultan Mehmood on 15 Jul 2019
Latest activity Commented on by Yash Totla on 17 Jul 2019
II=[114 223;176 155];
R=II(:)';
x=0.3;
p=0.343;
for n=2:4;
if x(n-1)>=0 & x(n-1)<=p
x(n)=x(n-1)/p;
else
x(n)=(1-x(n-1))/(1-p);
end
end
A=sort(x);
[A,T]=sort(x);
Y=R(T);
r = 3.342448;
L(1)= 0.234;
for i=2:4
L(i) = r*L(i-1)*(1-L(i-1));
end
mm=min(L);
nn=max(L);
oo=nn-mm;
Z=uint8(254*((L-mm)/oo))+1;
SS=mod((Y+Z),256)
problem in SS.

  0 Comments

Sign in to comment.

1 Answer

KSSV
Answer by KSSV
on 15 Jul 2019

Z=uint8(254*((L-mm)/oo))+1;
Y = uint8(Y) ;
SS=mod((Y+Z),256)
Note that same class varibales only can be added. A integer shoud ld be added to integer. So ocnvert your variable Y, which is double to unit8.

  3 Comments

Sultan Mehmood on 16 Jul 2019
suppose Y=114;
Z=164;
SS=mod((Y+Z),256);
ans =255
butt if you solve mannully the
ans =22;
why ?
KSSV
on 16 Jul 2019
In this case your Y and Z are double.......convert them to uint8.
Yash Totla on 17 Jul 2019
Z has been typecasted to uint8. When you perform Y+Z it is also typecasted to uint8 datatype. Now if the value of the expression is capped at 255 because that is the max value that you can store in it. So when you take the modulo with 256, it returns 255.
You can try to typecast the expression Y+Z to a datatype whose max value is more than 255. Taking the modulo of a uint8 with 256 is basically returning the same number in uint8.
Check this link for more information on numeric datatypes in matlab.

Sign in to comment.