当前位置:文档之家› 自适应波束形成Matlab仿真

自适应波束形成Matlab仿真

自适应波束形成Matlab仿真
自适应波束形成Matlab仿真

信息与通信工程学院

阵列信号处理实验报告(自适应波束形成Matlab仿真)

学号:XXXXXX

专业:XXXXXX

学生姓名:XXX

任课教师:XXX

2015年X月

题目:自适应波束形成Matlab 仿真

1. 算法简述:

自适应波束形成,源于自适应天线的一个概念。接收端的信号处理,可以通过将各阵元输出进行加权求和,将天线阵列波束“导向”到一个方向上,对期望信号得到最大输出功率的导向位置即给出波达方向估计。

波束形成算法是在一定准则下综合个输入信息来计算最优权值的数学方法,线性约束最小方差准则(LCMV )是最重要、最常用的方法之一。LCMV 是对有用信号形式和来向完全已知,在某种约束条件下使阵列输出的方差最小。该准则属于广义约束,缺点是需要知道期望分量的波达方向。准则的代价函数为

Rw w w J H )(=,约束条件为H ()θ=w a f ;最佳解为f c R c c R w 11H 1H ][---。

2. 波束形成原理

以一维M 元等距离线阵为例,如图1所示,设空间信号为窄带信号,每个通道用一个附加权值系数来调整该通道的幅度和相位。

图1 波束形成算法结构图

这时阵列的输出可以表示为:

*1

()()()M

i i i

y t w x t θ==

∑ 如果采用矢量来表示各阵元输出及加权系数,即

T 12()[()()()]M x t x t x t x t =K T 12()[()()()]M w w w w θθθθ=K

()x n

()x n

()x n

那么,阵列的输出也可以用矢量表示为

H ()()()y t t θ=w x

为了在某一方向θ上补偿各阵元之间的时延以形成一个主瓣,常规波束形成器在期望方向上的加权矢量可以构成为

(1)T ()[1e e ]j j M w ωτ

ωτθ---=K

观察此加权矢量,发现若空间只有一个来自方向θ的信号,其方向矢量()αθ的表示形式与此权值矢量相同。则有

H H ()()()()()y t t t θαθ==w x x

这时常规波束形成器的输出功率可以表示为

2H H ()[()]()()()()CBF P E y t θθθαθαθ===w Rw R

式中矩阵R 为阵列输出()t x 的协方差矩阵。

3. 实验内容与结果:

实验使用均匀线阵,阵元间距为信号波长的一半,输入信号为1个BPSK 信号,2个非相干的单频干扰,设置载波频率10MHz 、采样频率50MHz 、快拍数300、信噪比-25dB 、信干比-90dB 、信号方位角0o 、干扰方位角40-o 和50o ,分析阵元数分别在3、6、9和12时波束图的变化。实验结果见图1。

图1 不同阵元数情况下的波束图

4.仿真分析

由上图可知,在已知实验条件下,均匀线阵阵元数不小于信号干扰总数时,应用LCMV方法得到的波束图在信噪比很低的情况下可以有效抑制非相干干扰;对于信号方向虽然波束主瓣可以较准确地指向信号来向,但阵元数为4时,主瓣波束宽度较大,旁瓣增益较大;当阵元数增加,主瓣波束逐渐变窄并且能精准地指向信号来向,同时旁瓣数目增加、增益逐渐变小。因此,增加阵元的数目可以有效地提高波束形成精度,同时主瓣变窄,旁瓣变小,使得输出信噪比有效提高。

5.程序

clear all;

close all;

clc;

%---------------------------------

%信号参数设置

Signal_No = 1;

Interference_No = 2;%小于五

S_No = Signal_No + Interference_No; %信号总数

sensor_No = 12; %阵元数

azimuth = [0*pi/180 -40*pi/180 50*pi/180 30*pi/180 20*pi/180]; %方位角

Fs = 50e6;

Fc = 10e6;

F1 = [8e6 9e6 10e6 11e6]; %干扰功率

RB = 1e6;

M = 2; %二进制

wavelength = 3e8/Fc;

d = wavelength/2;

K = 300; %快拍数

Ps = 0; %dB

SNR = -15;

SIR = -90;

M_No = 40; %码速率等于信息速率Data_No = M_No*Fs/RB;

t = 1/Fs:1/Fs:Data_No/Fs;

%---------------------------------

%功率转换

Ps_l = 10^(Ps/10);

Pi_l = 10^((Ps-SIR)/10);

Pn_l = 10^((Ps-SNR)/10);

%---------------------------------

%信号生成

bit = randint(1,M_No); %产生信息序列bitstream = [];

for i = 1:M_No

if bit(i) == 1

bitstream = [bitstream, ones(1, Fs/RB)];

else

bitstream = [bitstream, -ones(1, Fs/RB)];

end

end

Carrier_R = cos(2*pi*Fc*t);

S_R = Carrier_R .* bitstream;

Carrier_I = sin(2*pi*Fc*t);

S_I = Carrier_I .* bitstream;

Signal_R = sqrt(Ps_l)*S_R/sqrt((S_R*S_R'/length(S_R)));

Signal_I = sqrt(Ps_l)*S_I/sqrt((S_I*S_I'/length(S_I)));%生成BPSK复信号Signal(1,:) = complex(Signal_R, Signal_I);

%---------------------------------

% %产生干扰

for i = 2:Interference_No +1

Signal(i,:)=sqrt(2*Pi_l)*complex(sin(2*pi*F1(i-1)*t+pi/10*i),

sin(2*pi*F1(i-1)*t+pi/10*i));

end

%---------------------------------

% 模拟天线接收

%----------------------------------

%四次循环

name = [' 3',' 6',' 9','12'];

for mmm =1:4

sensor_No = mmm*3;

As = zeros(sensor_No,S_No);

for i = 1:sensor_No

for ii = 1:S_No

As(i,ii) = exp(-1i*2*pi*sin(azimuth(ii))*d/wavelength*(i-1));

end

end

x = As * Signal;

%

% %---------------------------------

% %加噪声

noise_R = randn(sensor_No,Data_No)*sqrt(Pn_l);

noise_I = randn(sensor_No,Data_No)*sqrt(Pn_l);

noise = complex(noise_R, noise_I);

s = x + noise;

%---------------------------------

%lcmv算法

% Ad = [1 0 0 0 0 0 0 0 0 0 0 0 ]';

Ad = (As(:,1));

x1 = s(:,(1:K));

Rx=x1*x1'/K;

alfa=inv(Ad'*inv(Rx)*Ad);

Wopt=alfa*inv(Rx)*Ad;

%------------------------

%---------------------------------

%mvdr

% Ad = (As(:,1));

% x1 = s(:,(1:K));

% Rx=x1*x1'/K;

% QR_Wopt1 = inv(Rx)*Ad;

% Wopt=QR_Wopt1./QR_Wopt1(1);

%---------------------------------

%波束图

figure(1)

whitebg('k');

all_azimuth = -pi/2:pi/180:pi/2;

LMS_R = zeros(1,181);

for i = 1:181

for m = 1:sensor_No

LMS_R(i) = LMS_R(i) + conj(Wopt(m)) * exp(-1i*2*pi*sin(all_azimuth(i))*d/wavelength*(m-1));

end

LMS_P(i) = (abs(LMS_R(i)))^2;

end

LMS_PdB = 10*log10(LMS_P/max(LMS_P));

switch mmm

case 1

plot(all_azimuth*180/pi,LMS_PdB,'--g','LineWidth',2);hold on;

case 2

plot(all_azimuth*180/pi,LMS_PdB,'.b','LineWidth',2);

case 3

plot(all_azimuth*180/pi,LMS_PdB,'-.w','LineWidth',2);

case 4

plot(all_azimuth*180/pi,LMS_PdB,':r','LineWidth',2);

end

grid on;

axis([-90 90 -70 10]);

xlabel('方位角(度)')

ylabel('阵列增益(dB)')

%title(strcat('阵元数',name([2*mmm-1:2*mmm]),'个'));

% figure(2);

% polar ((-pi/2:pi/180:pi/2),LMS_PdB+109); figure(gcf);

end

hl=legend('阵元数3个','阵元数6个','阵元数9个','阵元数12个',1); set(hl,'edgecolor','w','color',[1 1 1]);

title('自适应波束形成');

drawnow;

自适应波束形成与Matlab程序代码注解

1.均匀线阵方向图 (1)matlab 程序 clc; clear all; close all; imag=sqrt(-1); element_num=32;%阵元数为8 d_lamda=1/2;%阵元间距d与波长lamda的关系 theta=linspace(-pi/2,pi/2,200); theta0=0;%来波方向 w=exp(imag*2*pi*d_lamda*sin(theta0)*[0:element_num-1]'); for j=1:length(theta) a=exp(imag*2*pi*d_lamda*sin(theta(j))*[0:element_num-1]'); p(j)=w'*a; end patternmag=abs(p); patternmagnorm=patternmag/max(max(patternmag)); patterndB=20*log10(patternmag); patterndBnorm=20*log10(patternmagnorm); figure(1) plot(theta*180/pi,patternmag); grid on; xlabel('theta/radian') ylabel('amplitude/dB') title([num2str(element_num) '阵元均匀线阵方向图','来波方向为' num2str(theta0*180/pi) '度']); hold on; figure(2) plot(theta,patterndBnorm,'r'); grid on; xlabel('theta/radian') ylabel('amplitude/dB') title([num2str(element_num) '阵元均匀线阵方向图','来波方向为' num2str(theta0*180/pi) '度']); axis([-1.5 1.5 -50 0]);

基于Matlab的脑电波信号处理

做脑电波信号处理滴嘿嘿。。Matlab addicted Codes %FEATURE EXTRACTER function [features] = EEGfeaturetrainmod(filename,m) a = 4; b = 7; d = 12; e = 30; signals = 0; for index = 1:9; % read in the first ten EEG data because the files are numbered as ha11test01 rather than ha11test1. s = [filename '0' num2str(index) '.dat']; signal = tread_wfdb(s); if signals == 0; signals = signal; else signals = [signals signal]; end end for index = 10:1:m/2; % read in the rest of the EEG training data s = [filename num2str(index) '.dat']; signal = tread_wfdb(s); if signals == 0;

signals = signal; else signals = [signals signal]; end end %%%%% modification just for varying the training testing ratio ------ for index = 25:1:25+m/2; % read in the rest of the EEG training data s = [filename num2str(index) '.dat']; signal = tread_wfdb(s); if signals == 0; signals = signal; else signals = [signals signal]; end end %%%%%end of modification just for varying the training testing ratio----- for l = 1:m % exrating features (power of each kind of EEG wave forms) [Pxx,f]=pwelch(signals(:,l)-mean(signals(:,l)), [], [], [], 200); % relative power fdelta(l) = sum(Pxx(find(fa))); falpha(l) = sum(Pxx(find(fb))); fbeta(l) = sum(Pxx(find(fd))); fgama(l)= sum(Pxx(find(f>e))); % gama wave included for additional work

信号处理实验一:用matlab描述基本信号

哈尔滨工程大学 实验报告 实验名称:用matlab描述基本信号 班级:电子信息工程4班 学号: 姓名: 实验时间:2016年10月10日 成绩:________________________________ 指导教师:栾晓明 实验室名称:数字信号处理实验室哈尔滨工程大学实验室与资产管理处制

实验一用matlab 描述基本信号 一、 冲激信号 1、 原理: 最简单的信号是(移位的)单位冲激信号: δ[n -n 0] = ? ??≠=00 0 1n n n n (3.1) 在MA TLAB 中产生冲激信号,必须先确定所关注信号部分的长度。如果准备用冲激信 号δ[n ]来激励因果LTI 系统,可能需要观察从n = 0到n = L -1总共L 个点。若选择L = 31,下面的MA TLAB 代码将产生一个“冲激信号”。 1. L = 31; 2. nn = 0 : (L-1); 3. imp = zeros(L, 1); 4. imp(1) = 1; 注意,根据MA TLAB 编址约定,n =0标号必须对应imp(1)。 例:产生移位冲激信号程序(函数文件) function [x,n] = impseq(n0,n1,n2) % 产生 x(n) = delta(n-n0); n1 <=n0 <= n2 % ---------------------------------------------- % [x,n] = impseq(n0,n1,n2) % if ((n0 < n1) | (n0 > n2) | (n1 > n2)) error('参数必须满足 n1 <= n0 <= n2') end n = [n1:n2]; %x = [zeros(1,(n0-n1)), 1, zeros(1,(n2-n0))]; x = [(n-n0) == 0]; 以上函数文件可以产生指定区间内的冲激移位脉冲。 例1—1:调用这个函数文件生成并绘制: x(n) = 2δ[n+2]-δ[n -4] -5≤ n ≤ 5 程序 % x(n) = 2*delta(n+2) - delta(n-4), -5<=n<=5 n = [-5:5]; x = 2*impseq(-2,-5,5)-impseq(4,-5,5); stem(n,x); title('例 2.1a 的序列图') ylabel('x(n)'); axis([-5,5,-2,3]);text(5.5,-2,'n')

常规波束形成matlab程序

close all clear all clc c=1500; fs=10000; T=0.1; t=0:1/fs:T; L=length(t); f=500; w=2*pi*f; k=w/c; M=11;%阵元个数 Nmid=1;%参考点 d=3;%阵元间距 m=[0:1:M-1]; yi=zeros(M,1);%返回一个M*1维的零矩阵 zi=zeros(M,1); xi=m*d; xi=xi.'; %各阵元坐标 y1=20; x1=10;z1=10;%声源位置,y轴指向声源平面 Ric1=sqrt((x1-xi).^2+(y1-yi).^2+(z1-zi).^2);%声源至各阵元的距离M*1维 Rn1=Ric1-Ric1(Nmid);%声源至各阵元与参考阵元的声程差矢量M*1维 s1=cos(w*t);%参考阵元接收到的信号1*L维 snr=20; Am=10^(-snr/20); n1=Am*(randn(M,L)+j*randn(M,L));%各阵元噪声矢量 p1=zeros(M,L);%M*L维 for k1=1:M p1(k1,:)=Ric1(Nmid)/Ric1(k1)*s1.*exp(-j*w*Rn1(k1)/c);%各阵元经过幅度衰减和相位延迟后接收到的信号,M*L维 end p=p1+n1;%各阵元接收的声压信号矩阵M*L R=p*p'/L;%接收数据的自协方差矩阵M*M %---------------------------------------------------------- %扫描范围 step_x=0.1; step_z=0.1; y=y1;

基于MATLAB的语音信号处理系统设计(程序+仿真图)--毕业设计

语音信号处理系统设计 摘要:语音信号处理是研究用数字信号处理技术对语音信号进行处理的一门学科。语音信号处理的目的是得到某些参数以便高效传输或存储,或者是用于某种应用,如人工合成出语音、辨识出讲话者、识别出讲话内容、进行语音增强等。本文简要介绍了语音信号采集与分析以及语音信号的特征、采集与分析方法,并在采集语音信号后,在MATLAB 软件平台上进行频谱分析,并对所采集的语音信号加入干扰噪声,对加入噪声的信号进行频谱分析,设计合适的滤波器滤除噪声,恢复原信号。利用MATLAB来读入(采集)语音信号,将它赋值给某一向量,再将该向量看作一个普通的信号,对其进行FFT变换实现频谱分析,再依据实际情况对它进行滤波,然后我们还可以通过sound命令来对语音信号进行回放,以便在听觉上来感受声音的变化。 关键词:Matlab,语音信号,傅里叶变换,滤波器 1课程设计的目的和意义 本设计课题主要研究语音信号初步分析的软件实现方法、滤波器的设计及应用。通过完成本课题的设计,拟主要达到以下几个目的: 1.1.了解Matlab软件的特点和使用方法。 1.2.掌握利用Matlab分析信号和系统的时域、频域特性的方法; 1.3.掌握数字滤波器的设计方法及应用。 1.4.了解语音信号的特性及分析方法。 1.5.通过本课题的设计,培养学生运用所学知识分析和解决实际问题的能力。 2 设计任务及技术指标 设计一个简单的语音信号分析系统,实现对语音信号时域波形显示、进行频谱分析,

利用滤波器滤除噪声、对语音信号的参数进行提取分析等功能。采用Matlab设计语言信号分析相关程序,并且利用GUI设计图形用户界面。具体任务是: 2.1.采集语音信号。 2.2.对原始语音信号加入干扰噪声,对原始语音信号及带噪语音信号进行时频域分析。 2.3.针对语音信号频谱及噪声频率,设计合适的数字滤波器滤除噪声。 2.4.对噪声滤除前后的语音进行时频域分析。 2.5.对语音信号进行重采样,回放并与原始信号进行比较。 2.6.对语音信号部分时域参数进行提取。 2.7.设计图形用户界面(包含以上功能)。 3 设计方案论证 3.1语音信号的采集 使用电脑的声卡设备采集一段语音信号,并将其保存在电脑中。 3.2语音信号的处理 语音信号的处理主要包括信号的提取播放、信号的重采样、信号加入噪声、信号的傅里叶变换和滤波等,以及GUI图形用户界面设计。 Ⅰ.语音信号的时域分析 语音信号是一种非平稳的时变信号,它携带着各种信息。在语音编码、语音合成、语音识别和语音增强等语音处理中无一例外需要提取语音中包含的各种信息。语音信号分析的目的就在与方便有效的提取并表示语音信号所携带的信息。语音信号分析可以分为时域和变换域等处理方法,其中时域分析是最简单的方法。 Ⅱ.语音信号的频域分析 信号的傅立叶表示在信号的分析与处理中起着重要的作用。因为对于线性系统来说,可以很方便地确定其对正弦或复指数和的响应,所以傅立叶分析方法能完善地解决许多信号分析和处理问题。另外,傅立叶表示使信号的某些特性变得更明显,因此,它能更

波束形成Matlab程序

1?均匀线阵方向图%8阵元均匀线阵方向图,来波方向为clc; clear all; close all; 0度 imag=sqrt(_1); element_num=8;% 阵元数为8 d_lamda=1/2;%阵元间距d与波长lamda的关系theta=li nspace(-pi/2,pi/2,200); theta0=0;% 来波方向w=exp(imag*2*pi*dl_lamda*si n(theta0)*[0:eleme nt_nu m-1]'); for j=1:le ngth(theta) a=exp(imag*2*pi*dd_l amda*si n(theta(j))*[0:eleme nt_nu m-1]'); p(j)=w'*a; end figure; plot(theta,abs(p)),grid on xlabel('theta/radia n') ylabel('amplitude') title('8 阵元均匀线阵方向图')

°2 8阵元均匀线阵方向图 7 6 5 4 3 2 1 -15 -1 -0 5 0 06 thetaradian 1 15

8 当来波方向为45度时,仿真图如下 8阵元均匀线阵方向图如下,来波方向为0 度,20log (dB) 8阵元均苛銭阵方向图来波方向为0度

随着阵元数的增加,波束宽度变窄,分辨力提高:仿真图如下 Q d p E = ro 二

2. 波束宽度与波达方向及阵元数的关系 clc clear all close all ima=sqrt(-1); element_num1=16; %阵元数 element_num2=128; element_num3=1024; lamda=0.03; %波长为0.03 米 d=1/2*lamda; % 阵元间距与波长的关系theta=0:0.5:90; for j=1:length(theta); fai(j)=theta(j)*pi/180-asin(sin(theta(j)*pi/180)-lamda/(element_n um1*d)); psi(j)=theta(j)*pi/180-asin(sin(theta(j)*pi/180)-lamda/(element_n um2*d)); beta(j)=theta(j)*pi/180-asin(sin(theta(j)*pi/180)-lamda/(element_ num3*d)); end

基于Matlab的语音信号处理与分析

系(院)物理与电子工程学院专业电子信息工程题目语音信号的处理与分析 学生姓名 指导教师 班级 学号 完成日期:2013 年5 月 目录 1 绪论 (3) 1.1课题背景及意义 (3) 1.2国内外研究现状 (3) 1.3本课题的研究内容和方法 (4) 1.3.1 研究内容 (4) 1.3.2 开发环境 (4) 2 语音信号处理的总体方案 (4) 2.1 系统基本概述 (4) 2.2 系统基本要求与目的 (4) 2.3 系统框架及实现 (5) 2.3.1 语音信号的采样 (5) 2.3.2 语音信号的频谱分析 (5) 2.3.3 音乐信号的抽取 (5) 2.3.4 音乐信号的AM调制 (5) 2.3.5 AM调制音乐信号的同步解调 (5) 2.4系统设计流程图 (6) 3 语音信号处理基本知识 (6) 3.1语音的录入与打开 (6)

3.2采样位数和采样频率 (6) 3.3时域信号的FFT分析 (7) 3.4切比雪夫滤波器 (7) 3.5数字滤波器设计原理 (8) 4 语音信号实例处理设计 (8) 4.1语音信号的采集 (8) 4.3.1高频调制与低频调制 (10) 4.3.2切比雪夫滤波 (11) 4.3.3 FIR滤波 (11) 5 总结 (12) 参考文献 (13) 语音信号的处理与分析 【摘要】语音信号处理是研究用数字信号处理技术和语音学知识对语音信号进行处理的新兴的学科,是目前发展最为迅速的信息科学研究领域的核心技术之一。通过语音传递信息是人类最重要、最有效、最常用和最方便的交换信息形式。 Matlab语言是一种数据分析和处理功能十分强大的计算机应用软件,它可以将声音文件变换为离散的数据文件,然后利用其强大的矩阵运算能力处理数据,如数字滤波、傅里叶变换、时域和频域分析、声音回放以及各种图的呈现等,它的信号处理与分析工具箱为语音信号分析提供了十分丰富的功能函数,利用这些功能函数可以快捷而又方便地完成语音信号的处理和分析以及信号的可视化,使人机交互更加便捷。信号处理是Matlab重要应用的领域之一。 本设计针对现在大部分语音处理软件内容繁多、操作不便等问题,采用MATLAB7.0综合运用GUI界面设计、各种函数调用等来实现语音信号的变频、变幅、傅里叶变换及滤波,程序界面简练,操作简便,具有一定的实际应用意义。 最后,本文对语音信号处理的进一步发展方向提出了自己的看法。 【关键词】Matlab 语音信号傅里叶变换低通滤波器

语音信号处理matlab实现

短时能量分析matlab源程序: x=wavread('4.wav'); %计算N=50,帧移=50时的语音能量 s=fra(50,50,x);%对输入的语音信号进行分帧,其中帧长50,帧移50 s2=s.^2;%一帧内各种点的能量 energy=sum(s2,2);%求一帧能量 subplot(2,2,1); plot(energy) xlabel('帧数'); ylabel('短时能量E'); legend('N=50'); axis([0,500,0,30]) %计算N=100,帧移=100时的语音能量 s=fra(100,100,x); s2=s.^2; energy=sum(s2,2); subplot(2,2,2); plot(energy) xlabel('帧数'); ylabel('短时能量E'); legend('N=100'); axis([0,300,0,30]) %计算N=400,帧移=400时的语音能量 s=fra(400,400,x); s2=s.^2; energy=sum(s2,2); subplot(2,2,3); plot(energy) xlabel('帧数'); ylabel('短时能量E'); legend('N=400'); axis([0,60,0,100]) %计算N=800,帧移=800时的语音能量 s=fra(800,800,x); s2=s.^2; energy=sum(s2,2); subplot(2,2,4); plot(energy) xlabel('帧数'); ylabel('短时能量E'); legend('N=800'); axis([0,30,0,200]) 分帧子函数: function f=fra(len,inc,x) %对读入语音分帧,len为帧长,inc为帧重叠样点数,x为输入语音数据 fh=fix(((size(x,1)-len)/inc)+1);%计算帧数 f=zeros(fh,len);%设一个零矩阵,行为帧数,列为帧长 i=1;n=1; while i<=fh %帧间循环 j=1; while j<=len %帧内循环 f(i,j)=x(n); j=j+1;n=n+1; end n=n-len+inc;%下一帧开始位置 i=i+1; end

Capon 波束形成matlab仿真(附源代码)

Capon波束形成 阵列N=16,信号 0-30 θ? =,干扰为 160 θ?=, 219 θ? =, 345 θ? =,干扰功率分别为:40dB,35dB,50dB。Capon波束形成后的方向图和功率谱如下:

为了比较接收数据直接估计噪声协方差矩阵和利用干扰+噪声估计协方差矩阵的Capon 波束形成的差异,进行如下仿真: 可以看出利用干扰+噪声估计协方差矩阵的方向图性能较优于接收数据直接估计噪声协方差矩阵的方向图。 代码: clc; clear all ; close all; ima=sqrt(-1); element_num=8; %阵元数 d_lamda=1/2; %阵元间距与波长的关系 theta=-90:0.5:90; %范围 theta0=-30; %来波方向 theta1=60; %干扰方向1 theta2=19; %干扰方向2 theta3=45; %干扰方向3

L=1000; %采样单元数 for i=1:L; amp0=10*randn(1);%信号的幅度随机产生,保证信号之间是不相关的amp1=100*randn(1);%输入阵列的噪声 amp2=sqrt(10^3.5)*randn(1);%输入阵列的噪声 amp3=sqrt(10^5)*randn(1);%输入阵列的噪声 ampn=3;%噪声 x(:,i)=amp0*exp(ima*2*pi*1/2*sin(theta0*pi/180)*[0:element_num-1]')+... amp1*exp(ima*2*pi*1/2*sin(theta1*pi/180)*[0:element_num-1]')+... amp2*exp(ima*2*pi*1/2*sin(theta2*pi/180)*[0:element_num-1]')+... amp3*exp(ima*2*pi*1/2*sin(theta3*pi/180)*[0:element_num-1]')+... ampn*(randn(element_num,1)+ima*randn(element_num,1)); end Rx=1/L*x* x'; R=inv(Rx); steer=exp(ima*2*pi*1/2*sin(theta0*pi/180)*[0:element_num-1]'); w=R*steer/(steer'*R*steer);%Capon最优权矢量 for j=1:length(theta); a=exp(ima*2*pi*d_lamda*sin(theta(j)*pi/180)*[0:element_num-1]'); f(j)=w'*a; p(j)=1/(a'*R*a); end F=20*log10(abs(f)/(max(abs(f)))); P=20*log10(abs(p)/(max(abs(p))));%此处是功率的对数形式 figure; % subplot(121) plot(theta,F),grid on,hold on plot(theta0,-80:0,'.') plot(theta1,-80:0,'.') plot(theta2,-80:0,'.')

基于MATLAB的语音信号采集与处理

工程设计论文 题目:基于MATLAB的语音信号采集与处理 姓名: 班级: 学号: 指导老师:

一.选题背景 1、实践意义: 语音信号是一种非平稳的时变信号,它携带着各种信息。在语音编码、语音合成、语音识别和语音增强等语音处理中无一例外需要提取语音中包含的各种信息。语音信号分析的目的就在于方便有效地提取并表示语音信号所携带的信息。所以理解并掌握语音信号的时域和频域特性是非常重要的。 通过语音相互传递信息是人类最重要的基本功能之一.语言是人类特有的功能.声音是人类常用工具,是相互传递信息的最重要的手段.虽然,人可以通过多种手段获得外界信息,但最重要,最精细的信息源只有语言,图像和文字三种.与用声音传递信息相比,显然用视觉和文字相互传递信息,其效果要差得多.这是因为语音中除包含实际发音容的话言信息外,还包括发音者是谁及喜怒哀乐等各种信息.所以,语音是人类最重要,最有效,最常用和最方便的交换信息的形式.另一方面,语言和语音与人的智力活动密切相关,与文化和社会的进步紧密相连,它具有最大的信息容量和最高的智能水平。 语音信号处理是研究用数字信号处理技术对语音信号进行处理的一门学科,处理的目的是用于得到某些参数以便高效传输或存储;或者是用于某种应用,如人工合成出语音,辨识出讲话者,识别出讲话容,进行语音增强等. 语音信号处理是一门新兴的学科,同时又是综合性的多学科领域,

是一门涉及面很广的交叉学科.虽然从事达一领域研究的人员主要来自信息处理及计算机等学科.但是它与语音学,语言学,声学,认知科学,生理学,心理学及数理统计等许多学科也有非常密切的联系. 语音信号处理是许多信息领域应用的核心技术之一,是目前发展最为迅速的信息科学研究领域中的一个.语音处理是目前极为活跃和热门的研究领域,其研究涉及一系列前沿科研课题,巳处于迅速发展之中;其研究成果具有重要的学术及应用价值. 数字信号处理是利用计算机或专用处理设备,以数值计算的方法对信号进行采集、抽样、变换、综合、估值与识别等加工处理,借以达到提取信息和便于应用的目的。它在语音、雷达、图像、系统控制、通信、航空航天、生物医学等众多领域都获得了极其广泛的应用。具有灵活、精确、抗干扰强、度快等优点。 数字滤波器, 是数字信号处理中及其重要的一部分。随着信息时代和数字技术的发展,受到人们越来越多的重视。数字滤波器可以通过数值运算实现滤波,所以数字滤波器处理精度高、稳定、体积小、重量轻、灵活不存在阻抗匹配问题,可以实现模拟滤波器无法实现的特殊功能。数字滤波器种类很多,根据其实现的网络结构或者其冲激响应函数的时域特性,可分为两种,即有限冲激响应( FIR,Finite Impulse Response)滤波器和无限冲激响应( IIR,Infinite Impulse Response)滤波器。 FIR滤波器结构上主要是非递归结构,没有输出到输入的反馈,系统函数H (z)在处收敛,极点全部在z = 0处(因果系统),因而只能

波束形成_Matlab程序

1.均匀线阵方向图 %8阵元均匀线阵方向图,来波方向为0度 clc; clear all; close all; imag=sqrt(-1); element_num=8;%阵元数为8 d_lamda=1/2;%阵元间距d与波长lamda的关系 theta=linspace(-pi/2,pi/2,200); theta0=45/180*pi;%来波方向 (我觉得应该是天线阵的指向) %theta0=0;%来波方向 w=exp(imag*2*pi*d_lamda*sin(theta0)*[0:element_num-1]'); for j=1:length(theta) %(我认为是入射角度,即来波方向,计算阵列流形矩阵A) a=exp(imag*2*pi*d_lamda*sin(theta(j))*[0:element_num-1]'); p(j)=w'*a; %(matlab中的'默认为共轭转置,如果要计算转置为w.'*a) end figure; plot(theta,abs(p)),grid on xlabel('theta/radian') ylabel('amplitude') title('8阵元均匀线阵方向图') 见张小飞的书《阵列信号处理的理论和应用2.3.4节阵列的方向图》

当来波方向为45度时,仿真图如下: 8阵元均匀线阵方向图如下,来波方向为0度,20log(dB)

随着阵元数的增加,波束宽度变窄,分辨力提高:仿真图如下:

2.波束宽度与波达方向及阵元数的关系 clc clear all close all ima=sqrt(-1); element_num1=16; %阵元数 element_num2=128; element_num3=1024; lamda=0.03; %波长为0.03米 d=1/2*lamda; %阵元间距与波长的关系 theta=0:0.5:90; for j=1:length(theta); fai(j)=theta(j)*pi/180-asin(sin(theta(j)*pi/180)-lamda/(element_num1*d)); psi(j)=theta(j)*pi/180-asin(sin(theta(j)*pi/180)-lamda/(element_num2*d)); beta(j)=theta(j)*pi/180-asin(sin(theta(j)*pi/180)-lamda/(element_num3*d)); end figure; plot(theta,fai,'r',theta,psi,'b',theta,beta,'g'),grid on xlabel('theta'); ylabel('Width in radians') title('波束宽度与波达方向及阵元数的关系') 仿真图如下:

数字信号处理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; 运行结果:

CAPON波束形成_Matlab程序

CAPON 波束形成器仿真 1.实验原理 波束形成就是从传感器阵列重构源信号。(1)、通过增加期望信源的贡献来实现;(2)、通过抑制掉干扰源来实现。经典的波束形成需要观测方向(期望信源的方向)的知识。盲波束形成试图在没有期望信源方向信息的情况下进行信源的恢复。 波束形成技术的基本思想是:通过将各阵元输出进行加权求和,在一时间内将天线阵列波束“导向”到一个方向上,对期望信号得到最大输出功率的导向位置即给出DOA 估计。 虽然阵列天线的方向图是全方向的,但阵列的输出经过加权求和后,却可以被调整到阵列接收的方向增益聚集在一个方向上,相当于形成了一个”波束”。这就是波束形成的物理意义所在。 在智能天线中,波束形成是关键技术之一,是提高信噪比、增加用户容量的保证,能够成倍地提高通信系统的容量,有效地抑制各种干扰,并改善通信质量。 波束形成器的最佳权向量w 取决于阵列方向向量)(a k θ ,而在移动通信里用户的方向向量一般未知,需要估计(称之为DOA 估计)。因此,在计算波束形成的最佳权向量之前,必须在已知阵列几何结构的前提下先估计期望信号的波达方向。 Capon 波束形成器求解的优化问题可表述为 w arg min P(w)θ= 其约束条件为 1)(a w H =θ Capon 波束形成器在使噪声和干扰所贡献的功率为最小的同时,保持了期 望信号的功率不变。因此,它可以看作是一个尖锐的空间带通滤波器。最优加 权向量w 可以利用Lagrange 乘子法求解,其结果为 )(a R ?)(a )(a R ?w 1H 1CAP θθθ--=

当μ不取常数,而取作 )(a R ?)(a 11H θθμ-=时,最佳权向量就转变成Capon 波束形成器的权向量。空间谱为 )(a R ?)(a 1)(P 1-H CAP θθθ= 2.变量定义 M :均匀线阵列数目 P :信号源个数 nn :快拍数 angle1、angle2、angle3:信号来波角度 u :复高斯噪声 Ps :信号能量 refp :信噪比(实值) X :接收信号 Rxx :接收信号的相关矩阵 doa :波达方向估计 3.仿真结果 采用上述算法进行仿真,结果如图所示。 在本仿真程序中,我们采用16个均匀线阵列,3个信号源,来波角度分别为5?、45?、20-?,信噪比均为10dB ,噪声为复高斯白噪声,快拍数1000。 由仿真结果看出,capon 波束形成器较好的给出了信号的doa 估计,但是在仿真的过程中,我们发现,capon 算法具有很大的局限性,其对扰和噪声是比较敏感的。 4.程序 clear all i=sqrt(-1); j=i; M=16; %均匀线阵列数目 P=3; %信号源数目 f0=10;f1=50;f2=100;%信号频率 nn=1000; %快拍数

实验一 基于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实现信号的AM调制与解调

郑州轻工业学院 课程设计任务书 题目利用MATLAB实现信号的AM调制与解调专业、班级电子信息工程级班学号姓名 主要内容、基本要求、主要参考资料等: 主要内容: 利用MATLAB对信号 () () ?? ? ? ?≤ = 其他 ,0 t , 100 2t t Sa t m 进行AM调制,载波信号 频率为1000Hz,调制深度为0.5。t0=0.2;首先在MATLAB中显示调制信号的波形和频谱,已调信号的波形和频谱,比较信号调制前后的变化。然后对已调信号解调,并比较解调后的信号与原信号的区别。 基本要求: 1、掌握利用MATLAB实现信号AM调制与解调的方法。 2、学习MATLAB中信号表示的基本方法及绘图函数的调用,实现对常用连续时间信号的可视化表示。 3、加深理解调制信号的变化;验证信号调制的基本概念、基本理论,掌握信号与系统的分析方法。 主要参考资料: 1、王秉钧等. 通信原理[M].北京:清华大学出版社,2006.11 2、陈怀琛.数字信号处理教程----MATLAB释义与实现[M].北京:电子工业出版社,2004. 完成期限:2014.6.9—2014.6.13 指导教师签名: 课程负责人签名: 2014年6月5日

目录 摘要 (1) 1.matlab简介 (2) 1.1matlab基本功能 (2) 1.2matlab应用 (2) 2.系统总体设计方案 (4) 2.1调制信号 (4) 2.1.1 matlab实现调制信号的波形 (4) 2.1.2 matlab实现调制信号的频谱 (4) 2.1.3 matlab实现载波的仿真 (5) 2.2信号的幅度调制 (6) 2.2.1信号的调制 (6) 2.2.2幅度调制原理 (6) 2.2.3 matlab实现双边带幅度调制 (8) 2.2.4 matlab实现已调信号的频谱图 (8) 2.2.5 幅度调制前后的比较 (9) 2.3已调信号的解调 (9) 2.3.1 AM信号的解调原理及方式 (9) 2.3.2 matlab实现已调信号的解调 (11) 2.3.3信号解调前后的比较 (12) 结论与展望 (13) 参考文献 (14) 附录 (15)

Capon-波束形成matlab仿真(附源代码)教学内容

C a p o n-波束形成m a t l a b仿真(附源代 码)

Capon波束形成 阵列N=16,信号 0-30 θ? =,干扰为 160 θ?=, 219 θ? =, 345 θ? =,干扰功率分别为:40dB,35dB,50dB。Capon波束形成后的方向图和功率谱如下:

为了比较接收数据直接估计噪声协方差矩阵和利用干扰+噪声估计协方差矩阵的Capon波束形成的差异,进行如下仿真: 可以看出利用干扰+噪声估计协方差矩阵的方向图性能较优于接收数据直接估计噪声协方差矩阵的方向图。 代码: clc; clear all ; close all; ima=sqrt(-1); element_num=8; %阵元数 d_lamda=1/2; %阵元间距与波长的关系 theta=-90:0.5:90; %范围 theta0=-30; %来波方向 theta1=60; %干扰方向1 theta2=19; %干扰方向2 theta3=45; %干扰方向3

L=1000; %采样单元数 for i=1:L; amp0=10*randn(1);%信号的幅度随机产生,保证信号之间是不相关的 amp1=100*randn(1);%输入阵列的噪声 amp2=sqrt(10^3.5)*randn(1);%输入阵列的噪声 amp3=sqrt(10^5)*randn(1);%输入阵列的噪声 ampn=3;%噪声 x(:,i)=amp0*exp(ima*2*pi*1/2*sin(theta0*pi/180)*[0:element_num-1]')+... amp1*exp(ima*2*pi*1/2*sin(theta1*pi/180)*[0:element_num-1]')+... amp2*exp(ima*2*pi*1/2*sin(theta2*pi/180)*[0:element_num-1]')+... amp3*exp(ima*2*pi*1/2*sin(theta3*pi/180)*[0:element_num-1]')+... ampn*(randn(element_num,1)+ima*randn(element_num,1)); end Rx=1/L*x* x'; R=inv(Rx); steer=exp(ima*2*pi*1/2*sin(theta0*pi/180)*[0:element_num-1]'); w=R*steer/(steer'*R*steer);%Capon最优权矢量 for j=1:length(theta); a=exp(ima*2*pi*d_lamda*sin(theta(j)*pi/180)*[0:element_num-1]'); f(j)=w'*a; p(j)=1/(a'*R*a); end F=20*log10(abs(f)/(max(abs(f)))); P=20*log10(abs(p)/(max(abs(p))));%此处是功率的对数形式 figure; % subplot(121) plot(theta,F),grid on,hold on plot(theta0,-80:0,'.') plot(theta1,-80:0,'.') plot(theta2,-80:0,'.')

数字信号处理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 ?≥?=?

相关主题
文本预览
相关文档 最新文档