![]() |
求 ~程序讲解
这是一段DNA序列转换成数字的程序,望高手指教第二行程序是什么意思?:lovely:
A='aggcacggaaaaacgggaataacggaggaggacttggcacggcattacacggaggacgaggtaaaggaggcttgtctacggccggaagtgaagggggatatgaccgcttgg'; A=(A=='a')+(A=='t')*2+(A=='c')*3+(A=='g')*4; |
回复: 求 ~程序讲解
很明显是将字符串A转换成一个数值数组,该数值数组与原数组对应,用1表示a,2表示t,3表示c,4表示g。
|
回复: 求 ~程序讲解
[QUOTE=haiyunyuan;20862]很明显是将字符串A转换成一个数值数组,该数值数组与原数组对应,用1表示a,2表示t,3表示c,4表示g。[/QUOTE]
为什么他们之间使“*”号呢,如果(A=='t')*2不是乘以2吗? 这里的+ * 符号是不是四则运算符号啊?:lovely: |
回复: 求 ~程序讲解
(A=='a')是一个关系表达式,得到一个逻辑矩阵,再乘以2,得到一个数值矩阵。
|
回复: 求 ~程序讲解
[QUOTE=haiyunyuan;20943](A=='a')是一个关系表达式,得到一个逻辑矩阵,再乘以2,得到一个数值矩阵。[/QUOTE]
那照理说,应该是A=(a个数)*1+(b的个数)*2+(c的个数)*3+(d的个数*4)啊,结果没那么大的啊~~:ft: |
回复: 求 ~程序讲解
[QUOTE=southtown;20957]那照理说,应该是A=(a个数)*1+(b的个数)*2+(c的个数)*3+(d的个数*4)啊,结果没那么大的啊~~:ft:[/QUOTE]
不是等于A=='a'的意思就是判断A中a的位置,在a的对应位置赋值是1,其余是零,A开始虽然是字符型量但它也有长度,他的长度就是有多少个字母 你这个程序就是形成一个110的行向量,将a-1,t-2,c-3,g-4这样替换 |
回复: 求 ~程序讲解
我想明白了,应该是这样
程序对A中的各个元素从起始位置逐个开始判断,当判断到某位时把它与a,t,c,g四个符号常量比较,若不等则用判断后的"0"乘以对应权值,若相等则用判断后的"1"乘以对应权值,最后相加,赋值给A中该元素位置 |
所有时间均为北京时间。现在的时间是 14:19。 |
Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.