信号在MATLAB中的运算——信号的相加相乘
信号的相加和相乘是指同一时刻信号取值的相加和相乘。
对于离散序列来说,序列相加是将信号对应时间序列的值逐项相加,在这里不能像连续时间信号那样用符号运算来实现,而必须用向量表示的方法,即在Matlab中离散序列的相加需要表示成两个向量的相加,因而参加运算的两个序列向量必须具备有相同的维数。
信号的相加和相乘是信号处理中的两个基本运算,将不同频率的信号合并为一个信号的两种方法。
信号的相加指的是把两个或多个信号叠加在一起,形成一个新的信号。这个新信号的幅度等于原信号的幅度之和。例如,如果有两个正弦波信号,一个频率为10Hz,另一个频率为20Hz,当它们相加时,将形成一个新的信号,频率为10Hz和20Hz,并且信号的幅度等于两个原始信号的幅度之和。
信号的相乘指的是把两个信号相乘,形成一个新的信号。这个新信号的幅度等于两个原始信号的幅度的乘积,而其频率则是两个原始信号频率的差。当信号相乘时,也会产生新的频率分量,这些分量的幅度取决于原始信号的幅度和频率之间的关系。信号的相乘,通常用于频谱分析和滤波器设计中。例如,如果我们想要仅选择原始信号中某个频率范围内的信号,则可以将原信号与一个带通滤波器的输出信号相乘。
在信号处理中,我们经常使用信号的相加和相乘运算来对信号进行加工和处理,例如滤波和调制等操作。
信号相加,即两个序列的相加:x(n) = x1(n) + x2(n)
信号相乘,即两个序列的乘积(或称为"点乘"):x(n) = x1(n).*x2(n)
序列相加(相乘)是对应序列值之间的相加(相乘)。
x1、x2应具有相同的长度,位置对应,否则需要通过函数zeros补0,方可进行。
1、信号相加示例:
% 信号相加示例
clear, clc, clf
n1 = 0:3;
x1 = [2 0.5 0.9 1];
subplot(311);
stem(n1, x1); axis([-1 9 0 2.1]); title('x1');
n2 = 0:7;
x2 = [0 0.1 0.2 0.3 0.4 0.5 0.6 0.7];
subplot(312); stem(n2, x2); axis([-1 9 0 0.9]); title('x2');
n = 0:7;
x1 = [x1 zeros(1,8-length(n1))];
x2 = [zeros(1,8-length(n2)), x2];
x = x1 + x2;
subplot(313); stem(n,x); axis([-1 9 0 2.1]); title('x');
2、信号相乘示例:
% 信号相乘示例
figure;
n1 = 0:3;
x1 = [3 0.6 0.8 1];
subplot(311); stem(n1,x1);
axis([-1 8 0 2.1]); title('x1');
n2 = 0:7;
x2 = [0 0.2 0.2 0.3 0.5 0.5 0.6 0.9];
subplot(312); stem(n2,x2);
axis([-1 8 0 0.8]); title('x2');
n = 0:7;
x1 = [x1 zeros(1,8-length(n1))];
x2 = [zeros(1,8-length(n2)),x2];
x = x1.*x2;
subplot(313); stem(n,x); axis([-1 8 0 0.35]); title('x');
3、序列值累加与乘积
序列值累加是求序列 x(n) 在两点 n1 和 n2 之间所有序列值的累加:y(n) = x(n1) + …… + x(n2)。
序列值乘积是求序列 x(n) 在两点 n1 和 n2 之间所有序列值的乘积:y(n) = x(n1) * …… * x(n2)。
在 Matlab 中,可用函数 sum 实现序列值的累加,有函数 prod 实现序列值的乘积。
>> n1 = [1 2 3 4];
>> sum(n1)
ans =
10
>> x1 = [2 0.5 0.9 2 2];
>> x = prod(x1)
x =
3.6000