搜索
您的当前位置:首页正文

Matlab数字信号处理实验报告

来源:六九路网


数字信号处理实验报告

基础实验篇

实验一 离散时间系统及离散卷积

一、 实验原理

利用Matlab软件计算出系统函数的零极点分布、单位脉冲响应和系统频率响应等的图像并于笔算结果进行比较,找出异同。编译合适程序能计算取值范围不同的离散卷积。 二、 实验目的

(1)熟悉MATLAB软件的使用方法。

(2)熟悉系统函数的零极点分布、单位脉冲响应和系统频率响应等概念。 (3)利用MATLAB绘制系统函数的零极点分布图、系统频率响应和单位脉冲响应。 三、实验步骤

(1)自编并调试实验程序,并且,给实验程序加注释; (2)按照实验内容完成笔算结果;

(3)验证计算程序的正确性,记录实验结果。

(4)至少要求一个除参考实例以外的实验结果,在实验报告中,要描述清楚实验结果对应的系统,并对实验结果进行解释说明。 四、实验源程序及实验结果

实验1-1 xlabel('n'); ylabel('h(n)'); figure(2) [z,p,g]=tf2zp(b,a); zplane(z,p) title('零极点'); function [x,n]=chongji(n1,n2) n=[n1:n2]; x=[n==0]; function shiyan1() 运行结果

a=[1,-1,0.9]; b=1; x=chongji(-20,120); n=-20:120; h=filter(b,a,x); figure(1) stem(n,h); title('冲击响应');

实验1-2 b=[0.0181,0.0543, 0.0543,0.0181]; 运行结果 a=[1.000,-1.76, 1.1829,-0.2781]; w=pi*freqspace(500); H=freqz(b,a,w); MH=abs(H); AH=angle(H); subplot(2,1,1); plot(w/pi,MH); grid; axis([0,1,0,1]); xlabel('w(pi)'); ylabel('|H|'); title('幅度、相位响应'); subplot(2,1,2); plot(w/pi,AH); grid; xlabel('w(pi)'); ylabel('angle(H)'); 实验1-3 运行结果

n=0:30; %输入x(n)和冲激响应h(n) x=zeros(1,length(n)); h=zeros(1,length(n)); x([find((n>=0)&(n<=4))])=1; h([find((n>=0)&(n<=8))])=0.5; figure(1) subplot(3,1,1); stem(n,x); axis([0,30,0,2]); title('输入序列'); xlabel('n'); ylabel('x(n)'); subplot(3,1,2); stem(n,h); axis([0,30,0,2]); title('冲激响应序列'); xlabel('n'); ylabel('h(n)'); %输出响应 y=conv(x,h); subplot(3,1,3); n=0:length(y)-1; stem(n,y); title('输出响应'); xlabel('n'); ylabel('y(n)');

实验二 离散傅立叶变换与快速傅立叶变换

一、 实验原理

对有限长序列使用离散Fouier变换(DFT)可以很好的反映序列的频谱特性,而且易于用快速算法在计算机上实现,当序列x(n)的长度为N时,它的DFT定义为

XkDFTxnxnWnkN 0kN1

n0N1

反变换为

xnIDFTXk1N1nkXkWN 0nN1 Nn0 有限长序列的DFT是其Z变换在单位圆上的等距采样,或者说是序列Fourier变换的等距采样,因此可以用于序列的谱分析。

FFT是为了减少DFT运算次数的一种快速算法。它是对变换式进行一次次分解,使其成为若干较短序列的组合,从而减少运算量。常用的FFT是以2为基数的,其长度

。它的效率高,程序简单,使用非常方便,当要变换的序列

长度不等于2的整数次方时,为了使用以2为基数的FFT,可以用末位补零的方法,使其长度延长至2的整数次方。

用FFT可以实现两个序列的圆周卷积。在一定的条件下,可以使圆周卷积等于线性卷积。一般情况,设两个序列的长度分别为N1和N2,要使圆周卷积等于线性卷积的充要条件是FFT的长度

N≥N1+N2

对于长度不足N的两个序列,分别将他们补零延长到N。

二、实验目的

1、加深理解离散傅立叶变换及快速傅立叶变换概念; 2、学会应用FFT对典型信号进行频谱分析的方法; 3、研究如何利用FFT程序分析确定性时间连续信号; 4、熟悉应用FFT实现两个序列的线性卷积的方法。

三、实验步骤

1、调试实验程序,并且,给参考程序加注释;

2、利用编制的计算卷积的计算程序,分别给出一下三组函数的卷积结果

三、 实验源程序及结果

实验2-1 运行结果

b=[0.0181,0.0543, 0.0543,0.0181]; a=[1.000,-1.76, 1.1829,-0.2781]; w=pi*freqspace(500); H=freqz(b,a,w); MH=abs(H); AH=angle(H); subplot(2,1,1); plot(w/pi,MH); grid; axis([0,1,0,1]); xlabel('w(pi)'); ylabel('|H|'); title('幅度、相位响应'); subplot(2,1,2); plot(w/pi,AH); grid; xlabel('w(pi)'); ylabel('angle(H)'); 运行结果 实验2-2

function shiyan22() F=50; N=64; T=0.000625; n=1:N; x=cos(2*pi*F*n*T); subplot(2,1,1); plot(n,x); hold on title('x(n)'); xlabel('n'); X=fft(x); subplot(2,1,2); plot(n,X); grid title('FFT|X|'); xlabel('f(pi)'); 实验2-3 n=0:30;%输入x(n)和冲激响应h(n) x=zeros(1,length(n)); h=zeros(1,length(n)); x([find((n>=0)&(n<=4))]) =1; h([find((n>=0)&(n<=8))]) =0.5; subplot(3,1,1); stem(x); title('x(n)'); axis([0,30,0,2]); subplot(3,1,2); stem(h); title('h(n)'); axis([0,30,0,2]); X=fft(x); H=fft(h); Y=X.*H; y=ifft(Y); subplot(3,1,3); 运行结果

stem(abs(y)); title('y(n)');

实验三 IIR数字滤波器设计

一、 实验原理

(1)脉冲响应不变法

用数字滤波器的单位脉冲响应序列h(n)模仿模拟滤波器的冲激

响应ha(t),让h(n)正好等于ha(t)的采样值,即h(n)ha(nT)

其中T为采样间隔,如果以Ha(s)及H(z)分别表示ha(t)的拉氏

变换及h(n)的Z变换,则 H(z)zesT(2) 双线性变换法

21z1 s平面与z平面之间满足以下映射关系:s 1T1z12Ha(sjm)TmT

s平面的虚轴单值地映射于z平面的单位圆上,s平面的左半平面完全映射

到z平面的单位圆内。双线性变换不存在混叠问题。双线性变换时一种非线性变换

,这种非线性引起的幅频特性畸变可通过预畸而得到校正。

以低通数字滤波器为例,将设计步骤归纳如下:

1. 确定数字滤波器的性能指标:通带临界频率fp、阻带临界频率fs;通

带内的最大衰减Rp;阻带内的最小衰减As;采样周期T; 2. 确定相应的数字角频率,ωp=2πfpT;ωs=2πfrT; 3. 计算经过预畸的相应模拟低通原型的频率,

p2ptgT22s,sTtg2

 根据Ωp和Ωs计算模拟低通原型滤波器的阶数N,并求得低通原

型的传递函数Ha(s);

4. 用上面的双线性变换公式代入Ha(s),求出所设计的传递函数H(z); 5. 分析滤波器特性,检查其指标是否满足要求。 二、实验目的

1、 学习模拟-数字变换滤波器的设计方法; 2、 掌握双线性变换数字滤波器设计方法; 3、 掌握实现数字滤波器的具体方法。

三、实验步骤

1、 设计一个巴特沃思数字低通滤波器,设计指标如下:

通带内

p0.2幅度衰减不大于1dB;阻带

s0.35幅度衰

减不小于15dB;

2、 编制计算设计的数字滤波器幅度特性和相位特性的程序,并进行实验验证。

3、 编制实现该数字滤波器程序并且实现数字滤波

(1) 分别让满足所设计的滤波器的通带、过渡带、阻带频率特性的

正弦波通过滤波器,验证滤波器性能;

(2) 改变正弦抽样时间,验证数字低通滤波器的模拟截止频率实抽

样时间的函数。

四、实验源程序及结果

实验3-1 function shiyan3() fp=200*pi; fs=300*pi; wp=0.2*pi; ws=0.3*pi; Rp=1; As=15; T=1; Fs=1000; [N,fc]=buttord(fp,fs,Rp, As,'s'); [b,a]=butter(N,fc,'s'); ylabel('H'); axis([0,1,0,1.1]); set(gca,'XTickmode','manual','XTick',[0,0.2,0.35,1.1]); set(gca,'YTickmode','manual','YTick',[0,Attn,Ripple,1]); grid; subplot(3,1,2); plot(wd/pi,20*log10((abs(hw2)+eps)/abs(hw2(1)))); title('幅度响应(双线性变换法(dB))');

w=[0:1000*2*pi]; [hf,w]=freqs(b,a,1000); [d,c]=impinvar(b,a,Fs); wd=[0:512]*pi/512; hw1=freqz(d,c,wd); [f,e]=bilinear(b,a,Fs); hw2=freqz(f,e,wd); OmegaP=(2/T)*tan(wp/2); OmegaS=(2/T)*tan(ws/2); ep=sqrt(10^(Rp/10)-1); Ripple=sqrt(1/(1+ep.^2)); Attn=1/10^(As/20); subplot(3,1,1); plot(wd/pi,abs(hw1) /abs(hw1(1))); title('幅度响应(冲击响应不变法)'); xlabel('w(pi)'); ylabel('H'); xlabel('w(pi)'); ylabel('H'); axis([0,1,-40,5]); set(gca,'XTickmode','manual','XTick',[0,0.2,0.35,1.1]); set(gca,'YTickmode','manual','YTick',[-50,-15,-1,0]); grid; subplot(3,1,3); plot(wd/pi,-angle(hw2)); title('相位响应'); xlabel('w(pi)'); ylabel('pi unit'); %axis([0,1,0,1.1]); set(gca,'XTickmode','manual','XTick',[0,0.2,0.35,1.1]); set(gca,'YTickmode','manual','YTick',[-1,0,1]); grid; 运行结果

实验四 FIR数字滤波器设计

一、 实验原理

窗函数法设计线性相位FIR滤波器步骤

• •

确定数字滤波器的性能要求:临界频率{ωk},滤波器单位脉冲响应长度N; 根据性能要求,合理选择单位脉冲响应h(n)的奇偶对称性,从而确定理想频率响应

Hd(ej)的幅频特性和相频特性;

hd(n)•

求理想单位脉冲响应,在实际计算中,可对

Hd(ej)按M(M远大于

hd(n)N)点等距离采样,并对其求IDFT得hM(n),用hM(n)代替

选择适当的窗函数w(n),根据单位脉冲响应;

h(n)hd(n)w(n)求所需设计的FIR滤波器

jH(e),分析其幅频特性,若不满足要求,可适当改变窗函数形式或• 求

长度N,重复上述设计过程,以得到满意的结果。

jjjW(e)H(e)W(e)的旁瓣窗函数的傅式变换的主瓣决定了过渡带宽。jH(e)在通带和阻带范围内波动幅度,常用的几种窗大小和多少决定了

函数有:

矩形窗 w(n)=RN(n)

Hanning窗

Hamming窗

Blackmen窗

Kaiser窗

式中Io(x)为零阶贝塞尔函数。

二、实验目的

1、学习FIR数字滤波器窗口函数设计法;

2、熟悉线性相位FIR滤波器的幅频特性和相频特性; 3、了解各种不同窗函数对滤波器性能的影响 4、进行FIR、IIR滤波器的性能比较。

三、实验步骤

1、 设计一个FIR数字滤波器,设计指标如下:

通带内p0.2幅度衰减不大于1dB; 阻带s0.35幅度衰减不小于15dB;

2、

编制计算设计的数字滤波器幅度特性和相位特性的程序,并进行实

验验证。

3、分别用矩形窗、汉宁窗、海明窗、三角窗和Blackman窗设计一

的线性相位带通滤波器,观察它们的3dB和20dB

带宽,并比较五种窗的特点。

四、实验源程序及运行结果

实验3-1 function shiyan4() %41 FIR filter wp=0.2*pi; ws=0.3*pi; tr_width=ws-wp; M=ceil(6.6*pi/tr_width)+1; n=0:M-1; wc=(ws+wp)/2; alpha=(M-1)/2; m=n-alpha+eps; hd=sin(wc*m)./(pi*m); w_ham=(hamming(M))'; % h=hd.*w_ham;%加汉明窗 % h=hd;%加矩形窗 h=hd.*(blackman(M))';%加布莱克曼窗 [mag,db,pha,w]=freqz_m(h,[1]); delta_w=2*pi/1000; Rp=-(min(db(1:wp/delta_w+1))); As=-round(max(db(ws/delta_w+1:501ylabel('pha'); set(gca,'XTickmode','manual','XTick',[0,0.2,0.3,1.1]); set(gca,'YTickmode','manual','YTick',[-pi,0,pi]); grid; subplot(2,2,4); plot(w/pi,db); title('滤波器幅度响应'); axis([0,1,-100,10]); ylabel('H(db)'); set(gca,'XTickmode','manual','XTick',[0,0.2,0.3,1.1]); set(gca,'YTickmode','manual','YTick',[-50,-15,0]); function [mag,db,pha,w]=freqz_m(b,a)

))); subplot(2,2,1); stem(n,hd); title('理想冲激响应'); axis([0,M-1,-0.1,0.3]); ylabel('hd(n)'); subplot(2,2,2); stem(n,h); title('实际冲激响应'); axis([0,M-1,-0.1,0.3]); ylabel('h(n)'); subplot(2,2,3); plot(w/pi,pha); title('滤波器相位响应'); axis([0,1,-pi,pi]); [H,w]=freqz(b,a,1000,'whole'); H=(H(1:501))'; w=(w(1:501))'; mag=abs(H); db=20*log10((mag+eps)/max(mag)); pha=angle(H); 运行结果 加矩形窗 加汉明窗

加布莱克曼窗

综合试验篇

一、实验目的

借助基础实验篇编制的程序,对语音信号进行处理。 通过综合实验篇,使得学生能够充分了解信号处理及数字信号处理的过程;使得学生能够对自己设计的频谱分析程序与滤波器程序得到灵活的应用;使得学生能够综合分析信号处理过程各个阶段信号时域与频域特性。

二、实验内容

1、录制一段各人自己的语音信号。

2、对录制的信号进行采样;画出采样后语音信号的时域波形和频谱图; 3、给定滤波器的性能指标,采用窗函数法或双线性变换设计滤波器,并画出滤波器的频率响

三、实验要求

1、完成实验内容要求的各项内容。写明设计思路及其设计原理; 2、给出MATLAB代码,并给编制的程序加注释; 3、给出仿真测试结果并对测试结果进行分析;

4、对设计成果做出评价,说明本设计的特点和存在问题,提出改进设计意见 ;

四、实验源程序及结果

([0,1,-pi,pi]); function varargout = untitled1(varargin) % UNTITLED1 M-file for untitled1.fig % UNTITLED1, by itself, creates a new UNTITLED1 or raises the existing % singleton*. % % H = UNTITLED1 returns the handle to a new UNTITLED1 or the handle to % the existing singleton*. % % UNTITLED1('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in UNTITLED1.M with the given input arguments. % % UNTITLED1('Property','Value',...) creates a new UNTITLED1 or raises the % existing singleton*. Starting from the left, property value pairs

are % applied to the GUI before untitled1_OpeningFunction gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to untitled1_OpeningFcn via varargin. % % *See GUI Options on GUIDE's Tools menu. Choose \"GUI allows only one % instance to run (singleton)\". % % See also: GUIDE, GUIDATA, GUIHANDLES % Edit the above text to modify the response to help untitled1 % Last Modified by GUIDE v2.5 24-Oct-2012 22:23:01 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @untitled1_OpeningFcn, ... 'gui_OutputFcn', @untitled1_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin & isstr(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end % End initialization code - DO NOT EDIT % --- Executes just before untitled1 is made visible. function untitled1_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to untitled1 (see VARARGIN)

% Choose default command line output for untitled1 handles.output = hObject; % Update handles structure guidata(hObject, handles); % UIWAIT makes untitled1 wait for user response (see UIRESUME) % uiwait(handles.figure1); % --- Outputs from this function are returned to the command line. function varargout = untitled1_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structure varargout{1} = handles.output; % --- Executes on button press in pushbutton1. function pushbutton1_Callback(hObject, eventdata, handles) z1= wavread('d:\\wei.wav'); plot(z1); sound(z1); % hObject handle to pushbutton1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --- Executes on button press in pushbutton2. function pushbutton2_Callback(hObject, eventdata, handles) z1=wavread('d:\\wei.wav'); y1=z1(1:8192); Y1=fft(y1); n=0:8191; plot(n,Y1); % hObject handle to pushbutton2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)

% --- Executes on button press in pushbutton3. function pushbutton3_Callback(hObject, eventdata, handles) clear; global fp; global fc; [z1,fs,bits]=wavread('d:\\wei.wav') y1=z1(1:8192); Y1=fft(y1); As=100;Ap=1;Fs=8000; wc=2*atan(fc/(2*Fs)); wp=2*atan(fp/(2*Fs)); wdel=wc-wp; beta=0.112*(As-8.7); N=ceil((As-8)/2.285/wdel); wn= kaiser(N+1,beta); ws=(wp+wc)/2/pi; b=fir1(N,ws,wn); figure(1); freqz(b,1); x=fftfilt(b,z1); X=fft(x,8192); figure(2); subplot(2,2,1);plot(abs(Y1)); % axis([0,1000,0,1.0]); title('Â˲¨Ç°ÐÅºÅÆµÆ×'); subplot(2,2,2);plot(abs(X)); % axis([0,1000,0,1.0]); title('Â˲¨ºóÐÅºÅÆµÆ×'); subplot(2,2,3);plot(z1); title('Â˲¨Ç°ÐźŲ¨ÐÎ'); subplot(2,2,4);plot(x); title('Â˲¨ºóÐźŲ¨ÐÎ'); sound(x,fs,bits); % hObject handle to pushbutton3 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --- Executes on button press in pushbutton4. function pushbutton4_Callback(hObject, eventdata, handles) % hObject handle to pushbutton4 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA) % --- Executes during object creation, after setting all properties. function edit1_CreateFcn(hObject, eventdata, handles) % hObject handle to edit1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end function edit1_Callback(hObject, eventdata, handles) global fp; get(hObject,'String'); fp=str2num(get(hObject,'String')); % hObject handle to edit1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit1 as text % str2double(get(hObject,'String')) returns contents of edit1 as a double % --- Executes during object creation, after setting all properties. function edit2_CreateFcn(hObject, eventdata, handles) % hObject handle to edit2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc set(hObject,'BackgroundColor','white');

else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end function edit2_Callback(hObject, eventdata, handles) global fc; get(hObject,'String'); fc=str2num(get(hObject,'String')); % hObject handle to edit2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit2 as text % str2double(get(hObject,'String')) returns contents of edit2 as a double

提高实验篇

一、实验目的

借助数字信号处理课程中的快速傅立叶反变换(IFFT)和快速傅立叶变换(FFT)相关知识,实现基带OFDM系统的调制和解调。

二、实验内容

1、信号源:首先产生二进制信号,经星座映射为4PSK或16QAM。 2、OFDM调制:借助IFFT变换,实现OFDM调制。 3、信道模块。OFDM信号通过该模块到达接收端。

4、OFDM解调:借助FFT对信道输出信号进行OFDM解调。

5、对OFDM解调得到的信号进行星座反映射,还原二进制信号。

三、实验流程图

四、实验原理框图

开始 初始化:子载波数为256,出入不同信噪比 产生随机数 16-QAM调制 IFFT 加入循环前缀 加入高斯白噪声 去掉循环前缀 FFT 16-QAM解调 进行误码率统计 结束

输入数据 信道编码 交织 信号 映射 插入导频 串/并交换 IFFT 载波调制 插保护间隔 载波解调 信道 并/串变换 定时和频率同步 频偏校正 去保护间隔 串/并 变换 FFT 并/串 变换 信道估计 符号定时 输出数据 信道解码 解交织 信道逆映射

五、实验源程序及运行结果

close all; clc; snr=input('请你输入信号经信道时的信噪比snr(以dBW为单位):'); N=256;%N为载波数,即一个OFDM符号的长度 for k=1:N X(k)=fix(rand()*16);%随机产生256个[0,15]之间的整数 X1(k)=QAM16_mod(X(k));%进行星座图映射,X 可以认为是已经进行串/并转换后的输出信号 end figure(1) plot(real(X1),imag(X1),'xr'); title('随机输入数据的星座图'); xlabel('An(实部)'); ylabel('Bn(虚部)'); X2=ifft(X1,N);%对X进行傅里叶反变换 X3=[X2((N-0.25*N+1):N),X2];%在该OFDM符号中加入循环前缀 X4=awgn(X3,snr);%接收机最终接收的信号 figure(2) subplot(2,2,1) plot(1:numel(X3),real(X3),'r'); title('加入噪声前的信号波形(实部部分)'); subplot(2,2,3) plot(1:numel(X4),real(X4),'r'); title('加入噪声后的信号波形(实部部分)'); subplot(2,2,2)

plot(1:numel(X3),imag(X3),'b'); title('加入噪声前的信号波形(虚部部分)'); subplot(2,2,4) plot(1:numel(X4),imag(X4),'b'); title('加入噪声后的信号波形(虚部部分)'); figure(3) subplot(2,2,1) plot(1:numel(X3),abs(X3),'r'); title('加入噪声前的信号幅度'); subplot(2,2,3) plot(1:numel(X4),abs(X4),'r'); title('加入噪声后的信号幅度'); subplot(2,2,2) plot(1:numel(X3),angle(X3),'b'); title('加入噪声前的信号相角'); subplot(2,2,4) plot(1:numel(X4),imag(X4),'b'); title('加入噪声后的信号相角'); figure(4) axis([0 700 -0.4 0.4]) subplot(2,2,1) plot(1:numel(X2),real(X2),'r'); title('未加入循环前缀的信号波形(实部部分)'); axis([0 700 -0.4 0.4]) subplot(2,2,3) plot(1:numel(X3),real(X3),'r'); title('加入循环前缀(加在帧前)的信号波形(实部部分)'); axis([0 700 -0.4 0.4]) subplot(2,2,2) plot(1:numel(X2),imag(X2),'b'); title('未加入循环前缀的信号波形(虚部部分)'); axis([0 700 -0.4 0.4]) subplot(2,2,4) plot(1:numel(X3),imag(X3),'b'); title('加入循环前缀(加在帧前)的信号波形(虚部部分)'); %------------------------------接收部分------------------------------ Y1=X4(0.25*N+1:N+0.25*N); Y2=fft(Y1,N); figure(5) plot(real(X1),imag(X1),'xr',real(Y2),imag(Y2),'ob'); title('接收的OFDM符号的星座图') xlabel('An(实部)'); ylabel('Bn(虚部)'); for k=1:numel(Y1)

[Y(k),Y3(k)]=QAM16_demod(Y2(k)); end error=0;%解调后错误的个数 for k=1:N if X(k)~=Y(k) error=error+1; end end disp('解调后错误的个数为:') disp(error) disp('误码率为:') disp(error/N) 16QAM星座图 加入噪声前后信号对比

加入噪声前后信号幅值和相位比较 接收的OFDM符号星座图

因篇幅问题不能全部显示,请点此查看更多更全内容

Top