%输入信号
inputa=[
10,1,2,10,3,4,5,6,7,10,8,9]
inputb=[
100,1,2,100,3,4,5,6,7,8,100,9]
%自动按最大长度补齐
len=max(length(inputa),length(inputb))
a=[inputa,zeros(len-length(inputa))]
b=[inputb,zeros(len-length(inputb))]
%寻找相等点
temp1=(a==b)
%寻找相等点与其左右两端是否连续
temp2=[temp1,0,0]+[0,temp1,0]+[0,0,temp1]
temp2=temp2(2:length(temp2)-1)
%去掉其中的0点干扰
temp3=temp1.*temp2
%对连续的点置为1
temp3=(temp3>1)
%求得结果
result=a.*temp3
%%%%%%%%---------------------------------%%%%%%%%
对于新需求稍微修改一下矩阵维度就可以了,新修改的程序如下:
%输入信号
inputa=[1,2,3,101,102,103,4,5,6,7,8,9,10,11,410,420,430,440,450,12,13]
inputb=[21,22,410,420,430,440,23,24,25,26,27,28,29,30,31,32,33,34,101,102,103,35]
%自动按最大长度补齐
len=max(length(inputa),length(inputb))
a=[inputa,zeros(len-length(inputa))]
b=[inputb,zeros(len-length(inputb))]
%构建用于比较得二维矩阵
%注意此处a每行保持不变,b每行循环右移
a=ones(len,1)*a
tempb=zeros(len,len)
tempb(1,:)=b
for
i=
1:len-1
temp0=circshift(b,[0
i])
tempb(i+1,:)=temp0
end
%寻找相等点
temp1=(a==tempb)
%寻找相等点与其左右两端是否连续
temp2=[temp1,zeros(len,2)]+[zeros(len,1),temp1,zeros(len,1)]+[zeros(len,2),temp1]
temp2=temp2(:,2:length(temp2)-1)
%去掉其中的0点干扰
temp3=temp1.*temp2
%对连续的点置为1
temp3=(temp3>1)
%求得结果
result=a.*temp3
%--------------------------------%
最后说一下该结果没有清除掉运算中的0,按自己的需求自己修改解决吧。
http://wenku.baidu.com/view/4b8beb2dcfc789eb172dc896.html?st=1
http://wenku.baidu.com/view/49a35f050740be1e650e9aac.html?st=1
http://wenku.baidu.com/view/97931e353968011ca30091ac.html
http://wenku.baidu.com/view/702346f8910ef12d2af9e7ad.html
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)