博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Learning DSP with MATLAB
阅读量:2134 次
发布时间:2019-04-30

本文共 2276 字,大约阅读时间需要 7 分钟。

Learning DSP with MATLAB

用DFT计算线性卷积

利用DFT的循环卷积特性,可以用DFT计算线性卷积:

若序列x[k]的长度为N,序列h[k]的长度为M,则**L≥N+M-1点循环卷积等于x[k]与h[k]的线性卷积。

具体操作步骤如下:

线性卷积过程用矩阵表示:

DFT计算有限序列线性卷积:

计算不同L的线性卷积结果
x = [1 2 3 4];h = [5 6 7];%L = length(x)+length(h)-1;L=4;for L=[4 5 6 7 8 9]    XE = fft(x,L);    HE = fft(h,L);    y1 = ifft(XE.*HE);    k1 = 0:L-1;    subplot(2,3,L-3);    stem(k1,real(y1));axis([0 6 0 55]);    s.color = 'red';    hold on    k2 = 0:5;    y2 = conv(x,h);    stem(k2,y2);axis([0 6 0 55]);    hold on    s.color = 'green';    title('计算不同L的线性卷积结果',L);    xlabel('k');ylabel('幅值');    L=L+1;end

当L = length(x) + length(h) - 1时,循环卷积与线性卷积结果相同

MATLAB:比较由DFT计算线性卷积结果与直接计算线性卷积结果并计算误差
x = [1 2 0 1];h = [2 2 1 1];L = length(x)+length(h)-1;XE = fft(x,L);HE = fft(h,L);y1 = ifft(XE.*HE);k = 0:L-1;subplot(3,1,1);stem(k,real(y1));axis([0 6 0 7]);title('由DFT计算线性卷积结果');xlabel('k');ylabel('幅值');y2 = conv(x,h);subplot(3,1,2);stem(k,y2)title('直接计算线性卷积结果');xlabel('k');ylabel('幅值');error = y1-y2;subplot(3,1,3);stem(k,abs(error));xlabel('k');ylabel('幅值');title('误差');

用MATLAB计算男女声音信号的频谱

[m,fs]=audioread('女生声音.mp3');L=length(m);N=L/32;m1=m(1:N);fm1=fft(m1);f=(0:N/2-1)*fs/N;subplot(2,1,1)plot(f,abs(fm1(1:N/2))/max(abs(fm1)))title('女生声音频谱');grid on;axis([0,4000,0,1])[m,fs]=audioread('男生声音.mp3');L=length(m);N=L/32;m1=m(1:N);fm1=fft(m1);f=(0:N/2-1)*fs/N;subplot(2,1,2)plot(f,abs(fm1(1:N/2))/max(abs(fm1)))title('男生声音频谱');grid on;axis([0,4000,0,1])

利用MATLAB由DFT近似计算*x(t)=e^-t*u(t)*的幅度频谱并与理论值比较

连续信号抽样并计算频谱

for N = [30 60]    L=512;     f1=100;  f2=120;    fs=600    T=1/fs;          ws=2*pi*fs;    %矩形窗    t=(0:N-1)*T;    x=cos(2*pi*f1*t)+cos(2*pi*f2*t);    X=fftshift(fft(x,L));    w=(-ws/2+(0:L-1)*ws/L)/(2*pi);    plot(w,abs(X));    hold on    title('矩形窗N=30 N=60的频谱')    ylabel('幅度谱');end
for N = [48 24]          L=512;     f1=100;f2=150;    fs=600; T=1/fs;          ws=2*pi*fs;      t=(0:N-1)*T;    f=cos(2*pi*f1*t)+0.15*cos(2*pi*f2*t);    wh=(hamming(N))';    f=f.*wh;    F=fftshift(fft(f,L));    w=(-ws/2+(0:L-1)*ws/L)/(2*pi);    plot(w,abs(F));    hold on    title('Hamming窗N=48 N=24的频谱')    xlabel('频率(Hz)')end

分析小星星音乐的频谱成分

[m,fs]=audioread('小星星.wav');L=length(m);N=L/32;m1=m(1:N);fm1=fft(m1);f=(0:N/2-1)*fs/N;plot(f,abs(fm1(1:N/2))/max(abs(fm1)))grid on;axis([0,4000,0,1])title('分析小星星音乐的频谱成分')

转载地址:http://kjugf.baihongyu.com/

你可能感兴趣的文章
Python 列表(list)、字典(dict)、字符串(string)常用基本操作小结
查看>>
Loadrunner之https协议录制回放报错如何解决?(九)
查看>>
python中xrange和range的异同
查看>>
列表、元组、集合、字典
查看>>
【Python】easygui小甲鱼
查看>>
【Python】关于Python多线程的一篇文章转载
查看>>
【Pyton】【小甲鱼】文件
查看>>
【Pyton】【小甲鱼】永久存储:腌制一缸美味的泡菜
查看>>
【Pyton】【小甲鱼】异常处理:你不可能总是对的
查看>>
APP性能测试工具
查看>>
【Pyton】【小甲鱼】类和对象
查看>>
压力测试工具JMeter入门教程
查看>>
作为一名软件测试工程师,需要具备哪些能力
查看>>
【Pyton】【小甲鱼】类和对象:一些相关的BIF(内置函数)
查看>>
【Pyton】【小甲鱼】魔法方法
查看>>
单元测试需要具备的技能和4大阶段的学习
查看>>
【Loadrunner】【浙江移动项目手写代码】代码备份
查看>>
Python几种并发实现方案的性能比较
查看>>
[Jmeter]jmeter之脚本录制与回放,优化(windows下的jmeter)
查看>>
Jmeter之正则
查看>>