数字信号处理-卷积与相关(matlab)

基础知识

R1:序列的卷积:
c(n)=∑_(m=-∞)^∞▒〖a(m)b(n-m)〗
R2:序列的相关:
c(m)=∑_(n=-∞)^∞▒〖a(n)b(n-m)〗

Matlab计算卷积与相关

(1)详见《数字信号处理教程》第四版P53-P54,序列的卷积与相关。
(2)根据卷积定义,卷积运算分为4步:
翻褶:将b(m)以m=0的垂直轴为对称轴翻褶成b(-m);
移位:将b(-m)移位n,得到b(n-m), n>0时右移,n<0时左移;
相乘:将b(-m)与a(m)在相同的m处对应值相乘;
相加:将以上所有m处的乘积相加,这就得到一个n值下的c(n)。
对不同的n使用以上步骤,即可得到全部的c(n)值。根据该思路(不利用已有Matlab函数conv)编写卷积的Matlab实现函数。

图1 卷积过程及结果
举例:计算序列a(-1)=1,a(0)=1,a(1)=1(其他元素为零)和b(0)=2,b(1)=5,b(2)=1(其他元素为零)的卷积。计算过程和结果如图1所示。

分别利用自己编写的卷积函数与conv函数计算下列两个序列的卷积。

a(n)={-1,▁0,8,9}
b(n)={2,5,▁(-2),7,10}
(1) 利用系统自带conv函数计算卷积

function result = conv_s(x,ux,h,uh)
x_len = length(x);
h_len = length(h);
result = conv(x,h);  %直接用系统自带函数conv计算得到卷积
u = ux(1)+uh(1):ux(x_len)+uh(h_len)  %求下标

(2) 利用自己编写的函数计算卷积

function result = own_conv1(x,h,ux,uh)
x_len = length(x);
h_len = length(h);
%按照向量法—矩阵乘法进行卷积运算
h_set = zeros(x_len,h_len+x_len-1);
for i = 1:x_len
    h_set(i,i:i+h_len-1) = h; %得到H矩阵 
end
result = x*h_set;  %向量相乘即完成了翻折,移位,相乘,相加四步操作得到卷积结果
u = ux(1)+uh(1):ux(x_len)+uh(h_len)
相关运算跟卷积运算不同,它没有翻褶这一个步骤,只有移位、相乘、相加三个步骤。模仿以上4步计算卷积的方法,分别计算上面两组序列的相关。
相关运算理论:

移位:将b(m)移位n,得到b(n+m), n>0时右移,n<0时左移;
相乘:将b(m)与a(m)在相同的m处对应值相乘;
相加:将以上所有m处的乘积相加,这就得到一个n值下的c(n)。

a(n)={-1,▁0,8,9}
b(n)={2,5,▁(-2),7,10}
理论计算结果:
相关系数:rab=c(n)={-10,-7,82,141,45,22,61,18},区间:u=-3:4
(1)自己编写的相关运算函数

function result = own_r_conv(x,ux,h,uh)
x_len = length(x);
h_len = length(h);
h_set = zeros(x_len,h_len+x_len-1);
%由于计算相关比卷积少了翻折,因此运算时在卷积运算基础上取消它的翻折操作
for i = 1:x_len
    h_set(i,i+h_len-1:-1:i) = h;
end
result = x*h_set;
u = ux(1)+uh(1):ux(x_len)+uh(h_len)
  1. 应用题:雷达的工作原理
    (1) 原理图
    在这里插入图片描述
    雷达的工作流程可以分为两部分:假设采样频率为f_s=1⁄T_s =0.05MHz
    (2)向目标发射电磁信号
    ①产生发射信号在这里插入图片描述

s(t)为周期方波信号,其脉冲宽度为T_p=100μs,重复周期为T_r=1ms,主值周期的信号可以表示为
在这里插入图片描述
在这里插入图片描述
(3) 接收目标电磁信号
在这里插入图片描述
在这里插入图片描述
具体实现matlab代码如下:

%产生发射的方波信号
clear;close all;
T = 0.001;%方波周期为1ms,占空比为10%
fs = 0.4*10^6;%采样频率为0.4MHz
Ts = 1/fs;%采样周期为2.5微秒
t  = 0:Ts:2*T-Ts;
sn = (square(2*pi*t/T,10)+1)/2;
n = 0:t(end)/Ts;
figure(1);
stem(n,sn);
xlabel('时间序号 n');
ylabel('振幅');
title('采样周期方波信号');

fc = 0.1*10^6;%载频频率为0.1MHz
wc = 2*pi*fc;
pn = exp(1i*wc*t);
figure(2);
stem(n,pn);
xlabel('时间序号 n');
ylabel('振幅');
title('载频信号');

xn = sn.*pn;
figure(3);
stem(n,xn);
xlabel('时间序号 n');
ylabel('振幅');
title('调制信号');

R= 150*10^3;%距离150km
c = 3*10^8;%光速
tn = 2*R*fs/c;%延时
tn = round(tn);%四舍五入
delta_n = [zeros(1,tn),1]*10;
x_n = conv(xn,delta_n);%点目标对电磁信号的作用
N = 0:length(x_n)-1;
figure(4);
stem(N,x_n);
xlabel('时间序号 n');
ylabel('振幅');
title('点目标对电磁信号的作用');

v1n = randn(1,length(x_n));%均值为0,方差为1的高斯白噪声
v2n = randn(1,length(x_n));
vn = (v1n+1i*v2n)/sqrt(2);%加性噪声
yn = x_n + vn;
figure(5);
stem(N,yn);
xlabel('时间序号 n');
ylabel('振幅');
title('经目标散射回到天线的电磁信号');

t = 0:Ts:(length(yn) - 1)*Ts;%长度与yn保持一致
p_n = exp(-1i*wc*t);
figure(6);
stem(N,p_n);
xlabel('时间序号 n');
ylabel('振幅');
title('解调信号'); 

zn = yn.*p_n;%解调后得到的信号
figure(7);
stem(N,zn);
xlabel('时间序号 n');
ylabel('振幅');
title('解调后得到的信号'); 

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_46837674/article/details/109730304