Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MATLAB中的DNA到2位二进制表示_Matlab_Dna Sequence - Fatal编程技术网

MATLAB中的DNA到2位二进制表示

MATLAB中的DNA到2位二进制表示,matlab,dna-sequence,Matlab,Dna Sequence,我想将一个给定的DNA序列转换成它相应的2位二进制序列,遵循以下规则:a=00,C=01,T=10,G=11。我已经编写了以下代码 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

我想将一个给定的DNA序列转换成它相应的2位二进制序列,遵循以下规则:
a=00
C=01
T=10
G=11
。我已经编写了以下代码

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个位:


您进展顺利,只是以错误的方式建立索引/连接:

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)
这将为您提供相应的单元格数组:

dna_bin = 
    '00'    '10'    '10'    '01'    '11'    '00'

不确定您想对其余步骤做什么,尽管…

您正在顺利进行,但您只是以错误的方式进行索引/连接:

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)
这将为您提供相应的单元格数组:

dna_bin = 
    '00'    '10'    '10'    '01'    '11'    '00'

不确定要对其余步骤执行什么操作,但是…

您希望
z
中的结果是什么?z将是通过数字滤波器传递的二进制数序列。但是您希望如何表示这些二进制数?当前,示例中的
z
获取值
[0,0,1,0,0,0,1,1,1,0,0]
。请编辑该问题,以逐字显示您希望它是什么。您希望
z
中的结果是什么?z将是通过数字过滤器传递的二进制数序列。但您希望如何表示这些二进制数?当前,示例中的
z
获取值
[0,0,1,0,0,0,1,1,1,0,0]
。请编辑问题,以显示您想要的内容。前面代码的输出为单元格格式。我想对转换后的序列应用fitter。matlab中“过滤器”的输入仅采用单次或双次。这就是为什么我使用z=[c{idx}]-'0''将一个单元格转换为double。@Subhajit…那么,我不清楚您想要实现什么。为什么不映射到
0
-
3
,在
过滤器中使用它,并在需要时和需要时将其转换回二进制?上一个代码的输出是单元格格式。我想对转换后的序列应用fitter。matlab中“过滤器”的输入仅采用单次或双次。这就是为什么我使用z=[c{idx}]-'0''将一个单元格转换为double。@Subhajit…那么,我不清楚您想要实现什么。为什么不映射到
0
-
3
,在
过滤器中使用它,并在需要时和需要时将其转换回二进制?