数字信号处理序列运算——信号相加
来源:互联网 作者:佚名 日期:2010年01月06日 访问次数:
信号相加:这是一种对应的样本与样本之间的相加,表示为: {x1(n)}+{x2(n)}={x1(n)+x2(n)}
在MATLAB中它可用算术运算符“+”实现。然而x1(n)和x2(n)的长度必须相等。如果序列长度不等,或者长度虽然相等但采样的位置不同,就不能用运算符“+”了。我们必须首先给x1(n)和x2(n)以适当的参数使他们有相同的位置向量n(因而也有同样的长度)。这需要非常注意MATLAB的下标运算。特别是逻辑与运算“&”,关系运算入“<=”和“=”,以及要用find函数来使x1(n)和x2(n)具有相同的长度,下面称为sigadd的函数演示了这些运算。
Function[y,n]=sigadd(x1,n1,x2,n2)
%实现y(n)=x1(n)+x2(n)
%[y,n]=sigadd(x1,n1,x2,n2)
%y=在包括n1和n2的n上求和序列
%x1=长为n1的第一个序列
%x2=长为n2的第二个序列(n2可与n1不等)
n=min(min(n1),min(n2)):max(max(n1),max(n2));%y(n)的长度
y1=zeros(1,length(n));y2=y1;%初始化
y1(find((n>=min(n1)) &(n<=max(n1))==1))=x1;%具有y(n)的长度的x1
y2(find((n>=min(n2)) &(n<=max(n2))==1))=x2;%具有y(n)的长度的x2
y=y1+y2;%序列相加
在MATLAB中它可用算术运算符“+”实现。然而x1(n)和x2(n)的长度必须相等。如果序列长度不等,或者长度虽然相等但采样的位置不同,就不能用运算符“+”了。我们必须首先给x1(n)和x2(n)以适当的参数使他们有相同的位置向量n(因而也有同样的长度)。这需要非常注意MATLAB的下标运算。特别是逻辑与运算“&”,关系运算入“<=”和“=”,以及要用find函数来使x1(n)和x2(n)具有相同的长度,下面称为sigadd的函数演示了这些运算。
Function[y,n]=sigadd(x1,n1,x2,n2)
%实现y(n)=x1(n)+x2(n)
%[y,n]=sigadd(x1,n1,x2,n2)
%y=在包括n1和n2的n上求和序列
%x1=长为n1的第一个序列
%x2=长为n2的第二个序列(n2可与n1不等)
n=min(min(n1),min(n2)):max(max(n1),max(n2));%y(n)的长度
y1=zeros(1,length(n));y2=y1;%初始化
y1(find((n>=min(n1)) &(n<=max(n1))==1))=x1;%具有y(n)的长度的x1
y2(find((n>=min(n2)) &(n<=max(n2))==1))=x2;%具有y(n)的长度的x2
y=y1+y2;%序列相加
上一篇:数字信号处理中的复数指数序列
下一篇:数字信号处理序列运算——信号相乘
发表评论
