一段matlab程序,实现抽取两条路径中最大的相同部分
来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/17 07:01:01
一段matlab程序,实现抽取两条路径中最大的相同部分
citynum=length(A1);
B1=A1;
B2=A2;
A1=ones(citynum,1)*A1
tempB=zeros(citynum,citynum)
tempB(1,:)=A2
for i= 1:citynum-1
temp0=circshift(A2,[0 i]) % A每行保持不变,B每行循环右移
tempB(i+1,:)=temp0
end
temp1=(A1==tempB) %寻找相等点
temp2=[temp1,zeros(citynum,2)]+[zeros(citynum,1),temp1,zeros(citynum,1)]+[zeros(citynum,2),temp1]
temp2=temp2(:,2:length(temp2)-1) %寻找相等点与其左右两端是否连续
temp3=temp1.*temp2 %去掉其中的0点干扰
temp3=(temp3>1) %对连续的点置为1
result=A1.*temp3 %求得结果
s=sum(temp3')
[maxl,num]=max(s)
cc=result(num,:) %提取最长相同疫苗(中间包括0)
cc(cc==0)=[] %提取疫苗,去掉行中的0元素
A1B=find1(A1(1,:),cc(1)) % the begin place of the same Segment
A2B=find1(A2,cc(1)) % the begin place of the same Segment
找出相同基因片段,每步运算正确,但是全部运行就报错:[maxl,num]=max(s) 说这句找不到函数或变量,
主要遇到的问题是 matlab中M文件运行不出来,但程序单句逐个复制到命令窗口可以运行,怎么回事?
citynum=length(A1);
B1=A1;
B2=A2;
A1=ones(citynum,1)*A1
tempB=zeros(citynum,citynum)
tempB(1,:)=A2
for i= 1:citynum-1
temp0=circshift(A2,[0 i]) % A每行保持不变,B每行循环右移
tempB(i+1,:)=temp0
end
temp1=(A1==tempB) %寻找相等点
temp2=[temp1,zeros(citynum,2)]+[zeros(citynum,1),temp1,zeros(citynum,1)]+[zeros(citynum,2),temp1]
temp2=temp2(:,2:length(temp2)-1) %寻找相等点与其左右两端是否连续
temp3=temp1.*temp2 %去掉其中的0点干扰
temp3=(temp3>1) %对连续的点置为1
result=A1.*temp3 %求得结果
s=sum(temp3')
[maxl,num]=max(s)
cc=result(num,:) %提取最长相同疫苗(中间包括0)
cc(cc==0)=[] %提取疫苗,去掉行中的0元素
A1B=find1(A1(1,:),cc(1)) % the begin place of the same Segment
A2B=find1(A2,cc(1)) % the begin place of the same Segment
找出相同基因片段,每步运算正确,但是全部运行就报错:[maxl,num]=max(s) 说这句找不到函数或变量,
主要遇到的问题是 matlab中M文件运行不出来,但程序单句逐个复制到命令窗口可以运行,怎么回事?
没有问题啊,我帮你的程序放到M文件运行了,我设的
A1=randint(1,100);
A2=randint(1,100);
然后运行你的程序直到cc(cc==0)=[];这一句都没有问题的,说明不是max的问题,你再仔细找找吧,要不不行你不介意的话可以把数据和find1.m文件发过来我试试看
A1=randint(1,100);
A2=randint(1,100);
然后运行你的程序直到cc(cc==0)=[];这一句都没有问题的,说明不是max的问题,你再仔细找找吧,要不不行你不介意的话可以把数据和find1.m文件发过来我试试看