信号处理MATLAB专业培训教材
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
信号处理专业培训教材
信号的生成、存储和可视化分析; 统计信号处理 频域分析 滤波器设计
2
信号的生成
非周期函数
ones, zeros, linspace
周期函数
sin, cos, square, sawtooth
随机数
均匀随机数:A = rand(m,n),生成一个 m × n 的随机数矩 阵,在 [0, 1] 之间均匀分布;
A = a + (b – a)*rand(m,n);
高斯随机数:A = randn(m,n),生成一个 m × n 的随机数矩 阵,服从标准正态分布,均值为0,方差为1;
A = mu + sigma*randn(m,n);
3
举例:产生随机数,绘制直方图
un = -5+10*rand(1,1e6); figure; hist(un,100); gn = 10+5*randn(1,1e6); figure; hist(gn,100)
4
信号数据的读入和存储
Save:把MATLAB工作区间内的变量写入MATLAB数据 文件(MAT文件),后缀名是.mat。文件位于当前工作 路径下; Load:把变量从MAT文件中读入到MATLAB工作区间; 其它操作函数:
Textread Xlsread Importdata 图形化工具:uiimport
5
举例:导入多种类型的数据
jan = textread( 'all_temps.txt','%*u%u%*[^\n]', 'headerlines',4); [data,head] =xlsread( 'signaldata.xls'); plot(data(:,3)) legend(head{3}) I = importdata('eli.jpg'); image(I) uiimport
6
文件 I/O:低级例程
打开/关闭:
Function
fopen() fclose()
写入:
Operation
open file close file
Function
fw rite() fprintf() sprintf()
Operation
w rite binary data w rite formatted data w rite data to string
读取:
Function
fread() fscanf() fgetl() OR fgets() sscanf()
定位:
Operation
read binary data read formatted data read complete line read string
Function
ftell() fseek() frewind()
Operation
get file position go to file position return to start of file
7
举例:低级文件I/O操作
fid = fopen('square_mat.txt','wt'); fprintf(fid, '%s\n',... 'This is a square matrix'); fprintf(fid, '%i\t%i\t%i\n',... [1 2 3; 4 5 6; 7 8 9]'); fclose(fid); fid=fopen('square_mat.txt', 'rt'); title = fgetl(fid); data=fscanf(fid, '%i'); data = reshape(data, 3, 3); data_transpose = data'; fclose(fid);
8
信号可视化工具
SPTool:提供了一个丰富的图形界面,用于信号的观 察、滤波器设计以及谱分析。
Signal Browser:用于分析信号。可以使用计算机的音频设备来 播放部分信号; Filter Designer:用于设计或编辑 FIR 和 IIR 数字滤波器。请注 意:FDATool 是首选的进行滤波器设计的GUI工具。 Filter Viewer:用于分析滤波器特征; Spectrum Viewer:用于谱分析;
9
统计信号处理 均值:mean; 方差:var; 标准方差:std; 协方差:cov; 相关系数:corrcoef; 互相关函数:xcorr; 互协方差函数:xcov;
10
举例:互相关运算
x = [zeros(1,25),1, zeros(1,25)]; figure;stem(x);
y = .75*[zeros(1,20),x]+.1*randn(1,71); figure;stem(y);
[c,lags] =xcorr(x,y);
figure;stem(lags,c);
频域分析
FFT运算
谱分析
f非参数方法:对采样数据不作任何假设,直接使用DFT运算;
f参数方法:把采样数据假设成为由白噪声(均值为0,PSD为常量)驱动的线性系统的输出结果,然后估计线性系统(滤波器)
系数,使用这些系数来估计PSD值
f子空间方法:基于对采样数据的特征分析或者是相关矩阵的特征值分解而进行PSD估计方法
举例:用FFT运算实现周期图法
Fs = 100;
t = 0:1/Fs:10-1/Fs;
y = sin(2*pi*15*t) + sin(2*pi*30*t);
Y = fft(y,512);
f = (0:length(Y)-1)*(Fs-1)/length(Y);
Power = Y.*conj(Y)/length(Y);
figure;plot(f,Power)
title('Periodogram')
Y0 = fftshift(Y);
f0 = (-length(Y0)/2:length(Y0)/2-1)*(Fs-1)/length(Y0); P0 =Y0.*conj(Y0)/length(Y0);
figure;plot(f0,P0)