Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

split string into 3 letter each

Asked by Elysi Cochin on 11 Dec 2013
Latest activity Commented on by Elysi Cochin on 11 Dec 2013

if have a

 str = 'AGTCTGTCTTTG';

i wanted to split it into 3 letters each

 AGT        CTG        TCT      TTG

and replace

 AGT with J
 CTG with U
 TCT with N
 TTG with D

how to do it... please do reply....

i did as below

 str = 'AGTCTGTCTTTG';
 j = 1;
 for k = 1: 3: length(str)
   word(j) = str(k : k +3)
   j = j+1;
 end

but i get error as

 ??? Subscripted assignment dimension mismatch.
Error in ==> Untitled2 at 4
word(j) = str(k : k +3)

please do reply....

0 Comments

Elysi Cochin

Products

No products are associated with this question.

2 Answers

Answer by Azzi Abdelmalek on 11 Dec 2013
Edited by Azzi Abdelmalek on 11 Dec 2013
Accepted answer
str ='AGTCTGTCTTTG';
a=cellstr(reshape(str,3,[])')

What is the aim of the replacement ? you can create

v={'J','U','N','D'}

1 Comment

Azzi Abdelmalek on 11 Dec 2013

If you have another string

s='AGT kdjd CTGer TCTTTG1'
str ='AGTCTGTCTTTG';
a=cellstr(reshape(str,3,[])')
v={'J','U','N','D'}
for k=1:numel(v)
  s=strrep(s,a{k},v{k})
end
Azzi Abdelmalek
Answer by Jos (10584) on 11 Dec 2013
Edited by Jos (10584) on 11 Dec 2013

In your loop code, you want to store store a string of three elements into a spot with only 1 element "word(j)". This will not fit. A solution is to use a cell array of strings, using curly brackets:

   str = 'AGTCTGTCTTTG';
   j = 1;
   for k = 1: 3: length(str)
     word{j} = str(k : k +3)
     j = j+1;
   end

which can be replaced by:

   word = strread(str,'%3s')

or

   word = mat2cell(str,1,repmat(3,1,numel(str)/3))

To replace multiple values at once you could take a look at REPLACE function, which I made available through the File Exchange:

result = replace(word,{'AGT','CTG','TCT','TTG'},{'J','U','N','D'})

REPLACE is a user-friendly wrapper function using ismember http://www.mathworks.com/matlabcentral/fileexchange/10063-replace

1 Comment

Elysi Cochin on 11 Dec 2013

thank u all....

Jos (10584)

Contact us