how to have character replacement
    3 views (last 30 days)
  
       Show older comments
    
every digit is converted to binary and are grouped with two bits each and i have to replace it with characters.
example A=11000100
i have to replace as
   if    
   11 then 'A'
   00      'C'
   01      'G'
   10      'T'
final result should be a=ACGT
I have written a code it takes long time to get executed
bi = dec2bin(secret,8) - '0';
out = reshape(mat2cell(bi,ones(size(bi,1),1),2*ones(size(bi,2)/2,1))',1,[]);
[r,c]=size(out);
for a = 1:c
  if( out{a} == [0 0])
      out{a} = 'C';
  else
      if( out{a} == [0 1])
          out{a} = 'T';
      else
          if( out{a} == [1 0])
              out{a} = 'A';
          else
              if( out{a} == [1 1])
                  out{a} = 'G';
              end
          end
      end
  end
end
1 Comment
Accepted Answer
  Azzi Abdelmalek
      
      
 on 27 Feb 2013
        A='11000100'
s='ACGT'
f=['11';'00';'01';'10']
b=reshape(A,2,[])'
for k=1:numel(s)
  idx=find(ismember(b,f(k,:),'rows'))
  c(idx)=s(k)
end
out=c(:)'
3 Comments
  Azzi Abdelmalek
      
      
 on 27 Feb 2013
				clear 
s='GCTA'
f=['11';'00';'01';'10'];
secret=[70 77];
bi = dec2bin(secret,8);
for p=1:size(bi,1)
  b=reshape(bi(p,:),2,[])';
    for k=1:numel(s)
      idx=find(ismember(b,f(k,:),'rows'));
      c(idx)=s(k);
  end
  out{p}=c(:)';
end
out
More Answers (1)
  Honglei Chen
    
      
 on 27 Feb 2013
        
      Edited: Honglei Chen
    
      
 on 27 Feb 2013
  
      Sounds like a sequencing problem. You can do it like this
x = '11000100';
idx = bin2dec(reshape(x,2,[]).')+1;
matchset = 'CGTA';
matchset(idx)
2 Comments
  Azzi Abdelmalek
      
      
 on 27 Feb 2013
				
      Edited: Azzi Abdelmalek
      
      
 on 27 Feb 2013
  
			Typo,
matchset(idx)
instead of
matcheset(idx)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


