首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MATLAB中将DNA转换为2位二进制表示

在MATLAB中将DNA转换为2位二进制表示
EN

Stack Overflow用户
提问于 2017-11-23 19:31:15
回答 1查看 289关注 0票数 1

我想把一个给定的序列转换成符合以下规则的2位二进制序列:A = 00C = 01T = 10G = 11。我写了以下代码。

代码语言:javascript
复制
str = 'ATTCGA';
[~,idx]= ismember(upper(str),'ATCG');
C= {'00', '10', '01', '11'};
z= [c{idx}]-'0';
R = 0.992;
theta = (2*pi)/3;
b = [1 0 -1];
a = [1 -2*R*cos(theta) R^2];
u = filter(b,a,z);
Y = abs(u).^2; 
plot(Y/max(Y)); 
axis([0 8000 0 1.05]);

但问题是,代码是每个单元生成一个位,而我需要每个单元2个位:

EN

回答 1

Stack Overflow用户

发布于 2017-11-23 20:42:54

你做得很好,你只是在以错误的方式进行索引/连接:

代码语言:javascript
复制
str     = 'ATTCGA';
[~,idx] = ismember(upper(str),'ATCG');
dna_map = {'00', '10', '01', '11'};

% Index with parentheses instead of braces, and don't concatenate
dna_bin = dna_map(idx)

这将为您提供相应的cell-array:

代码语言:javascript
复制
dna_bin = 
    '00'    '10'    '10'    '01'    '11'    '00'

但是,不确定您想要如何处理剩下的步骤...

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47454502

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档