matlab,小问题

来源:百度知道 编辑:UC知道 时间:2024/05/06 01:37:42
aggcacggaaaaacgggaataacggaggaggacttggcacggcattacacggaggacgaggtaaaggaggcttgtctacggccggaagtgaagggggatatgaccgcttgg,统计这字符串每个字符的个数,在这方面不太懂。最好有程序跟解释。

你这个应该是一个基因序列,所以统计的时候只需统计a,c,g,t这四个字符串的个数就可以了。好像是某一年的数学建模题目来的,程序如下:
clc
clear all
s='aggcacggaaaaacgggaataacggaggaggacttggcacggcattacacggaggacgaggtaaaggaggcttgtctacggccggaagtgaagggggatatgaccgcttgg';
Ls=length(s);
Na=0;
Nc=0;
Ng=0;
Nt=0;
for i=1:Ls
if s(i)=='a'
Na=Na+1; %统计字符a的个数
elseif s(i)=='c'
Nc=Nc+1; %统计字符c的个数
elseif s(i)=='g'
Ng=Ng+1; %统计字符g的个数
elseif s(i)=='t'
Nt=Nt+1; %统计字符t的个数
end
end
fprintf('a的个数为%d\n c的个数为%d\n g的个数为%d\n t的个数为%d\n',Na,Nc,Ng,Nt); %输出统计结果

function f(s)
n = length(s);
summ = zeros(1,26)
for i = 1:n
if s(i) == 'a'
summ(1) = summ(1) + 1;
....
end
summ

是基因序列吗?能不能转换为中间有空格的行向量?用if比较后sum就可以了

字符串逐个比较,是就++,最后得结果