matlab中怎么求两个数的差

matlab中怎么求两个数的差,第1张

matlab不建议过多的利用循环处理,多利用matlab自带的函数比较方便。下面给个参考程序吧:

%输入信号

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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8073396.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存