通信原理仿真(四)——信号与系统基础(二)

信号运算

信号相加、相乘

由于两个信号的相加和相乘是指对应时间的相加和相乘。数学表示为:
y ( n ) = x 1 ( n ) + x 2 ( n ) y(n)=x_1(n)+x_2(n) y(n)=x1(n)+x2(n)
y ( n ) = x 1 ( n ) ∗ x 2 ( n ) y(n)=x_1(n)*x_2(n) y(n)=x1(n)x2(n)
对序列向量 f 1 ( k ) , f 2 ( k ) f_1(k),f_2(k) f1(k),f2(k)相加或相乘,可以通过补零的方式使得 f 1 ( k ) , f 2 ( k ) f_1(k),f_2(k) f1(k),f2(k)成为具有相同维数的序列向量 s 1 ( k ) , s 2 ( k ) s_1(k),s_2(k) s1(k),s2(k),然后对 s 1 ( k ) , s 2 ( k ) s_1(k),s_2(k) s1(k),s2(k)逐点相加或相乘。因此,序列向量可以维数不同。
以下的函数可以实现序列的相加或相乘运算。
相加运算函数:

function [f,k] = sigadd(f1,k1,f2,k2)
%sigadd 实现序列f1,f2的相加、相减、相乘,可根据实际需要作选择
%   f1,k1;f2,k2是参加运算的序列向量及其时间向量
%   f,k作为返回的和(差,积)序列及其时间向量
%   将f1,f2转换成等长序列s1,s2
k=min(min(k1),min(k2)):max(max(k1),max(k2));
s1=zeros(1,length(k));s2=s1;% 初始化序列
s1(find((k>=min(k1)) & (k<=max(k1))==1))=f1;
s2(find((k>=min(k2)) & (k<=max(k2))==1))=f2;
f=s1+s2;% 序列相加
% f=s1-s2;% 序列相减
% f=s1.*s2;% 序列相乘
stem(k,f,'fill');
axis([(min(min(k1),min(k2))-1),(max(max(k1),max(k2))+1),(min(f)-0.5),(max(f)+0.5)]);
end

相减运算函数:

function [f,k] = sigsub(f1,k1,f2,k2)
%sigsub 实现序列f1,f2的相加、相减、相乘,可根据实际需要作选择
%   f1,k1;f2,k2是参加运算的序列向量及其时间向量
%   f,k作为返回的和(差,积)序列及其时间向量
%   将f1,f2转换成等长序列s1,s2
k=min(min(k1),min(k2)):max(max(k1),max(k2));
s1=zeros(1,length(k));s2=s1;% 初始化序列
s1(find((k>=min(k1)) & (k<=max(k1))==1))=f1;
s2(find((k>=min(k2)) & (k<=max(k2))==1))=f2;
% f=s1+s2;% 序列相加
f=s1-s2;% 序列相减
% f=s1.*s2;% 序列相乘
stem(k,f,'fill');
axis([(min(min(k1),min(k2))-1),(max(max(k1),max(k2))+1),(min(f)-0.5),(max(f)+0.5)]);
end

相乘运算函数:

function [f,k] = sigmult(f1,k1,f2,k2)
%sigmult 实现序列f1,f2的相加、相减、相乘,可根据实际需要作选择
%   f1,k1;f2,k2是参加运算的序列向量及其时间向量
%   f,k作为返回的和(差,积)序列及其时间向量
%   将f1,f2转换成等长序列s1,s2
k=min(min(k1),min(k2)):max(max(k1),max(k2));
s1=zeros(1,length(k));s2=s1;% 初始化序列
s1(find((k>=min(k1)) & (k<=max(k1))==1))=f1;
s2(find((k>=min(k2)) & (k<=max(k2))==1))=f2;
% f=s1+s2;% 序列相加
% f=s1-s2;% 序列相减
f=s1.*s2;% 序列相乘
stem(k,f,'fill');
axis([(min(min(k1),min(k2))-1),(max(max(k1),max(k2))+1),(min(f)-0.5),(max(f)+0.5)]);
end

例题1、计算两个序列的和与乘积

%% 信号运算
x=[0.5,1.5,1,-0.5];
n0=-1:2;
x1=2*ones(1,6);
n1=0:5;
[y1,n2]=sigmult(x1,n1,x,n0);% 序列相乘
[y2,n3]=sigadd(x1,n1,x,n0);% 序列相加
subplot(411);stem(n0,x);
ylabel('x');axis([-1,6,-2,3]);
subplot(412);stem(n1,x1);
ylabel('x1');axis([-1,6,0,3]);
subplot(413);stem(n2,y1);
ylabel('y1=x*x1');axis([-1,6,-2,3]);
subplot(414);stem(n3,y2);
ylabel('y2=x+x1');xlabel('n');
axis([-1,6,0,5]);

2、信号的移位及周期延拓

(1)信号时移

设一个离散时间信号为 x ( n ) x(n) x(n),它的时移 y ( n ) y(n) y(n)表示为:
y ( n ) = x ( n − m ) y(n)=x(n-m) y(n)=x(nm)
序列的平移可以看做是将序列的时间序号向量平移,而对应原时间序列号的序列样值不变。

function [x,n] = sigshift(f,k,k0)
%sigshift 实现序列平移:x(k)=f(k-k0)
%   f,k,k0是参加运算的序列向量及其时间向量
%   x,n作为返回的移位序列及其时间向量
n=k+k0;
x=f;
end

例题2:

%% 信号的移位和周期延拓
k=0:5;
f=(0.5).^k;% 定义序列f(k)
[f1,k1]=sigshift(f,k,2);% 调用平移子函数
subplot(211)
stem(k,f,'fill');
title('f(k)');
xlabel('k');
axis([0,8,0,1]);
subplot(212)
stem(k1,f1,'fill');
title('f(k-2)');
xlabel('k');
axis([0,8,0,1]);

(2)周期移位

序列周期延拓的数学表示为: y ( n ) = x ( ( n ) ) M y(n)=x((n))_M y(n)=x((n))M,其中M表示延拓周期。
MATLAB实现:

ny=nxs:nxf;y=x(mod(ny,M)+1);

其中,mod为求余函数,求余后加一是因为下标只能从1开始。
序列的循环移位实现:

ny=nxs:nxf;y=x(mod(ny-k,M)+1);

例题3:

%% 周期延拓
N=24;M=8;m=3;
n=0:N-1;
x1=0.8.^n;% 生成指数序列
x2=[(n>=0) & (n<=M)];% 生成矩形序列
x=x1.*x2;
xm=zeros(1,N);
for k=m+1:m+M
    xm(k)=x(k-m);% 产生移位序列
end
xc=x(mod(n,M)+1);% 产生周期延拓序列
xcm=x(mod(n-m,M)+1);%产生移位序列x(n-3)周期延拓x(n-3)
subplot(411)
stem(n,x);ylabel('x(n)');
subplot(412);stem(n,xm);ylabel('x(n-3)');
subplot(413);stem(n,xc);ylabel('x(n)_8');
subplot(414);stem(n,xcm);ylabel('x(n-3)_8');

3、信号的翻褶

对一个信号 x [ n ] x[n] x[n]的翻褶运算数学上表示为:
y [ n ] = x [ − n ] y[n]=x[-n] y[n]=x[n]
方法一:
修改绘图函数plot(t,x)和stem(n,x)的时间变量t和n。即用-t和-n替代原来的t和n,这样绘制出来的图形看起来就是原信号经过时域翻褶后的版本。
方法二:
直接利用原信号与其翻褶信号的数学关系式来实现。
方法三:
使用MATLAB内部函数fliplr()实现信号的翻褶运算。其用法为y=fliplr(x)。其中x为原信号x(t)或x[n]。而y则为x的时域翻褶。需要说明的是,函数fliplr()对信号做时域翻褶,仅仅将信号中各个元素的次序作了一个反转,这种反转处理是独立于实践变量t和n的。因此,如果信号与其时间变量能够用一个数学函数来表达的话,那么建议将时间变量t和n的范围指定在一个正负对称的时间区间即可。

%% 信号的翻褶
t=0:0.02:1;
x=3*t;
f=fliplr(x);
t1=-1:0.02:0;
grid on
plot(t,x,t1,f,'r');
title('信号的翻褶');

4、信号的卷积

(1)离散卷积和

两个序列卷积运算的实现: s = c o n v ( f 1 , f 2 ) ; s=conv(f_1,f_2); s=conv(f1,f2);
s = c o n v ( f 1 , f 2 ) = ∑ i = − inf ⁡ i = i n f f 1 ( i ) f 2 ( k − i ) s=conv(f_1,f_2)=\sum_{i=-\inf}^{i=inf}f_1(i)f_2(k-i) s=conv(f1,f2)=i=infi=inff1(i)f2(ki)
其中,f_1(k),f_2(k)为离散序列,k=-2,-1,0,1,2,…。但是,conv函数只给出纵轴的序列值大小,而不能给出卷积的横轴序号。
对任意输入:设 f 1 ( k ) f_1(k) f1(k)的非零区间为 n 1   n 2 n_1~n_2 n1 n2,长度 L 1 = n 2 − n 1 + 1 L_1=n_2-n_1+1 L1=n2n1+1 f 2 ( k ) f_2(k) f2(k)的非零区间为 m 1   m 2 m_1~m_2 m1 m2,长度 L 2 = m 2 − m 1 + 1 L_2=m_2-m_1+1 L2=m2m1+1,则 s ( k ) = f 1 ( k ) ∗ f 2 ( k ) s(k)=f_1(k)*f_2(k) s(k)=f1(k)f2(k)的非零区间从 n 1 + m 1 n_1+m_1 n1+m1开始,长度为 L = L 1 + L 2 − 1 L=L_1+L_2-1 L=L1+L21,所以 S ( k ) S(k) S(k)的非零区间为 n 1 + m 1   n 1 + m 1 + L − 1 n_1+m_1~n_1+m_1+L-1 n1+m1 n1+m1+L1
例题5:

%% 离散卷积和
Nx=20;Nh=10;%设定序列x与序列h的长度
n=0:Nx-1;
x=0.9.^n;
nh=0:Nh-1;
h=(nh==3);
ny=-Nh+1:Nx-1;
y=conv(x,h);% 计算序列x与序列h的相关结果
subplot(311);
stem(n,x);
xlabel('n');ylabel('x(n)');
subplot(3,1,2);stem(nh,h);
xlabel('n');ylabel('h(n)');
subplot(3,1,3);
stem(ny,y);
xlabel('n');ylabel('y(n)');

(2)连续卷积和离散卷积关系

因为计算机本身不能直接处理连续信号,只能由离散信号来进行近似。
在这里插入图片描述
可以用离散卷积和conv()求连续卷积,只需delta足够小以及在卷积和的基础上乘以delta。

(3)连续卷积坐标的确定

f 1 ( t ) f_1(t) f1(t)的非零值坐标范围为 t 1   t 2 t_1~t_2 t1 t2,间隔P:非零值坐标范围为 t t 1   t t 2 tt_1~tt_2 tt1 tt2 s ( t ) = f 1 ( t ) ∗ f 2 ( t ) s(t)=f_1(t)*f_2(t) s(t)=f1(t)f2(t)的非零值坐标为 t 1 + t t 1   t 2 + t t 2 + 1 t_1+tt_1~t_2+tt_2+1 t1+tt1 t2+tt2+1
MATLAB实现过程:
(1)将连续信号 f 1 ( t ) , f 2 ( t ) f_1(t),f_2(t) f1(t),f2(t)以时间间隔delta进行取样,得离散序列 f 1 ( k δ ) , f 2 ( k δ ) f_1(k\delta),f_2(k\delta) f1(kδ),f2(kδ)
(2)构造 f 1 ( k δ ) , f 2 ( k δ ) f_1(k\delta),f_2(k\delta) f1(kδ),f2(kδ)与相对应的时间向量 k 1 k_1 k1 k 2 k_2 k2
(3)调用conv()函数计算卷积积分 f ( t ) f(t) f(t)的近似向量 f ( k δ ) f(k\delta) f(kδ)
(4)构造 f ( k δ ) f(k\delta) f(kδ)对应的时间向量k。
计算出卷积积分的函数:

function [f,k] = sconv(f1,f2,k1,k2,p)
%sconv 计算连续信号卷积积分f(t)=f1(t)*f2(t)
%   f:卷积积分f(t)对应的非零值向量
%   k:f(t)的对应时间向量
%   f1,f2:f1(t),f2(t)的非零样值向量
%   k1,k2:f1(t),f2(t)的对应时间向量
%   p:取样时间间隔
f=conv(f1,f2);%计算序列f1,f2的卷积和f
f=f*p;
k0=k1(1)+k2(1);%计算序列非零样值的起始点位置
k3=length(f1)+length(f2)-2;%计算卷积和f的非零样值的宽度
k=k0:p:k3*p;%计算卷积和f的非零样值的时间向量
subplot(221);
plot(k1,f1);title('f1(t)');xlabel('t');ylabel('f1(t)');
subplot(222)
plot(k2,f2);title('f2(t)');xlabel('t');ylabel('f2(t)');
subplot(223)
plot(k,f);%画出卷积f(t)的波形
title('f(t)=f1(t)*f2(t)');xlabel('t');ylabel('f(t)');
h=get(gca,'position');
h(3)=2.5*h(3);
set(gca,'position',h);%将第三个子图的横坐标扩展为原来的2.5倍
end

例题6:

%% 连续卷积和离散卷积的关系
p=0.01;k1=0:p:2;
f1=exp(-k1);
k2=0:p:3;
f2=ones(1,length(k2));
[f,k]=sconv(f1,f2,k1,k2,p);

5、信号的相关运算

两序列相关运算的数字描述为:
y ( m ) = ∑ n x 1 ( n ) x 2 ( n − m ) y(m)=\sum_nx_1(n)x_2(n-m) y(m)=nx1(n)x2(nm)
两序列的相关运算为:

y=xcorr(x1,x2);

说明,若两序列具有相同的长度M,则相关序列 y ( n ) y(n) y(n)的长度为2M-1。若两序列的长度不同,则短者将自动填充0。
例题7:

%% 信号的相关运算
Nx=20;Nh=10;
n=0:nx-1;
x=0.9.^n;%产生序列x
nh=0:Nh-1;
h=ones(1,Nh);%产生序列h
y=xcorr(x,h);%计算序列x与序列h的相关结果
subplot(311);stem(n,x);
xlabel('n');ylabel('x(n)');
subplot(312);stem(nh,h);
xlabel('n');ylabel('h(n)');
subplot(313);stem(ny,y);
xlabel('n');ylabel('y(n)');

6、信号的累加

序列累加的数学描述:
y ( n ) = ∑ i = n s n x ( i ) y(n)=\sum_{i=n_s}^nx(i) y(n)=i=nsnx(i)
MATLAB中可以用cumsum函数来实现:

y=cumsum(x);

7、信号的能量

序列能量的数学描述为:
E = ∑ n = 0 N x [ n ] x ∗ [ n ] E=\sum_{n=0}^Nx[n]x^*[n] E=n=0Nx[n]x[n]

E=sum(abs(x).^2);

8、信号的功率

序列功率的数学表述为:
P = 1 / N ∑ n = 0 N − 1 ∣ x ( n ) ∣ 2 P=1/N\sum_{n=0}^{N-1}|x(n)|^2 P=1/Nn=0N1x(n)2

E=sum(abs(x).^2)/N;

例题8:

%% 信号的平均功率
dt=0.001;
t=0:dt:2*pi;
x=cos(t);
P=sum(abs(x).^2*dt)./(2*pi);
参考文献

赵鸿图,茅艳. 通信原理MATLAB仿真教程. 人民邮电出版社,2010.

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 通信系统仿真原理与无线应用是一本关于通信系统仿真与无线应用的PDF书籍。该书主要介绍了通信系统仿真的原理和方法以及在无线应用中的具体应用。 通信系统仿真是通过使用计算机模拟真实的通信系统工作环境,从而预测和分析系统的性能和行为的一种方法。该方法能够通过模拟不同的系统配置、信道、调制解调技术等参数,来评估系统在不同场景下的性能表现。仿真可以帮助工程师们设计、优化和验证通信系统的性能,提高系统的可靠性和性能。 无线应用是指在无线通信领域广泛应用的各种技术和应用,如移动通信、卫星通信、无线传感器网络等。无线通信技术的快速发展和广泛应用使得越来越多的人对无线应用有了浓厚的兴趣与需求。该书包含了无线应用的相关知识,旨在帮助读者了解无线技术的基本原理、应用场景和设计方法。 本书从理论到实践形成了较为完整的结构,主要包含以下内容: 1. 通信系统仿真的基本原理和方法:介绍了通信系统仿真的概念、流程和技术,包括仿真模型的建立、信道模型的选择以及仿真结果的评估方法。 2. 无线应用的基本概念和技术:介绍了无线通信系统的基本组成和工作原理,包括调制解调技术、多址技术、天线设计等。 3. 无线应用场景与应用案例:通过实际案例和应用场景,介绍了无线通信在不同领域中的应用,如移动通信中的无线网络覆盖、卫星通信中的链路设计等。 通过阅读该书籍,读者可以了解通信系统仿真的原理与方法,了解无线通信技术的基本原理和应用场景,从而能够更好地进行通信系统的设计、优化和验证工作。同时,该书还通过实践案例的介绍,帮助读者更好地理解无线应用在现实生活中的具体应用。 ### 回答2: 通信系统仿真原理与无线应用pdf 是一本介绍通信系统仿真原理和无线应用的PDF电子书。本书主要涵盖了如何使用计算机模拟和仿真的方法来研究和设计各种通信系统,并结合无线应用领域的实际案例进行讲解。 首先,本书介绍了通信系统仿真的基本原理。通信系统的仿真是通过计算机模拟真实的通信系统来进行研究和评估的一种方法。它可以用来验证和优化通信系统的性能、分析各种干扰和噪声对系统性能的影响、设计和测试信号处理算法等。通过仿真,我们可以更加深入地了解通信系统的工作原理和性能特点。 其次,本书重点介绍了无线应用领域中的通信系统仿真。无线通信系统是现代通信技术的重要组成部分,涵盖了无线传感器网络、移动通信、卫星通信、物联网等广泛应用。本书通过讲解无线通信系统的仿真方法和技术,帮助读者理解无线应用领域的通信系统设计和优化。 此外,本书还介绍了一些实际的案例和应用。通过对一些经典的通信系统案例的仿真和分析,读者可以更加直观地了解通信系统仿真的应用价值和方法。这些案例涵盖了不同的通信系统类型和应用场景,有助于读者从实际问题出发,将仿真理论与实际应用相结合。 综上所述,通信系统仿真原理与无线应用pdf 是一本系统介绍通信系统仿真原理和无线应用的电子书,适用于对通信系统和无线应用感兴趣的读者,既提供仿真原理的理论基础,也具有实际应用的案例,帮助读者深入理解并应用通信系统仿真技术。 ### 回答3: 通信系统仿真原理与无线应用pdf是一本介绍通信系统仿真原理和无线应用的电子书籍,主要内容包括仿真原理的概念、方法和技术以及无线应用的基本知识和应用场景。通过该书籍,读者可以了解通信系统仿真的基本原理和步骤,掌握通信系统仿真的基本方法和技术,以及学习无线应用的基本概念和实际应用。 在通信系统仿真原理方面,该书籍介绍了通信系统仿真的基本概念和流程,包括建立仿真模型、选择仿真工具和进行参数设置等。同时,还介绍了通信系统仿真中常用的方法和技术,如传输信道建模、调制解调模型、信号处理技术等。通过学习这些内容,读者可以了解到通信系统仿真的基本原理和步骤,从而能够在实际应用中灵活运用仿真技术,提高通信系统的性能和可靠性。 在无线应用方面,该书籍介绍了无线通信的基本知识和应用场景,例如无线网络、移动通信和无线传感器网络等。同时,还介绍了无线应用中常用的技术和方法,如无线信道建模、调制解调技术、功率控制和多址技术等。通过学习这些内容,读者可以了解到无线应用的基本原理和实际应用,从而能够设计和优化无线通信系统,提高无线通信的覆盖范围和传输质量。 总之,通信系统仿真原理与无线应用pdf是一本介绍通信系统仿真原理和无线应用的电子书籍,主要内容包括仿真原理的概念、方法和技术以及无线应用的基本知识和应用场景。通过学习该书籍,读者可以了解到通信系统仿真的基本原理和步骤,掌握通信系统仿真的基本方法和技术,以及学习无线应用的基本概念和实际应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值