第二章 离散时间信号与离散时间系统
与本章内容有关的Matlab文件主要是信号的产生、卷积和相关计算。
Contents
- rand
- randn
- sinc
- chirp
- conv
- xcorr
随机数产生 - rand
产生一均匀分布的白噪声信号 ,画出其波形,并检验其分布情况。
rand可以用来产生均值为0.5,幅度在0-1之间均匀分布的伪随机数,我们在数字信号处理中使用 他近似均匀分布的白噪声信号。
均值为
方差为
clear % 清除内存中可能保留的Matlab的变量 N = 50000; % u[n] 的长度 u=rand(1,N); % 调用rand,得到均匀分布的伪随机数 u_mean = mean(u); % 求u[n]的均值 power_u = var(u); % 求u[n]的方差 subplot(211) % 在一个图上分成上下两个子图 plot(u(1:100));grid on; ylabel('u[n]'); subplot(212); hist(u,50);grid on; ylabel('histogram of u[n]')
随机数产生 - randn
产生均匀分布、均值为0、功率为0.01的白噪声信号$$u[n]$$
p=0.1;N=500000; u = randn(1,N);a=sqrt(p); u=u*a;power_u = var(u); subplot(211) plot(u(1:100)) subplot(212) hist(u,50);
Sinc函数
利用sinc文件产生sinc信号并显示波形 对于连续信号:
对于离散信号:
n = 200; stept = 4*pi/n; t = -2*pi:stept:2*pi; y=sinc(t); clf; plot(t,y,t,zeros(size(t)));grid on; axis tight % 将坐标轴紧凑显示
Chirp信号
产生一个Chirp信号,其表达式为
该信号的频率是时变的,在雷达信号处理中有着广泛的应用。调用格式
x = chirp(T,F0,T1,F1)
其中T是横轴时间范围向量,F0是起始频率,F1是在T1时刻所具有的频率。
t = 0:0.001:1;
y = chirp(t,0,1,125); plot(t,y); % 产生Chirp信号
产生周期sinc信号
t = -10:0.01:10;
y = diric(t,5); plot(t,y); % 产生周期sinc信号
产生高斯信号 For example, plot a 50 kHz Gaussian RF pulse with 60% bandwidth and sampled at a rate of 1 MHz. Truncate the pulse where the envelope falls 40 dB below the peak.
tc = gauspuls('cutoff',50E3,.6,[],-40); t = -tc : 1E-6 : tc; y = gauspuls(t,50E3,.6); plot(t,y); % 产生高斯信号
产生脉冲串信号 % Example 1: Generate an asymmetric sawtooth waveform with a % repetition frequency of 3 Hz and a sawtooth width of 0.1 sec. % The signal is to be 1 second long with a sample rate of 1kHz.
t = 0 : 1/1E3 : 1; % 1 kHz sample freq for 1 sec D = 0 : 1/3 : 1; % 3 Hz repetition freq y = pulstran(t,D,'tripuls',0.1,-1); plot(t,y); % 产生脉冲串信号
产生三角波脉冲信号 % Create a triangular pulse with width 0.4.
fs = 10000; % Sampling frequency (samples/sec) t = -1:1/fs:1; % Time Vector w = .4; % Triangle Width y = tripuls(t,w); % Sampled aperiodic triangle plot(t,y); xlabel('Time (sec)');ylabel('Amplitude');
卷积 - Conv
实现两个序列的线性卷积。
计算$$ y[n] = x[n] \circest y[n]$$
N=5;M=6;L=N+M-1; x = [1,2,3,4,5];nx=0:N-1; h=[6,2,3,6,4,2];nh=0:M-1; y=conv(x,h);ny=0:L-1; subplot(131);stem(nx,x,'.');xlabel('n');ylabel('x[n]');grid on; subplot(132);stem(nh,h,'.');xlabel('n');ylabel('h[n]');grid on; subplot(133);stem(ny,y,'.');xlabel('n');ylabel('y[n]');grid on;
互相关 - Xcorr
可以用来计算信号的自相关和两个不同信号的互相关
rxy = xcorr(x,y)
rx = xcorr(x,Mlag,'flag')
格式1是求序列x,y的互相关; 格式2是求序列x的自相关,Mlag表示rx的单边长度,总的长度为2Mlag+1;flag是定标标志,若flag=biased,则表示是有偏估计,需要将rx都除以N;若flag=unbiased,则表示无偏估计,需要将rx除以(N-abs(m))
N = 500;p1=1;p2=0.1;f=1/8;Mlag=60;n=[0:N-1]; u=randn(1,N); u1=u*sqrt(p1);u2=u*sqrt(p2); s=sin(2*pi*f*n); x1 = u1(1:N)+s; x2 = u2(1:N)+s; rx1=xcorr(x1,Mlag,'biased'); rx2=xcorr(x2,Mlag,'biased'); subplot(131);plot(x1);xlabel('n');ylabel('s');grid on; subplot(132);plot(rx1);xlabel('lag');ylabel('rx1[l]');grid on; subplot(133);plot(rx2);xlabel('lag');ylabel('rx2[l]');grid on;