Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.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序列比较_Matlab_Dna Sequence - Fatal编程技术网

Matlab:DNA序列比较

Matlab:DNA序列比较,matlab,dna-sequence,Matlab,Dna Sequence,我想比较两个DNA序列。但是,我想取第一个序列的第一个蛋白质,并将其与第二个序列的全长进行比较,依此类推 例如 DNASequence1:ABCDEFGHIJKA DNA序列2:ABCHIKABTIYO 因此,它获取序列A中的第一个蛋白质,并将其与第二个序列进行比较,产生两个匹配。然后取B并比较,产生另外两个匹配项。依此类推,直到所有的蛋白质都进行了比较。你可以通过一个循环来实现这一点,但是bsxfun更简洁(可能更快),并且给出了相同的结果: A = 'ABCDEFGHIJKA'; %//

我想比较两个DNA序列。但是,我想取第一个序列的第一个蛋白质,并将其与第二个序列的全长进行比较,依此类推

例如

DNASequence1:ABCDEFGHIJKA

DNA序列2:ABCHIKABTIYO


因此,它获取序列A中的第一个蛋白质,并将其与第二个序列进行比较,产生两个匹配。然后取B并比较,产生另外两个匹配项。依此类推,直到所有的蛋白质都进行了比较。

你可以通过一个循环来实现这一点,但是
bsxfun
更简洁(可能更快),并且给出了相同的结果:

A = 'ABCDEFGHIJKA';   %// I shortened the variable names...
B = 'ABCHIKABTIYO';   %// because I don't like typing.

C = bsxfun(@eq, B, A')

C =

   1   0   0   0   0   0   1   0   0   0   0   0
   0   1   0   0   0   0   0   1   0   0   0   0
   0   0   1   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0   0   0   0
   0   0   0   1   0   0   0   0   0   0   0   0
   0   0   0   0   1   0   0   0   0   1   0   0
   0   0   0   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   1   0   0   0   0   0   0
   1   0   0   0   0   0   1   0   0   0   0   0
C
的每一行都是
1
,其中
A
中的对应元素出现在
B
中。例如,行
9
给出字母
I
的所有出现顺序
B

这也适用于序列长度不同的情况:

>> D = [B B]
D = ABCHIKABTIYOABCHIKABTIYO

>> bsxfun(@eq, D, A')
ans =

   1   0   0   0   0   0   1   0   0   0   0   0   1   0   0   0   0   0   1   0   0   0   0   0
   0   1   0   0   0   0   0   1   0   0   0   0   0   1   0   0   0   0   0   1   0   0   0   0
   0   0   1   0   0   0   0   0   0   0   0   0   0   0   1   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
   0   0   0   1   0   0   0   0   0   0   0   0   0   0   0   1   0   0   0   0   0   0   0   0
   0   0   0   0   1   0   0   0   0   1   0   0   0   0   0   0   1   0   0   0   0   1   0   0
   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   1   0   0   0   0   0   0   0   0   0   0   0   1   0   0   0   0   0   0
   1   0   0   0   0   0   1   0   0   0   0   0   1   0   0   0   0   0   1   0   0   0   0   0

提示:看看
DNASequence2==DNASequence1(1)
给了你什么。这样做行吗<代码>总和(~bsxfun(@减号,dna1,dna2'),1)恐怕不是hbaderts。谢谢@bicker,我理解现在产生的结果。我会尝试现在就想出一些代码!另一个提示:您可能希望将
bsxfun
@eq
一起使用。在beaker处有进一步的线索吗?如果可能的话,我想把它设置成某种形式的环,因为两个序列的DNA长度可以是15,另一个序列的DNA长度可以是20。谢谢。对不起,我刚才真的很傻!