信号的基本运算
1.序列相加与相乘
信号相加的表达式为x(n)=x1(n)+x2(n),信号相乘,即两个序列的乘积(或者点乘),表达式为x(n)=x1(n)·x2(n),即x=x1+x2 ; x=x1.*x2 这里就不放代码了,大概步骤就是生成两个序列,然后单独画图,再把运算后的序列显示出来。
2.序列累加与序列值乘积
序列累加就是求序列x(n)两点n1和n2之间的所有序列值之和,序列累加可以利用sum函数实现。序列值的乘积是求x(n)两点n1和n2之间所有序列值的乘积可以用prod函数实现。
- 注意序列值相乘和序列相乘的区别
3.序列翻转与序列移位
序列翻转的表达式为y(n) = x(-n),matlab 中,翻转运算用函数fliplr实现。
y= fliplr(x) 序列值翻转
ny= - fliplr(nx) 序列位置的翻转(即坐标)
序列位移的表达式为y(n) = x (n-n0)
y = x 值不变
ny = nx+n0 位置变化
4.连续时间信号的尺度变换
连续时间信号的尺度变换,是指将信号的横坐标进行扩展或压缩,即将信号f(t)的自变量t更换为at,当a>1时,信号f(at)以原点为基准,沿时间轴压缩到原来的1/a; 当a<1时,信号f(at)沿时间轴扩展至原来的1/a倍。
用下面的命令实现连续时间信号的尺度变换及其结果可视化,其中f是用符号表达式表示的连续时间信号,t是符号变量。subs命令则将连续时间信号中的时间变量t用a*t替换。
y= subs(f,a* t);
ezplot(y)
信号的奇偶分解原理:任何信号都可以分解为一个偶分量与一个奇分量之和的形式,因为任何信号总可以写成
f(t)= 1/2[f(t)+ f(t)+ f(-t)- f(-t)]=1/2[ f(t)+ f(-t)]+ 1/2[f(t)- f(- t)],这就分别对应信号的偶分量与奇分量。
代码如下:对函数f(t) = cos (t+1) +t 进行奇偶分解
f= cos(t+1)+t';
f1 = subs(f,t,-t);
g= 1/2* (f + f1);
h= 1/2* (f - f1);
subplot(311);ezplot(f,[-8,8]);title('原信号');
subplot(312);ezplot(g,[-8,8]);title('偶分量');
subp1ot(313);ezplot(h,[-8,8]);title('奇分量');
结果如下:
5.信号的积分和微分
信号的微分和积分:对于连续时间信号,其微分运算是用diff函数来完成的,其语句格式为:diff( function, 'variable', n)
,其中,function表示需要进行求导运算的信号,或者被赋值的符号表达式: variable 为求导运算的独立变量;n为求导的阶数,默认值为求一阶导数。
连续信号的积分运算用int函数来完成,语句格式为int( function, 'variable',a, b)
其中,function表示需要进行被积信号,或者被赋值的符号表达式: variable 为求导运算的独立变量: a.b 为积分上.下限,a和b省略时为求不定积分。
6.卷积运算
卷积运算在信号处理中是十分重要的工具。MATLAB提供卷积计算的函数有CONV ,CONV2和CONVN。例如:
A= ones(1,3)
B=[1 8 8 5]
C= conv(A, B)