how swap the bits at position L&P of A(I,j).?

2 views (last 30 days)
A= imread('camera man.png');
k=1;
for I=1:256;
j=1:256;
end
x=0.3;
p=0.343;
for n=2:65536;
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
S=(x*255)+1;
Q=0.2;
p=0.343;
for n=2:65536;
if Q(n-1)>=0 & Q(n-1)<=p
Q(n)=Q(n-1)/p;
else
Q(n)=(1-Q(n-1))/(1-p);
end
end
D=(Q*255)+1;
L= mod(S(k),8)+1;
P=mod(D(k),8)+1;
swap??
  2 Comments
Sultan Mehmood
Sultan Mehmood on 11 Jul 2018
i want to swap the bits of L&P of A(I,j). help plzz

Sign in to comment.

Accepted Answer

Guillaume
Guillaume on 11 Jul 2018
Edited: Guillaume on 18 Jul 2018
bits = bitget(A(i, j), [L, P]);
A(i, j) = bitset(A(i, j), P, bits(1));
A(i, j) = bitset(A(i, j), L, bits(2));
As an aside, I would strongly recommend that you declare x and Q as:
x = [0.3, zeros(1, 65535)];
Q = [0.2, zeros(1, 65535)];
to avoid the constant reallocations that your code is doing.
  12 Comments
Sultan Mehmood
Sultan Mehmood on 20 Jul 2018
what is mean by "bits(1),bits(2)"? because code is running only for first entry.
Guillaume
Guillaume on 20 Jul 2018
bits(1) is the bit that bitget extracted at position L, bits(2) is the bit that bitget extracted at position P.
documentation for bitget
documentation for bitset

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!