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

New to MATLAB?

split string into 3 letter each

Asked by Elysi Cochin

Elysi Cochin

on 11 Dec 2013
Latest activity Commented on by Elysi Cochin

Elysi Cochin

on 11 Dec 2013
Accepted Answer by Azzi Abdelmalek

Azzi Abdelmalek

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

Elysi Cochin

Products

No products are associated with this question.

2 Answers

Answer by Azzi Abdelmalek

Azzi Abdelmalek

on 11 Dec 2013
Edited by Azzi Abdelmalek

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

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

Azzi Abdelmalek

Answer by Jos (10584)

Jos (10584)

on 11 Dec 2013
Edited by Jos (10584)

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

Elysi Cochin

on 11 Dec 2013

thank u all....

Jos (10584)

Jos (10584)

Contact us