MATLAB数字信号处理基础
发布时间
阅读量:
阅读量
MATLAB数字信号处理基础
1、波形产生函数
| 函数 | 说明 |
|---|---|
| square | 方波 |
| sawtooth | 锯齿波 |
| sinc | sinc函数 |
| diric | diric函数 |
| rectpuls | 非周期方波 |
| tripuls | 非周期三角波 |
| pulstran | 脉冲序列 |
| chirp | 调频余弦波 |
square函数 :调用方式如下:
x = square(t):产生周期为2pi、幅度最大值为1的方波。
x = square(t, duty):产生周期为2pi、幅度最大值为1的方波,duty为占空比。
用square函数产生周期为1,占空比分别为50%和30%的方波:
t = 0:0.001:4;
y1 = square(2*pi*t);
y2 = square(2*pi*t, 30);
subplot(1, 2, 1);
plot(t, y1);
subplot(1, 2, 2);
plot(t, y2);
axis([0, 4, -1.5, 1.5]);

sawtooth函数: 调用方式如下:
* x = sawtooth(t, width):产生周期为2pi、峰值为1的锯齿波,width表示该位置横坐标与周期的比值。
用sawtooth函数产生周期为1的锯齿波和方波:
t = 0:0.001:4;
y1 = sawtooth(2*pi*t);
y2 = sawtooth(2*pi*t, 0.5);
subplot(1, 2, 1);
plot(t, y1);
subplot(1, 2, 2);
plot(t, y2);
axis([0, 4, -1, 1]);

sinc函数: 调用方式如下:
* x = sinc(t):产生sinc函数波形。
用sinc函数产生波形:
t = -5:0.001:5;
y = sinc(t);
plot(t,y);
axis([-5 5 -1 1]);

diric函数: 调用方式如下:
* x = diric(x, n):当n为奇数时,函数周期为2pi;当n为偶数时,函数周期为4pi。
用diric函数产生波形:
t = -15:0.05:15;
y1 = diric(t, 5);
y2 = diric(t, 6);
subplot(121);
plot(t, y1);
subplot(122);
plot(t, y2);
axis([-15 15 -1 1]);

rectpuls函数: 调用方式如下:
* x = rectpuls(t, w):产生宽度为w的非周期、单位高度的矩形波。
用rectpuls函数产生长度为1s,宽度为0.7s的非周期矩形波:
t = 0:0.01:1;
y = rectpuls(t, 0.7);
plot(t, y);
axis([0 1 -0.2 1]);

tripuls函数: 调用方式如下:
x = tripuls(t, width, s):产生非周期单位高度、width宽度、倾斜度s的三角波。
用tripuls函数产生长度为1s,宽度为0.6s,倾斜度分别为0和0.9的非周期三角波:
t = 0:0.01:1;
y1 = tripuls(t, 0.6, 0);
subplot(121);
plot(t, y1);
y2 = tripuls(t, 0.6, 0.9);
subplot(122);
plot(t, y2);
axis([0 1 -0.2 1]);

pulstran函数: 调用方式如下:
* x=pulstran(t,d,’func’):其中参数func取值为gauspuls(高斯调制正弦信号);rectpuls(非周期方波);tripuls(非周期三角波)。该函数产生以d为采样间隔的func指定形状的冲激串;
* x=pulstran(t,d,’func’,p1,p2):将参数p1和p2传递给func函数;
* x= pulstran(t,d,p,Fs):向量p表示原始序列,Fs为采样率。对原始序列多次延迟相加得到输出序列。
用pulstran函数产生三角波冲激串:
t = 0:0.001:1;
d= 0:1/3:1;
y = pulstran(t, d, 'tripuls');
plot(t, y);
axis([0 1 1.3 1.75]);

chirp函数: 调用方式如下:
* chirp(t,f0,t1,f1):产生线性调频余弦信号。f0和f1分别是0时刻和t1时刻的瞬时频率。
* chirp(t,f0,t1,f1,method):参数method指定不同的扫频方式,取值方式三种包括:
Linear线性的
quadratic二次的
logarithmic对数的
用chirp函数产生二次扫频信号,绘出时域波形和时频图:
t = 0:1/400:1;
y = chirp(t, 10, 1, 100, 'quadratic');
plot(t, y);
spectrogram(y,128,120,128,1000,'yaxis');
axis([0 1 -1 1]);

t = 0:1/400:1;
y = chirp(t, 10, 1, 100, 'quadratic');
plot(t, y);
%spectrogram(y,128,120,128,1000,'yaxis');
axis([0 1 -1 1]);

2、傅里叶变换函数
| 函数 | 说明 |
|---|---|
| fft | 计算快速离散傅里叶变换 |
| fftshift | 调整fft函数的输出顺序,将零频位置移动到频谱的中心 |
| ifft | 计算离散傅里叶反变换 |
-
fft函数: 调用方式如下:
- y=fft(x):计算信号x的快速傅立叶变换y。当x的长度为2的幂时,用基2算法,否则采用较慢的分裂基算法。
- y=fft(x,n):计算n点FFT。当length(x)>n时,截断x,否则补零。
-
fftshift函数: 调用方式如下:
- y=fftshift(x):如果x为向量,fftshift(x)直接将x的左右两部分交换;如果x为矩阵(多通道信号),将x的左上、右下和右上、左下四个部分两两交换。
-
ifft函数: 调用方式如下:
- y=ifft(x):计算信号x的傅立叶反变换
- y=ifft(x,n):计算n点IFFT。如果length(x)>n,以n为长度截短x,否则补零。
3、滤波器分析与实现函数
| 函数名 | |
|---|---|
| conv | 求卷积 |
| impz | 数字滤波器的冲激响应 |
| zplane | 离散系统的零极点图 |
| abs | 求幅值 |
| angle | 求相角 |
| filter | 直接II型滤波器 |
conv函数: 调用方式如下:
* c=conv(a,b):返回向量a、b的卷积c。
impz函数: 调用方式如下:
* [h,t]=impz(b,a):b、a分别为系统传递函数的分子和分母的系数向量。返回系统(b,a)的冲激响应h和相应的时间轴向量t。
* [h,t]=impz(b,a,n):返回n点冲激响应。
* [h,t]=impz(b,a,n,Fs):指定冲激响应采样点间隔1/Fs。Fs为相对频率,缺省值为1。
计算线性系统(b,a)的冲激响应:
b = [0.2 0.1 0.3 0.1 0.2];
a= [1 -1.1 1.5 -0.7 0.3];
impz(b,a,50);

zplane函数: 调用方式如下:
* zplane(z,p):绘制系统零极点图,“o”表示零点,“x” , 表示极点。z,p分别为零点和极点向量。
* zplane(b,a):b、a分别为系统传递函数的分子和分母系
数向量。
计算线性系统(b,a)的零点和极点:
b = [0.2 0.1 0.3 0.1 0.2];
a= [1 -1.1 1.5 -0.7 0.3];
zplane(b, a);

abs函数: 调用方式如下:
* y=abs(x):返回复数向量x的幅值向量y。
绘出一个正弦信号的傅里叶变换的幅度谱:
t = (0:99)/100;
x = sin(2*pi*40*t);
y = fft(x);
m = abs(y);
f = (0:length(y)-1)/length(y)*100;
plot(f,m);

angle函数: 调用方式如下:
* p = angle(h):返回复数向量h的相位向量p。
绘出方波信号的相频特性:
t = (0:99)/10000;
x = sin(2*pi*t);
y = fft(x);
m = angle(y);
f = (0:length(y)-1)/length(y)*100;
plot(f,m);

filter函数: 调用方式如下:
* y=filter(b,a,x):计算输入信号x经过传递函数分子分母系数向量(降幂排列)为b、a的滤波器后的输出y。
* [y,zf]=filter(b,a,x):返回最终的状态向量zf。
* […]=filter(b,a,x,zi):指定滤波器的初始条件zi。
全部评论 (0)
还没有任何评论哟~
