matlab与通信仿真_第三章 随机信号和数字基带仿真_图文

第2-1页Matlab与通信仿真

主讲教师:和煦

通信基础实验教学中心

第2-2页

内容提要

Matlab基础知识

1Matlab计算结果可视化和确知信号分析23模拟调制Matlab实现4模拟信号的数字传输5数字频带传输系统6通信系统仿真综合实验

7

随机信号和数字基带仿真

本章目标

?掌握库函数产生随机数方法

?理解采用蒙特卡罗算法仿真的思想?基带信号波形生成和其功率谱密度

第2-3页

3.1随机信号产生与功率谱密度基本原理?(1)库函数产生随机数

?均匀分布的随机数——rand函数产生(0,1)内均匀分布的随机数?1)x=rand(m);

?2)x=rand(m,n);

?3)x=rand;

第2-4页

?高斯分布的随机数——randn函数产生均值为0,方差为1的高斯分布的随机数。

?1)x=randn(m);

?2)x=randn(m,n);

?3)x=randn

第2-5页

?例3-1产生一个(0,1)上均匀分布的白噪声信号u(n),画出其波形,并检验其分布。

?clc,clear; %清除内存中可能保留的MATLAB变量

?N=500000; %u(n)的长度

?u=rand(1,N); %调用rand,得到均匀分布的随机数u(n)

?u_mean=mean(u); %求u(n)均值

?power_u=var(u); %求u(n)方差

?subplot(211)

?plot(u(1:100));grid on;%在一个图上分上下两个子图

?ylabel('u(n) '); %给y轴加坐标

?xlabel('n'); %给x轴加坐标

?subplot(212)

?hist(u,50);grid on;

?%对u(n)做直方图,检验其分布,50是对取值范围[0 1]均分等分50份。?ylabel('histogram of u(n)');

第2-6页

第2-7页

20

40

60

80

100

00.20.40.60.81u (n )

n

00.20.40.60.81

5000

1000015000h i s t o g r a m o f u (n )

应如何表示?

?如果x是(0,1)内均匀分布的随机信号,那么u=cx+d

第2-8页

?例3-2 产生一个均值为0.01,功率为0.1的均匀分布的白噪声信号u(n),画出其波形。

?clc,clear;

?P=0.1; % 希望的功率

?mu=0.01; % 希望的均值

?N=50000; % 序列长度

?x=rand(1,N); % 生产N个[0,1]上均匀分布的随机序列x

?temp=var(x); % x序列的方差

?c=sqrt((P-mu^2)/var(x));% 求系数c

?d=mu-c*mean(x); % 求系数d

?u=c*x+d; % 求均值为ma、功率为P的随机序列u

?mean_u=mean(u); % 求随机序列u的均值

?power_u=dot(u,u)/N; % 求随机序列u的功率,检验u1(n)的功率是否满足要求dot是matlab内部函数,实现两个向量的乘积,该句等效于var 第2-9页

第2-10页

?subplot(211);?plot(u(1:200));grid on;?ylabel('u(n)');?xlabel('n');?subplot(212);?hist(u,50);grid on;

?%对u(n)做直方图,检验其分布,?%50是对取值范围[0 1]?%均分等分50份。?ylabel('histogram of u(n)');

50

100150

200

-1-0.500.51u (n )

n

-0.8

-0.6-0.4-0.200.20.40.6

050010001500

h i s t o g r a m o f u (n )

第2-11页

?例3-3 产生一个均值为0,方差为0.1,服从高斯分布的白噪声信号u(n),画出其波形.?clc,clear;?p=0.1;?N=500000;?u=randn(1,N);?a=sqrt(p);?u=u*a;?power_u=var(u);?subplot(211)?plot(u(1:200));grid on;?ylabel('u(n) '); ?xlabel('n'); ?subplot(212)?hist(u,50);grid on;

?ylabel('histogram of u(n) ');

050100150

200

-1

-0.500.51u (n ) n

-2-1.5-1-0.500.51

1.5

1234

x 104h i s t o g r a m o f u (n )

?例3-4 通过Matlab中的函数rand产生[0,1]均匀分布的随机变量,并用其产生一个0、1的随机序列,其中:0的概率为p=0.3。

?clc,clear;

?p=0.3;

?m=2;

?n=2;

?s=rand01(p,m,n)?%%%%%%%%%%%%%%%%%%%%%%%%

?function s=rand01(p,m,n)%产生一个(p,1-p)的0-1随机变量,文件rand01.m

?% 输入参数:

?% p:0-1分布中1的概率

?% m,n:产生的随机变量样本个数m×n

?% 输出:产生的随机变量样本矢量

?x=rand(m,n);

?s=(sign(x-p+eps)+1)/2;% eps = 2^(-52).

第2-12页

?例3-5 通过Matlab中的函数randn产生σ2=2,N(0,1)的高斯随机变量,并用其产生的瑞利分布随机变量。

?解:可以证明,两个独立同分布、均值为0的高斯随机变量N(0,σ2 )的平方和开根号所得的随机变量服从功率为2σ2的瑞利分布。

?clc,clear;

?sigma2=2;

?m=2;

?n=2;

?s=rayleigh(sigma2,m,n)?%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%?function s=rayleigh(sigma2,m,n)

?% 输入参数: sigma2,瑞利分布的功率;m,n: 输出m×n个样本

?x=sqrt(sigma2/2)*randn(m,n);

?y=sqrt(sigma2/2)*randn(m,n);

?s=sqrt(x.*x+y.*y);

第2-13页

? 2 基带信号波形生成和其功率谱密度

?要画出完整的波形,每一个码元要采 n个样,如果一个N个码元的0、1序列x,要画出它的矩形脉冲波形,可以用如下方法完成。

?例3-6 产生一个N码元,每码元采样n个的0、1序列。

?N=100; % 二进制序列的长度

?dsource =(sign(rand(1,N)-0.5+eps)+1)/2; % 生成N码元的0、1序列?n=10; % 每周期采样数为10

?temp1=ones(1,n); %表示1码

?temp0=zeros(1,n); %表示0码

?new_dsource=[];

第2-14页

?for i=1:length(dsource)

?if dsource(i)==0

?new_dsource=[new_dsource temp0];

?else

?new_dsource=[new_dsource temp1];

?end

?end

?T=0.10; % 每码元周期

?t=0:T/n:T/n*(length(new_dsource)-1); % 时间轴,new_dsource序号从1开始(length(new_dsource),而t是从0开始,故要减去1?plot(t,new_dsource)

?axis([min(t)-0.01,max(t)+0.01,min(new_dsource)-

0.01,max(new_dsource)+0.01]);

第2-15页

第2-16页

2

4

6

8

10

00.10.20.30.40.50.60.70.80.91

第2-17页

?信号f(t)的功率谱密度

?例题3-7 求叠加了高斯噪声的正弦信号的功率谱密度. ?clc,clear;

?t=0:0.001:0.6; %时域信号的时间范围?x=0.4*sin(2*pi*50*t)+0.4*sin(2*pi*320*t); %正弦信号?y=x+ randn(size(t)); %正弦信号+噪声?subplot(2,1,1);?plot(t(1:100),y(1:100));?title('0均值的随机信号')?xlabel('时间 (秒)')

T

F im

l P T T 2

)()(ωω∞

→=

?Nf=length(t);

?Y=fft(y,Nf); %求有限长(正弦+噪声)信号的傅里叶变换?Pyy=abs(Y).^2/Nf; %求傅里叶变换模平方的均值

?f=1000*(0:(Nf-1)/2)/Nf; %得到频率轴,1000=1/dt,频率区间长度,见第二章定义,这里只画出了正半轴,注意区间长度

?subplot(2,1,2);

?plot(f,Pyy(1:((Nf-1)/2+1)));%注意区间长度

?title('信号的功率谱密度');

?xlabel('频率(Hz)');

第2-18页

第2-19页

0.02

0.040.060.080.1

-4-20240均值的随机信号

时间 (秒)0

100

200

300

400

500

010203040信号的功率谱密度

频率(Hz)

?例3-8 求单极性0、1随机序列的功率谱密度。

?clc,clear;

?N=1000; %0、1序列长度

?dsource =(sign(rand(1,N)-0.5+eps)+1)/2; %生成长度为N的0、1序列?n=10; %每码元采n=10个样值

?temp1=ones(1,n);temp0=zeros(1,n);

?new_dsource=[];

?for i=1:length(dsource)

? if dsource(i)==0

? new_dsource=[new_dsource temp0];

? else

? new_dsource=[new_dsource temp1];

? end

?end

第2-20页

数字信号处理的MATLAB实现

昆明理工大学信息工程与自动化学院学生实验报告 (2011—2012 学年第二学期) 课程名称:数字信号处理开课实验室:信自楼111 2012 年 5 月 31 日年级、专业、班生医学号姓 名 成绩 实验项目名称数字信号处理的matlab 实现指导教师 教 师 评语教师签名: 年月日 一.实验目的 熟练掌握matlab的基本操作。 了解数字信号处理的MATLAB实现。 二.实验设备 安装有matlab的PC机一台。 三.实验内容 .1.求信号x(n)=cos(6.3Пn/3)+cos(9.7Пn/30)+cos(15.3Пn/30),0≤n≤29的幅度频谱. 2. 用冲击响应不变法设计一个Butterworth低通数字滤波器,要求参数为: Wp=0.2Пαp=1dB Ws=0.3Пαs=15dB 3.用双线性变换法设计一个Chebyshev高通IIR滤波器,要求参数为: Wp=0.6Пαp=1dB Ws=0.4586Пαs=15dB 4.用窗函数法设计一个低通FIR滤波器,要求参数为: Wp=0.2Пαp=0.3dB Ws=0.25Пαs=50dB 5.用频率抽样法设计一个带通FIR滤波器,要求参数为: W1s=0.2П W1p=0.35П W2p=0.65П W2s=0.8П αs=60dB αp=1dB 6.根据 4 点矩形序列,( n ) = [1 1 1 1] 。做 DTFT 变换,再做 4 点 DFT 变换。然后分别补零做 8 点 DFT 及 16 点 DFT。 7.调用filter解差分方程,由系统对u(n)的响应判断稳定性 8编制程序求解下列系统的单位冲激响应和阶跃响应。 y[n]+ 0.75y[n -1]+ 0.125y[n -2] = x[n]- x[n -1] 四.实验源程序 1. n=[0:1:29]; x=cos(6.3*pi*n/30)+cos(9.7*pi*n/30)+cos(15.3*pi*n/30);

Matlab通信系统仿真实验报告

Matlab通信原理仿真 学号: 2142402 姓名:圣斌

实验一Matlab 基本语法与信号系统分析 一、实验目的: 1、掌握MATLAB的基本绘图方法; 2、实现绘制复指数信号的时域波形。 二、实验设备与软件环境: 1、实验设备:计算机 2、软件环境:MATLAB R2009a 三、实验内容: 1、MATLAB为用户提供了结果可视化功能,只要在命令行窗口输入相应的命令,结果就会用图形直接表示出来。 MATLAB程序如下: x = -pi::pi; y1 = sin(x); y2 = cos(x); %准备绘图数据 figure(1); %打开图形窗口 subplot(2,1,1); %确定第一幅图绘图窗口 plot(x,y1); %以x,y1绘图 title('plot(x,y1)'); %为第一幅图取名为’plot(x,y1)’ grid on; %为第一幅图绘制网格线 subplot(2,1,2) %确定第二幅图绘图窗口 plot(x,y2); %以x,y2绘图 xlabel('time'),ylabel('y') %第二幅图横坐标为’time’,纵坐标为’y’运行结果如下图: 2、上例中的图形使用的是默认的颜色和线型,MATLAB中提供了多种颜色和线型,并且可以绘制出脉冲图、误差条形图等多种形式图: MATLAB程序如下: x=-pi:.1:pi; y1=sin (x); y2=cos (x); figure (1); %subplot (2,1,1); plot (x,y1); title ('plot (x,y1)'); grid on %subplot (2,1,2); plot (x,y2);

数字信号处理Matlab实现实例(推荐给学生)

数字信号处理Matlab 实现实例 第1章离散时间信号与系统 例1-1 用MATLAB计算序列{-2 0 1 –1 3}和序列{1 2 0 -1}的离散卷积。 解 MATLAB程序如下: a=[-2 0 1 -1 3]; b=[1 2 0 -1]; c=conv(a,b); M=length(c)-1; n=0:1:M; stem(n,c); xlabel('n'); ylabel('幅度'); 图1.1给出了卷积结果的图形,求得的结果存放在数组c中为:{-2 -4 1 3 1 5 1 -3}。 例1-2 用MATLAB计算差分方程 当输入序列为时的输出结果。 解 MATLAB程序如下: N=41; a=[0.8 -0.44 0.36 0.22]; b=[1 0.7 -0.45 -0.6]; x=[1 zeros(1,N-1)];

k=0:1:N-1; y=filter(a,b,x); stem(k,y) xlabel('n');ylabel('幅度') 图 1.2 给出了该差分方程的前41个样点的输出,即该系统的单位脉冲响应。 例1-3 用MATLAB 计算例1-2差分方程 所对应的系统函数的DTFT 。 解 例1-2差分方程所对应的系统函数为: 123 123 0.80.440.360.02()10.70.450.6z z z H z z z z -------++= +-- 其DTFT 为 23230.80.440.360.02()10.70.450.6j j j j j j j e e e H e e e e ωωωω ωωω--------++= +-- 用MATLAB 计算的程序如下: k=256; num=[0.8 -0.44 0.36 0.02]; den=[1 0.7 -0.45 -0.6]; w=0:pi/k:pi; h=freqz(num,den,w); subplot(2,2,1); plot(w/pi,real(h));grid title('实部') xlabel('\omega/\pi');ylabel('幅度')

基于MATLAB的数字信号发生器报告

基于MATLAB的数字信号发生器设计报告 摘要:数字信号发生器是基于软硬件实现的一种波形发生仪器。在工工程实践中需要检测和分析的各种复杂信号均可分解成各简单信号之和,而这些简单信号皆可由数字信号发生器模拟产生,因此它在工程分析和实验教学有着广泛的应用。MATLAB是一个数据分析和处理功能十分强大的工程实用软件,他的数据采集工具箱为实现数据的输入和输出提供了十分方便的函数和命令,在数字信号处理方面方便实用。本文介绍了使用MATLAB建立一个简单数字信号发生器的基本流程,并详细叙述了简单波形(正弦波、方波、三角波、锯齿波、白噪声)信号的具体实现方法。 关键字:MATLAB ,数字信号发生器 1概述 随着计算机软硬件技术的发展,越来越多现实物品的功能能够由计算机实现。信号发生器原本是模拟电子技术发展的产物,到后来的数字信号发生器也是通过硬件实现的,本文将给出通过计算机软件实现的数字信号发生器。 信号发生器是一种常用的信号源,广泛应用于电子技术实验、自控系统和科学研究等领域。传统的台式仪器如任意函数发生器等加工工艺复杂、价格高、仪器面板单调、数据存储、处理不方便。以Matlab

和LabVlEW 为代表的软件的出现,轻松地用虚拟仪器技术解决了这些问题。 Matlab 是一个数据分析和处理功能十分强大的工程实用软件,他的数据采集工具箱(data acquisition toolbox )为实现数据的输入和输出提供了十分方便的函数和命令,利用这些函数和命令可以很容易地实现对外部物理世界的信号输出和输入。根据声卡输出信号的原理,采用Matlab 软件编程,可以方便地输出所需要的正弦波、三角波、方波等多种信号,有效地实现信号发生器的基本功能。 2 设计原理 要设计的数字信号有正弦信号、方波信号、三角波、锯齿波、白噪声、脉冲信号。其中,前五种波形都可以利用MATLAB 提供的函数实现,并根据输入的幅值、相位、频率等信息进行调整。脉冲信号由自己编写程序实现,并以定义的时间节点控制脉冲出现的时刻。 2.1 正弦信号的实现 正弦波信号的数学表达式如2.1, ()sin 2y A ft πφ=+ 2.1 其中:A 为幅值; f 为频率; φ为相位。 在MATLAB 中,相应的数字信号可以由下式2.2计算,

matlab通信仿真常用函数

信源函数 randerr 产生比特误差样本 randint 产生均匀分布的随机整数矩阵 randsrc 根据给定的数字表产生随机矩阵 wgn 产生高斯白噪声 信号分析函数 biterr 计算比特误差数和比特误差率 eyediagram 绘制眼图 scatterplot 绘制分布图 symerr 计算符号误差数和符号误差率 信源编码 compand mu律/A律压缩/扩张 dpcmdeco DPCM(差分脉冲编码调制)解码dpcmenco DPCM编码 dpcmopt 优化DPCM参数 lloyds Lloyd法则优化量化器参数 quantiz 给出量化后的级和输出值 误差控制编码 bchpoly 给出二进制BCH码的性能参数和产生多项式convenc 产生卷积码 cyclgen 产生循环码的奇偶校验阵和生成矩阵cyclpoly 产生循环码的生成多项式 decode 分组码解码器 encode 分组码编码器 gen2par 将奇偶校验阵和生成矩阵互相转换gfweight 计算线性分组码的最小距离 hammgen 产生汉明码的奇偶校验阵和生成矩阵rsdecof 对Reed-Solomon编码的ASCII文件解码rsencof 用Reed-Solomon码对ASCII文件编码rspoly 给出Reed-Solomon码的生成多项式

syndtable 产生伴随解码表 vitdec 用Viterbi法则解卷积码 (误差控制编码的低级函数) bchdeco BCH解码器 bchenco BCH编码器 rsdeco Reed-Solomon解码器 rsdecode 用指数形式进行Reed-Solomon解码 rsenco Reed-Solomon编码器 rsencode 用指数形式进行Reed-Solomon编码 调制与解调 ademod 模拟通带解调器 ademodce 模拟基带解调器 amod 模拟通带调制器 amodce 模拟基带调制器 apkconst 绘制圆形的复合ASK-PSK星座图 ddemod 数字通带解调器 ddemodce 数字基带解调器 demodmap 解调后的模拟信号星座图反映射到数字信号dmod 数字通带调制器 dmodce 数字基带调制器 modmap 把数字信号映射到模拟信号星座图(以供调制)qaskdeco 从方形的QASK星座图反映射到数字信号qaskenco 把数字信号映射到方形的QASK星座图 专用滤波器 hank2sys 把一个Hankel矩阵转换成一个线性系统模型hilbiir 设计一个希尔伯特变换IIR滤波器 rcosflt 升余弦滤波器 rcosine 设计一个升余弦滤波器 (专用滤波器的低级函数) rcosfir 设计一个升余弦FIR滤波器 rcosiir 设计一个升余弦IIR滤波器 信道函数

数字信号处理MATLAB中FFT实现

MATLAB中FFT的使用方法 说明:以下资源来源于《数字信号处理的MATLAB实现》万永革主编 一.调用方法 X=FFT(x); X=FFT(x,N); x=IFFT(X); x=IFFT(X,N) 用MATLAB进行谱分析时注意: (1)函数FFT返回值的数据结构具有对称性。 例: N=8; n=0:N-1; xn=[43267890]; Xk=fft(xn) → Xk= 39.0000-10.7782+6.2929i0-5.0000i 4.7782-7.7071i 5.0000 4.7782+7.7071i0+5.0000i-10.7782-6.2929i Xk与xn的维数相同,共有8个元素。Xk的第一个数对应于直流分量,即频率值为0。 (2)做FFT分析时,幅值大小与FFT选择的点数有关,但不影响分析结果。在IFFT时已经做了处理。要得到真实的振幅值的大小,只要将得到的变换后结果乘以2除以N即可。 二.FFT应用举例 例1:x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t)。采样频率fs=100Hz,分别绘制N=128、1024点幅频图。

clf; fs=100;N=128;%采样频率和数据点数 n=0:N-1;t=n/fs;%时间序列 x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t);%信号 y=fft(x,N);%对信号进行快速Fourier变换 mag=abs(y);%求得Fourier变换后的振幅 f=n*fs/N;%频率序列 subplot(2,2,1),plot(f,mag);%绘出随频率变化的振幅 xlabel('频率/Hz'); ylabel('振幅');title('N=128');grid on; subplot(2,2,2),plot(f(1:N/2),mag(1:N/2));%绘出Nyquist频率之前随频率变化的振幅xlabel('频率/Hz'); ylabel('振幅');title('N=128');grid on; %对信号采样数据为1024点的处理 fs=100;N=1024;n=0:N-1;t=n/fs; x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t);%信号 y=fft(x,N);%对信号进行快速Fourier变换 mag=abs(y);%求取Fourier变换的振幅 f=n*fs/N; subplot(2,2,3),plot(f,mag);%绘出随频率变化的振幅 xlabel('频率/Hz'); ylabel('振幅');title('N=1024');grid on; subplot(2,2,4) plot(f(1:N/2),mag(1:N/2));%绘出Nyquist频率之前随频率变化的振幅 xlabel('频率/Hz'); ylabel('振幅');title('N=1024');grid on; 运行结果:

MATLAB数字信号处理

MATLAB 下的数字信号处理实现示例 附录一信号、系统和系统响应 1、理想采样信号序列 (1)首先产生信号x(n),0<=n<=50 n=0:50; A=444.128; a=50*sqrt(2.0)*pi; T=0.001; w0=50*sqrt(2.0)*pi; x=A*exp(-a*n*T).*sin(w0*n*T); close all subplot(3,1,1);stem(x); %定义序列的长度是50 %设置信号有关的参数 %采样率 %pi 是MATLAB 定义的π,信号乘可采用“.*”%清除已经绘制的x(n)图形 %绘制x(n)的图形 title(…理想采样信号序列?); (2)绘制信号x(n)的幅度谱和相位谱 k=-25:25; W=(pi/12.5)*k; X=x*(exp(-j*pi/12.5)).^(n?*k); magX=abs(X); %绘制x(n)的幅度谱subplot(3,1,2);stem(magX);title(…理想采样信号序列的幅度谱?); angX=angle(X); %绘制x(n)的相位谱subplot(3,1,3);stem(angX) ; title (…理想采样信号序列的相位谱?) (3)改变参数为:A = 1,? = 0.4, & 0 = 2.0734, T = 1 n=0:50; A=1; a=0.4; T=1; w0=2.0734; x=A*exp(-a*n*T).*sin(w0*n*T); close all subplot(3,1,1);stem(x); title(…理想采样信号序列?); k=-25:25; W=(pi/12.5)*k; X=x*(exp(-j*pi/12.5)).^(n?*k); magX=abs(X); %定义序列的长度是50 %设置信号有关的参数 %采样率 %pi 是MATLAB 定义的π,信号乘可采用“.*” %清除已经绘制的x(n)图形 %绘制x(n)的图形 %绘制x(n)的幅度谱 subplot(3,1,2);stem(magX);title(…理想采样信号序列的幅度谱?); angX=angle(X); %绘制x(n)的相位谱

MATLAB实现通信系统仿真实例

补充内容:模拟调制系统的MATLAB 仿真 1.抽样定理 为了用实验的手段对连续信号分析,需要先对信号进行抽样(时间上的离散化),把连续数据转变为离散数据分析。抽样(时间离散化)是模拟信号数字化的第一步。 Nyquist 抽样定律:要无失真地恢复出抽样前的信号,要求抽样频率要大于等于两倍基带信号带宽。 抽样定理建立了模拟信号和离散信号之间的关系,在Matlab 中对模拟信号的实验仿真都是通过先抽样,转变成离散信号,然后用该离散信号近似替代原来的模拟信号进行分析的。 【例1】用图形表示DSB 调制波形)4cos()2cos(t t y ππ= 及其包络线。 clf %%计算抽样时间间隔 fh=1;%%调制信号带宽(Hz) fs=100*fh;%%一般选取的抽样频率要远大于基带信号频率,即抽样时间间隔要尽可能短。 ts=1/fs; %%根据抽样时间间隔进行抽样,并计算出信号和包络 t=(0:ts:pi/2)';%抽样时间间隔要足够小,要满足抽样定理。 envelop=cos(2*pi*t);%%DSB 信号包络 y=cos(2*pi*t).*cos(4*pi*t);%已调信号 %画出已调信号包络线 plot(t,envelop,'r:','LineWidth',3); hold on plot(t,-envelop,'r:','LineWidth',3); %画出已调信号波形 plot(t,y,'b','LineWidth',3); axis([0,pi/2,-1,1])% hold off% xlabel('t'); %写出图例 【例2】用图形表示DSB 调制波形)6cos()2cos(t t y ππ= 及其包络线。 clf %%计算抽样时间间隔 fh=1;%%调制信号带宽(Hz) fs=100*fh;%抽样时间间隔要足够小,要满足抽样定理。 ts=1/fs; %%根据抽样时间间隔进行抽样

实验一 基于Matlab的数字信号处理基本

实验一 基于Matlab 的数字信号处理基本操作 一、 实验目的:学会运用MA TLAB 表示的常用离散时间信号;学会运用MA TLAB 实现离 散时间信号的基本运算。 二、 实验仪器:电脑一台,MATLAB6.5或更高级版本软件一套。 三、 实验内容: (一) 离散时间信号在MATLAB 中的表示 离散时间信号是指在离散时刻才有定义的信号,简称离散信号,或者序列。离散序列通常用)(n x 来表示,自变量必须是整数。 离散时间信号的波形绘制在MATLAB 中一般用stem 函数。stem 函数的基本用法和plot 函数一样,它绘制的波形图的每个样本点上有一个小圆圈,默认是空心的。如果要实心,需使用参数“fill ”、“filled ”,或者参数“.”。由于MATLAB 中矩阵元素的个数有限,所以MA TLAB 只能表示一定时间范围内有限长度的序列;而对于无限序列,也只能在一定时间范围内表示出来。类似于连续时间信号,离散时间信号也有一些典型的离散时间信号。 1. 单位取样序列 单位取样序列)(n δ,也称为单位冲激序列,定义为 ) 0() 0(0 1)(≠=?? ?=n n n δ 要注意,单位冲激序列不是单位冲激函数的简单离散抽样,它在n =0处是取确定的值1。在MATLAB 中,冲激序列可以通过编写以下的impDT .m 文件来实现,即 function y=impDT(n) y=(n==0); %当参数为0时冲激为1,否则为0 调用该函数时n 必须为整数或整数向量。 【实例1-1】 利用MATLAB 的impDT 函数绘出单位冲激序列的波形图。 解:MATLAB 源程序为 >>n=-3:3; >>x=impDT(n); >>stem(n,x,'fill'),xlabel('n'),grid on >>title('单位冲激序列') >>axis([-3 3 -0.1 1.1]) 程序运行结果如图1-1所示。 图1-1 单位冲激序列

(完整版)基于matlab的通信系统仿真毕业论文

创新实践报告
报 告 题 目: 学 院 名 称: 姓 名:
基于 matlab 的通信系统仿真 信息工程学院 余盛泽
班 级 学 号: 指 导 老 师: 温 靖

二 O 一四年十月十五日
目录
一、引言........................................................................................................................ 3 二、仿真分析与测试 ................................................................................................... 4
2.1 随机信号的生成 ............................................................................................................... 4 2.2 信道编译码 ........................................................................................................................ 4 2.2.1 卷积码的原理 ........................................................................................................ 4 2.2.2 译码原理 ................................................................................................................ 5 2.3 调制与解调 ....................................................................................................................... 5 2.3.1 BPSK 的调制原理 .................................................................................................. 5 2.3.2 BPSK 解调原理 ...................................................................................................... 6 2.3.3 QPSK 调制与解调 ................................................................................................. 7 2.4 信道 .................................................................................................................................... 8

数字信号处理MATLAB仿真

实验一 数字信号处理的Matlab 仿真 一、实验目的 1、掌握连续信号及其MA TLAB 实现方法; 2、掌握离散信号及其MA TLAB 实现方法 3、掌握离散信号的基本运算方法,以及MA TLAB 实现 4、了解离散傅里叶变换的MA TLAB 实现 5、了解IIR 数字滤波器设计 6、了解FIR 数字滤波器设计1 二、实验设备 计算机,Matlab 软件 三、实验内容 (一)、 连续信号及其MATLAB 实现 1、 单位冲击信号 ()0,0()1,0 t t t dt εεδδε-?=≠??=?>??? 例1.1:t=1/A=50时,单位脉冲序列的MA TLAB 实现程序如下: clear all; t1=-0.5:0.001:0; A=50; A1=1/A; n1=length(t1); u1=zeros(1,n1); t2=0:0.001:A1; t0=0; u2=A*stepfun(t2,t0); t3=A1:0.001:1; n3=length(t3); u3=zeros(1,n3); t=[t1 t2 t3]; u=[u1 u2 u3]; plot(t,u) axis([-0.5 1 0 A+2]) 2、 任意函数 ()()()f t f t d τδττ+∞ -∞=-? 例1.2:用MA TLAB 画出如下表达式的脉冲序列 ()0.4(2)0.8(1) 1.2() 1.5(1) 1.0(2)0.7(3)f n n n n n n n δδδδδδ=-+-+++++++

clear all; t=-2:1:3; N=length(t); x=zeros(1,N); x(1)=0.4; x(2)=0.8 x(3)=1.2; x(4)=1.5; x(5)=1.0; x(6)=0.7; stem(t,x); axis([-2.2 3.2 0 1.7]) 3、 单位阶跃函数 1,0()0,0t u t t ?≥?=?

Matlab通信系统建模与仿真例题源代码-第三章

% ch3example1A.m clear; f_p=2400; f_s=5000; R_p=3; R_s=25; % 设计要求指标 [n, fn]=buttord(f_p,f_s,R_p,R_s, 's'); % 计算阶数和截止频率 Wn=2*pi*fn; % 转换为角频率 [b,a]=butter(n, Wn, 's'); % 计算H(s) f=0:100:10000; % 计算频率点和频率范围 s=j*2*pi*f; % s=jw=j*2*pi*f H_s=polyval(b,s)./polyval(a,s); % 计算相应频率点处H(s)的值 figure(1); subplot(2,1,1); plot(f, 20*log10(abs(H_s))); % 幅频特性 axis([0 10000 -40 1]); xlabel('频率Hz');ylabel('幅度dB'); subplot(2,1,2); plot(f, angle(H_s)); % 相频特性 xlabel('频率Hz');ylabel('相角rad'); figure(2); freqs(b,a); % 也可用指令freqs直接画出H(s)的频率响应曲线。 % ch3example1B.m clear; f_p=2400; f_s=5000; R_p=3; R_s=25; % 设计要求指标 [n, fn]=ellipord(f_p,f_s,R_p,R_s,'s'); % 计算阶数和截止频率 Wn=2*pi*fn; % 转换为角频率 [b,a]=ellip(n,R_p,R_s,Wn,'s'); % 计算H(s) f=0:100:10000; % 计算频率点和频率范围 s=j*2*pi*f; % s=jw=j*2*pi*f H_s=polyval(b,s)./polyval(a,s); % 计算相应频率点处H(s)的值 figure(1); subplot(2,1,1); plot(f, 20*log10(abs(H_s))); % 幅频特性 axis([0 10000 -40 1]); xlabel('频率Hz');ylabel('幅度dB'); subplot(2,1,2); plot(f, angle(H_s)); % 相频特性 xlabel('频率Hz');ylabel('相角rad'); figure(2); freqs(b,a); % 也可用指令freqs直接画出H(s)的频率响应曲线。 % ch3example2A.m f_N=8000; % 采样率 f_p=2100; f_s=2500; R_p=3; R_s=25; % 设计要求指标 Ws=f_s/(f_N/2); Wp=f_p/(f_N/2); % 计算归一化频率 [n, Wn]=buttord(Wp,Ws,R_p,R_s); % 计算阶数和截止频率 [b,a]=butter(n, Wn); % 计算H(z) figure(1); freqz(b,a, 1000, 8000) % 作出H(z)的幅频相频图, freqz(b,a, 计算点数, 采样率)

数字信号处理MATLAB实验1

实验一熟悉MATLAB环境 一、实验目的 (1)熟悉MATLAB的主要操作命令。 (2)学会简单的矩阵输入和数据读写。 (3)掌握简单的绘图命令。 (4)用MATLAB编程并学会创建函数。 (5)观察离散系统的频率响应。 二、实验内容 认真阅读本章附录,在MATLAB环境下重新做一遍附录中的例子,体会各条命令的含义。在熟悉了MATLAB基本命令的基础上,完成以下实验。 上机实验内容: (1)数组的加、减、乘、除和乘方运算。输入A=[1234],B=[345 6],求C=A+B,D=A-B,E=A.*B,F=A./B,G=A.^B并用stem语句画出 A、B、C、D、E、F、G。 (2)用MATLAB实现以下序列。 a)x(n)=0.8n0≤n≤15 b)x(n)=e(0.2+3j)n0≤n≤15 c)x(n)=3cos(0.125πn+0.2π)+2sin(0.25πn+0.1π)0≤n≤15 (n)=x(n+16),绘出四个d)将c)中的x(n)扩展为以16为周期的函数x 16 周期。 (n)=x(n+10),绘出四个e)将c)中的x(n)扩展为以10为周期的函数x 10 周期。

(3)x(n)=[1,-1,3,5],产生并绘出下列序列的样本。 a)x 1(n)=2x(n+2)-x(n-1)-2x(n) b)∑=-=5 1k 2) k n (nx (n) x (4)绘出下列时间函数的图形,对x轴、y轴以及图形上方均须加上适当的标注。 a)x(t)=sin(2πt)0≤t≤10s b)x(t)=cos(100πt)sin(πt) 0≤t≤4s (5)编写函数stepshift(n0,n1,n2)实现u(n-n0),n1

MATLAB实现数字信号处理

《数字信号处理》课程设计实例: 声音信号的处理 一.摘要: 这次课程设计的主要目的是综合运用本课程的理论知识进行频谱分析以及滤波器设计,通过理论推导得出相应结论,并利用MATLAB或者DSP开发系统作为工具进行实现,从而复习巩固课堂所学的理论知识,提高对所学知识的综合应用能力,并从实践上初步实现对数字信号的处理。通过对声音的采样,将声音采样后的频谱与滤波。 MATLAB全称是Matrix Laboratory,是一种功能强大、效率高、交互性好的数值和可视化计算机高级语言,它将数值分析、矩阵运算、信号处理和图形显示有机地融合为一体,形成了一个极其方便、用户界面友好的操作环境。。经过多年的发展,已经发展成为一种功能全面的软件,几乎可以解决科学计算中所有问题。MATLAB软件还提供了非常广泛和灵活的用于处理数据集的数组运算功能。 在本次课程设计中,主要通过MATLAB来编程对语音信号处理与滤波,设计滤波器来处理数字信号并对其进行分析。 二.课程设计目的: 综合运用本课程的理论知识进行频谱分析以及滤波器设计,通过理论推导得出相应结论,并利用MATLAB作为工具进行实现,从而复习巩固课堂所学的理论知识,提高对所学知识的综合应用能力,并从实践上初步实现对数字信号的处理。 三.设计容: 容:录制一段个人自己的语音信号,并对录制的信号进行采样;画出采样后语音信号的时域波形和频谱图;给定滤波器的性能指标,采用窗函数法和双线性

变换法设计滤波器,并画出滤波器的频率响应;然后用自己设计的滤波器对采集的信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化;回放语音信号;换一个与你性别相异的人录制同样一段语音容,分析两段容相同的语音信号频谱之间有什么特点;再录制一段同样长时间的背景噪声叠加到你的语音信号中,分析叠加前后信号频谱的变化,设计一个合适的滤波器,能够把该噪声滤除。 四.设计原理: 4.1.语音信号的采集 熟悉并掌握MATLAB中有关声音(wave)录制、播放、存储和读取的函数,在MATLAB环境中,有关声音的函数有: a:y=wavrecord(N,fs,Dtype);利用系统音频输入设备录音,以fs为采样频率,默认值为11025,即以11025HZ进行采样。Dtype为采样数据的存储格式,用字符串指定,可以是:‘double’、‘single’、’int16’、‘int8’其中只有int8是采用8位精度进行采样,其它三种都是16位采样结果转换为指定的MATLAB数据; b:wavplay(y,fs);利用系统音频输出设备播放,以fs为播放频率,播放语音信号y; c:wavwrite((y,fs,wavfile);创建音频文件; d:y=wavread(file);读取音频文件; 关于声音的函数还有sound();soundsc();等。 4.2滤波器: 4.21.IIR滤波器原理 冲激响应不变法是使数字滤波器在时域上模拟滤波器,但是它们的缺点是产生频率响应的混叠失真,这是由于从s平面到z平面是多值的映射关系所造成的。 双线性变换法是使数字滤波器的频率响应与模拟滤波器的频率响应相似的一种变换方法。为了克服多值映射这一缺点,我们首先把整个s平面压缩变换到某一中介的s1平面的一条横带里,再通过变换关系将此横带变换到整个z平面上去,这样就使得s平面与z平面是一一对应的关系,消除了多值变换性,也就消除了频谱混叠现象。

基于matlab的通信系统仿真

创新实践报告 报告题目: 基于matlab的通信系统仿真学院名称: 信息工程学院 姓名: 班级学号: 指导老师: 二O一四年十月十五日

一、引言 现代社会发展要求通信系统功能越来越强,性能越来越高,构成越来越复杂;另一方面,要求通信系统技术研究与产品开发缩短周期,降低成本,提高水平。这样尖锐对立的两个方面的要求,只有通过使用强大的计算机辅助分析设计技术与工具才能实现。在这种迫切的需求之下,MA TLAB应运而生。它使得通信系统仿真的设计与分析过程变得相对直观与便捷,由此也使得通信系统仿真技术得到了更快的发展。通信系统仿真贯穿着通信系统工程设计的全过程,对通信系统的发展起着举足轻重的作用。通信系统仿真具有广泛的适应性与极好的灵活性,有助于我们更好地研究通信系统性能。通信系统仿真的基本步骤如下图所示: 二、仿真分析与测试 (1)随机信号的生成 利用Matlab中自带的函数randsrc来产生0、1等概分布的随机信号。源代码如下所示: global N N=300; global p

p=0、5; source=randsrc(1,N,[1,0;p,1-p]); (2)信道编译码 1、卷积码的原理 卷积码(convolutional code)就是由伊利亚斯(p 、Elias)发明的一种非分组码。在前向纠错系统中,卷积码在实际应用中的性能优于分组码,并且运算较简单。 卷积码在编码时将k 比特的信息段编成n 个比特的码组,监督码元不仅与当前的k 比特信息段有关,而且还同前面m=(N-1)个信息段有关。 通常将N 称为编码约束长度,将nN 称为编码约束长度。一般来说,卷积码中k 与n 的值就是比较小的整数。将卷积码记作(n,k,N)。卷积码的编码流程如下所示。 可以瞧出:输出的数据位V1,V2与寄存器D0,D1,D2,D3之间的关系。根据模2加运算特点可以得知奇数个1模2运算后结果仍就是1,偶数个1模2运算后结果就是0。 2、译码原理 卷积码译码方法主要有两类:代数译码与概率译码。代数译码主要根据码本身的代数特性进行译码,而信道的统计特性并没有考虑在内。目前,代数译码的主要代表就是大数逻辑解码。该译码方法对于约束长度较短的卷积码有较好的效果,并且设备较简单。概率译码,又称最大似然译码,就是基于信道的统计特性与卷积 码的特点进行计算。在现代通信系统中,维特比译码就是目前使用最广泛的概率 译码方法。 02 1V D D =⊕01232V D D D D =⊕⊕⊕

数字信号处理基本知识点Matlab实现

数字信号处理(第二版) 绪论 1.4 MATLAB 在信号处理中的应用简介 MATLAB 是美国Mathworks 公司于1984年推出的一套高性能的数值计算和可视化软件,它集数值分析、矩阵运算、信号处理、系统仿真和图形显示于一体,从而被广泛地应用于科学计算、控制系统、信息处理等领域的分析、仿真和设计工作。 MATLAB 软件包括五大通用功能:数值计算功能(Numeric ),符号运算功能(Symbolic );数据可视化功能(Graphic ),数据图形文字统一处理功能(Notebook )和建模仿真可视化功能(Simulink )。该软件有三大特点:一是功能强大;二是界面友善、语言自然;三是开放性强。目前,Mathworks 公司已推出30多个应用工具箱。MA TLAB 在线性代数、矩阵分析、数值及优化、数理统计和随机信号分析、电路与系统、系统动力学、信号和图像处理、控制理论分析和系统设计、过程控制、建模和仿真、通信系统、以及财政金融等众多领域的理论研究和工程设计中得到了广泛应用。 2.10 离散时间信号与系统的Matlab 表示 2.10.1 离散时间信号的表示和运算 1、基本序列的Matlab 表示 单位采样序列 在MA TLAB 中,单位采样序列可以通过编写以下的DTimpulse .m 文件来实现,即 function y=DTimpulse (n) y=(n==0); %当参数为0时冲激为1,否则为0 调用该函数时n 必须为整数或整数向量。 单位阶跃序列 在MA TLAB 中,单位阶跃序列可以通过编写DTu .m 文件来实现,即 function y=DTu (n) y=n>=0; %当参数为非负时输出1 调用该函数时n 必须为整数或整数向量。 矩形序列 用MA TLAB 表示矩形序列可根据公式()()()N R n u n u n N =--并利用DTu 函数生成,即 function y=DTR(n,N) y=DTu(n)-DTu(n-N); 调用该函数时n 必须为整数或整数向量,N 必须为整数。 实指数序列 用MA TLAB 表示实指数序列()(),n x n a u n n N a R =∈∈,即

基于matlab的数字信号调制与解调

一matlab常用函数 1、特殊变量与常数 ans 计算结果的变量名computer 确定运行的计算机eps 浮点相对精 度Inf 无穷大I 虚数单位inputname 输入参数名NaN 非 数nargin 输入参数个数nargout 输出参数的数目pi 圆周 率nargoutchk 有效的输出参数数目realmax 最大正浮点数realmin 最小正浮点数varargin 实际输入的参量varargout 实际返回的参量操作符与特殊字符+ 加- 减* 矩阵乘法 .* 数组乘(对应元素相乘)^ 矩阵幂 .^ 数组幂(各个元素求幂)\ 左除或反斜杠/ 右除或斜面杠 ./ 数组除(对应元素除)kron Kronecker张量积: 冒号() 圆括[] 方括 . 小数点 .. 父目录 ... 继续, 逗号(分割多条命令); 分号(禁止结果显示)% 注释! 感叹号' 转置或引用= 赋值== 相等<> 不等 于& 逻辑与| 逻辑或~ 逻辑非xor 逻辑异或 2、基本数学函数 abs 绝对值和复数模长acos,acodh 反余弦,反双曲余弦acot,acoth 反余切,反双曲余切acsc,acsch 反余割,反双曲余割angle 相角asec,asech 反正割,反双曲正割secant 正切asin,asinh 反正弦,反双曲正 弦atan,atanh 反正切,双曲正切tangent 正切atan2 四象限反正 切ceil 向着无穷大舍入complex 建立一个复数conj 复数配 对cos,cosh 余弦,双曲余弦csc,csch 余切,双曲余切cot,coth 余切,双曲余切exp 指数fix 朝0方向取整floor 朝负无穷取整*** 最大公因数imag 复数值的虚部lcm 最小公倍数log 自然对数log2 以2为底的对数log10 常用对数mod 有符号的求余nchoosek 二项式系数和全部组合数real 复数的实部rem 相除后求余round 取整为最近的整数sec,sech 正割,双曲正割sign 符号数sin,sinh 正弦,双曲正弦sqrt 平方根tan,tanh 正切,双曲正切 3、基本矩阵和矩阵操作 blkding 从输入参量建立块对角矩阵eye 单位矩阵linespace 产生线性间隔的向量logspace 产生对数间隔的向量numel 元素个数ones 产生全为1的数组rand 均匀颁随机数和数组randn 正态分布随机数和数组zeros 建立一个全0矩阵colon) 等间隔向量cat 连接数组diag 对角矩阵和矩阵对角线fliplr 从左自右翻转矩阵flipud 从上到下翻转矩阵repmat 复制一个数组reshape 改造矩阵roy90 矩阵翻转90度tril 矩阵的下三角triu 矩阵的上三角dot 向量点集cross 向量叉 集ismember 检测一个集合的元素intersect 向量的交 集setxor 向量异或集setdiff 向是的差集union 向量的并集数值分析和傅立叶变换cumprod 累积cumsum 累 加cumtrapz 累计梯形法计算数值微分factor 质因子inpolygon 删除多边形区域内的点max 最大值mean 数组的均 值mediam 中值min 最小值perms 所有可能的转 换polyarea 多边形区域primes 生成质数列表prod 数组元素的乘积rectint 矩形交集区域sort 按升序排列矩阵元 素sortrows 按升序排列行std 标准偏差sum 求

相关文档
最新文档