数字信号处理的matlab实现文档格式.docx
《数字信号处理的matlab实现文档格式.docx》由会员分享,可在线阅读,更多相关《数字信号处理的matlab实现文档格式.docx(22页珍藏版)》请在冰豆网上搜索。
%振幅
px=(180/pi)*angle(x);
%相位,并转换为度
x=rand(1,10);
x=randn(1,10);
%guassseriesnumbers
xp=[xxxxx];
x2=fliplr(x);
%左右折叠
第二章信号
%testsamplingrule
dt=0.01;
%sampingfrequencefordraw100Hz
t=0:
dt:
1;
f=10;
x=sin(2*pi*f*t+0.3);
dt1=0.1;
t1=0:
dt1:
%10Hz
x1=sin(2*pi*f*t1+0.3);
dt2=0.05;
t2=0:
dt2:
x2=sin(2*pi*f*t2+0.3);
subplot(3,1,1),plot(t,x);
title(&
#39;
f=10Hz,fs=100Hz&
);
subplot(3,1,2),plot(t1,x1),holdon,stem(t1,x1),plot(t,x);
f=10Hz,fs=10Hz&
subplot(3,1,3),plot(t2,x2),holdon,stem(t2,x2),plot(t,x);
f=10Hz,fs=20Hz&
基本信号:
%指数信号
%余弦信号
%sincfunction,eps是matlab系统的精度,这里防止被零除,sinc函数信号
%随机信号
%高斯随机序列
%复制
信号运算:
时移,倒置,
尺度改变x2=fliplr(x);
信号加
信号微分和积分
%test2微分和积分
clearall;
clc;
4*pi;
y=sin(t);
y1=diff(y)/dt;
%微分,dt为采样间隔
forii=1:
length(y)%积分,dt为采样间隔
y2(ii)=sum(y(1:
ii))*dt;
end
subplot(3,1,1),plot(t,y);
subplot(3,1,2),plot(t,[0y1]);
%微分后信号比原信号少一个元素,用零补
subplot(3,1,3),plot(t,y2);
gridon;
xlabel(&
Time/s&
ylabel(&
Amplitude&
信号乘
注意:
若参与信号乘的两个信号长度不一样,则必须进行转换之后才能在matlab中进行操作。
%test3信号乘,滤波器滤波。
注意振幅谱的绘制方法
dt=0.02;
df=1/(6000*dt);
%采样间隔为0.02s,则2min内数据个数为6000,df为信号频率分辨率n=0:
2999;
%折叠频率之前(取前3000个)数据进行操作
f=n*df;
%给出频率序列
sig=rand(1,length(n));
%运用随机函数产生信号振幅谱
filt=[ones(1,5/df),zeros(1,(length(n)-5/df))];
%理想滤波器幅频响应函数
subplot(3,1,1),plot(n*df,sig);
subplot(3,1,2),plot(n*df,filt,&
LineWidth&
3);
subplot(3,1,3),plot(n*df,sig.*filt);
信号奇偶性
第三章Fourier变换
一个带相位的余弦函数可以看成一个不带相位的正弦函数与一个不带相位的余弦函数的合成。
谐波函数是周期函数中最简单的函数,它描述的也是最简单的周期现象,在实际中遇到的周期现象往往比它复杂的多。
但这些复杂函数均在一定近似程度上可分解为不同频率的正弦函数和余弦函数。
可以将一种复杂的函数分解为一系列不同频率的正弦函数和余弦函数。
1周期函数的Fourier变换
连续傅里叶级数
2离散Fourier变换
离散傅里叶级数
对于一个有限长观测数据序列来说,使用Fourier级数法求得的各种周期或频率都是有限的。
?
=1
?
=?
=,T为所取数据总的时间长度?
Nyquist频率由取样间隔?
来决定,为取样间隔2倍的倒数。
Ck表示了k次谐波的振幅大小。
观察哪些分量的振幅大,哪些分量的振幅小,看出所给波列种含有哪种频率成分,如果我们想滤掉某种频率的波,直接去掉该频率的谐波即可。
我们通常用频率作为横坐标,用振幅作为纵坐标绘出图形来研究频率与振幅的关系,简称为振幅谱。
3信号的Fourier分解与合成举例
%test3DFT
clearall
N=256;
dt=0.05;
%datanumbersandsamplingintervel,samplingfrequenceis20Hz
n=0:
N-1;
t=n*dt;
%序号序列和时间序列
x1=sin(2*pi*t);
x2=0.5*sin(2*pi*5*t);
x=sin(2*pi*t)+0.5*sin(2*pi*5*t);
%signalsadd
m=floor(N/2)+1;
%downforinteger
a=zeros(1,m);
b=zeros(1,m);
fork=0:
m-1
forii=0:
N-1
a(k+1)=a(k+1)+2/N*x(ii+1)*cos(2*pi*k*ii/N);
%matlab&
sarrayindexmustbeincreasefrom1b(k+1)=b(k+1)+2/N*x(ii+1)*sin(2*pi*k*ii/N);
c(k+1)=sqrt(a(k+1).^2+b(k+1).^2);
if(mod(N,2)~=1)a(m)=a(m)/2;
end
xx(ii+1)=a
(1)/2;
fork=1:
m-1;
xx(ii+1)=xx(ii+1)+a(k+1)*cos(2*pi*k*ii/N)+b(k+1)*sin(2*pi*k*ii/N);
subplot(4,1,1),plot(t,x1);
orignalsignalOne&
),xlabel(&
subplot(4,1,2),plot(t,x2);
orignalsignalTwo&
%subplot(4,1,1),plot((0:
N-1)*dt,xx);
title(&
Composedsitgnal&
subplot(4,1,3),plot(t,x);
orignalsignal&
subplot(4,1,4),plot((0:
m-1)/(N*dt),c),title(&
Fouriertransform&
),xlabel(&
Frequence/Hz&
),ylabel(&
此处的1Hz和5Hz的振幅与原来信号振幅不完全一致,是由于数据采样点较少导致的,即N较小。
离散有限信号的频谱为周期谱。
方波及其Fourier分解系数和合成与原始方波信号对比
%test4方波的DFT分解和合成
closeall
N=200;
dt=4/N;
forn=1:
N%方波信号
if(n*dt&
=2)
x(n)=0.8;
else
x(n)=-0.8;
figure
(1)
subplot(2,1,1),plot((1:
N)*dt,x),holdon;
plot((1:
N)*dt,zeros(1,N),&
k&
),
Orignalsignal&
a=zeros(1,N),b=zeros(1,N);
nn=floor(N/2)+1;
nn-1%DFT分解方波信号,得到a和b
a(k+1)=0;
b(k+1)=0;
a(k+1)=a(k+1)+2/N*x(ii+1)*cos(2*pi*k*ii/N);
b(k+1)=b(k+1)+2/N*x(ii+1)*sin(2*pi*k*ii/N);
c(k+1)=