I am trying to convert the string into binary and sequencing with DNA,but i am getting error as follows :
Attempted to access bases(145); index out of bounds because numel(bases)=4.
Error in ==> filename at 21
result((k+1)/2) = bases(index);
What is the solution for this? Here is the code:
clc;
ui=input('enter the message:','s')
decString = unicode2native(ui,'utf-8')
hexString = dec2hex(decString)
binaryArray= dec2bin(decString,8)
bases = 'ATGC';
for k = 1 : 2 : length(binaryArray)
% Convert these two digits into a number 1 - 4.
index = 2 * binaryArray(k) + binaryArray(k+1) + 1;
% Use that index to assign a letter to our result.
result((k+1)/2) = bases(index);
end
% Display in command window:
result
Thank you

2 commentaires

Shiva Reddy
Shiva Reddy le 7 Fév 2021
It is giving error like index exceeds (4)
Walter Roberson
Walter Roberson le 7 Fév 2021
Yes, that is exactly the problem that was discussed in the Answer.

Connectez-vous pour commenter.

 Réponse acceptée

Image Analyst
Image Analyst le 25 Sep 2015

0 votes

bases has only 4 elements so index must stay in the range 1,2,3,4 not 145 like you have it. Think about the logic some more.

5 commentaires

Walter Roberson
Walter Roberson le 25 Sep 2015
Modifié(e) : Walter Roberson le 25 Sep 2015
Remember your binaryArray is going to be something-by-8 but you are accessing it as if it is a vector. Also remember that the result of dec2bin() is characters not numeric so if you want numeric, subtract the character '0'
Meghashree G
Meghashree G le 25 Sep 2015
Modifié(e) : Walter Roberson le 25 Sep 2015
Can u pls be more clear! i mean it would be great if u tell what code should be replaced..Thank You
binaryArray = dec2bin(decString,8) - '0';
index = 2 * binaryArray(:,1:2:end) + binaryArray(:,2:2:end) + 1;
result = bases(index);
Meghashree G
Meghashree G le 26 Sep 2015
Modifié(e) : Walter Roberson le 26 Sep 2015
The solution i got was
TGAC
TCAG
TCGT
TCAA
TCTA
TGCC
Its a vector right?
i want it to be something like this
TGAC
TCAG
TCGT
TCAA
TCTA
TGCC
i have to this sequence to other side.
Walter Roberson
Walter Roberson le 26 Sep 2015
I do not see the difference between what you got and what you want.
To answer your question, though: No, it is not a vector, it is an array. Character strings in MATLAB are arrays, not individual entities. The "result" variable above is char of size 6 x 4
If you want it as a cell array of strings, then use cellstr(result)

Connectez-vous pour commenter.

Plus de réponses (0)

Community Treasure Hunt

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

Start Hunting!

Translated by