关于MATLAB实现的数字信号处理(二)
上一篇:关于MATLAB实现的数字信号处理(一)
下一篇:关于MATLAB实现的数字信号处理(三)
文章目录
- 上一篇:关于MATLAB实现的数字信号处理(一)
- 下一篇:关于MATLAB实现的数字信号处理(三)
- 离散时间傅里叶变换的性质
- 1.离散时间傅里叶变换的卷积性质
- 2.离散时间傅里叶变换的时间反转性质
- 3.离散傅里叶变换和离散傅里叶逆变换的计算
离散时间傅里叶变换的性质
1.离散时间傅里叶变换的卷积性质
e−jw0ng[n]⟶DTFTG(ej(w−w0))e^{-j w_{0} n} g[n] \stackrel{\mathrm{DTFT}}{\longrightarrow} G\left(e^{j\left(w-w_{0}\right)}\right) e−jw0ng[n]⟶DTFTG(ej(w−w0))
调用卷积函数conv()和先对两个序列做离散时间傅里叶变换,再做乘积相比较
实现代码
% DTFT的卷积
clf;
w = -pi:2*pi/255:pi;
x1 = [1 3 5 7 9 11 13 15 17];
x2 = [1 -2 3 -2 1];
y = conv(x1,x2);%卷积
h1 = freqz(x1, 1, w);%求h1的离散傅里叶变换
h2 = freqz(x2, 1, w);%求h2的离散傅里叶变换
hp = h1.*h2;%h1与h2相乘
h3 = freqz(y,1,w);%求卷积的离散傅里叶变换
%画出幅度谱的乘积
subplot(2,2,1)
plot(w/pi,abs(hp));grid
title('幅度谱的乘积')
%画出卷积后序列的幅度谱
subplot(2,2,2)
plot(w/pi,abs(h3));grid
title('卷积后序列的幅度谱')
%画出相位谱的和
subplot(2,2,3)
plot(w/pi,angle(hp));grid
title('相位谱的和')
%画出卷积后序列的相位谱
subplot(2,2,4)
plot(w/pi,angle(h3));grid
title('卷积后序列的相位谱')
运行结果
2.离散时间傅里叶变换的时间反转性质
g[−n]⟶DTFTG(e−jw)g[-n] \stackrel{\mathrm{DTFT}}{\longrightarrow} G\left(e^{-j w}\right) g[−n]⟶DTFTG(e−jw)
实现代码
% 离散傅里叶变换的时间反转性质
clf;
w = -pi:2*pi/255:pi;
num = [1 2 3 4];%系统函数的分子多项式的系数
L = length(num)-1;%分母多项式系数矩阵的长度
h1 = freqz(num, 1, w);%求h1的离散时间傅里叶变换
h2 = freqz(fliplr(num), 1, w);%求对h1进行反转后的离散时间傅里叶变换
h3 = exp(w*L*i).*h2;%对h2进行频移
%画出原序列的幅度谱
subplot(2,2,1)
plot(w/pi,abs(h1));grid
xlabel('\omega/\pi');
ylabel('振幅');
title('原序列的幅度谱')
%画出时间反转后的幅度谱
subplot(2,2,2)
plot(w/pi,abs(h2));grid
xlabel('\omega/\pi');
ylabel('振幅');
title('时间反转后的幅度谱')
%画出原始序列的相位谱
subplot(2,2,3)
plot(w/pi,angle(h1));grid
xlabel('\omega/\pi');
ylabel('相位');
title('原始序列的相位谱')
%画出时间反转后的相位谱
subplot(2,2,4)
plot(w/pi,angle(h3));grid
xlabel('\omega/\pi');
ylabel('相位');
title('时间反转后的相位谱')
运行结果
3.离散傅里叶变换和离散傅里叶逆变换的计算
1.写一个MATLAB程序,计算并画出长度为N的L点离散博里叶变换X[k]的值,其中L>=N,然后计算并画出L点离散傅里叶逆变换X[k]。对不同长度N和不同的离散傅里叶变换长度L,运行程序。
%DFT
%原始序列是x=[1 2 3...],
%其长度由N决定
clf;
N=10;L=20;
% w1代表频率点
wl=-pi:2*pi/L:pi;
n=1:L;
for i=1:Lw(i)=wl(i);
end
for i=1:Nx(i)=i;
end
xx=[x zeros(1,L-N)];
y=fft(xx,L);
xk=ifft(y,L);
subplot(3,1,1)
plot(w/pi,abs(y));
grid
xlabel('\omega/\pi');
ylabel('振幅');
title('幅度谱');
subplot(3,1,2)
plot(w/pi,angle(y));
grid
xlabel('\omega/\pi');
ylabel('以弧度为单位的相位');
title('相位谱');
subplot(3,1,3)
stem(n,xk);grid
xlabel('n');
ylabel('振幅');
title('原始序列')
实验结果
N=10 L=20
N=10 L=10
2.用一个N点复数离散傅里叶变换计算两个长度为N的实数序列的N点离散傅里叶变换,并将结果同直接使用两个N点离散傅里叶变换得到的结果进行比较。
若g[n]和h[n]表示两个长度为N的实序列,G[k]和H[k]分别表示它们各自的N点离散傅里叶变换。定义x[n]= g[n]+ji[n],那么x[n]为长度为N的复数序列,它的N点离散傅里叶变换X[k],我们可以通过下式有效地计算G[k]和H[k]:
G[k]=12(X[k]+X∗[(−k)N])H[k]=12j(X[k]−X∗[(−k)N])\begin{aligned} G[k] &=\frac{1}{2}\left(X[k]+X^{*}\left[(-k)_{N}\right]\right) \\ H[k] &=\frac{1}{2 j}\left(X[k]-X^{*}\left[(-k)_{N}\right]\right) \end{aligned} G[k]H[k]=21(X[k]+X∗[(−k)N])=2j1(X[k]−X∗[(−k)N])
实现代码
%用一个N点复数离散傅里叶变换
%计算两个长度为N的实数序列的N点离散傅里叶变换,
%并将结果同直接使用两个N点离散傅里叶变换得到的结果进行比较。
clf;
g=[1 2 3 4 5 6 7 8 9 10];
h=[11 12 13 14 15 16 17 18 19 20];
N1=20;N2=10;
% w1代表频率点1
% w2代表频率点2
w1=-pi:2*pi/(N1-1):pi;
w2=-pi:2*pi/(N2-1):pi;
x=g+1i*h; %表示出x[n]
x1=g-1i*h; %表示出x[n]的共轭
xk=fft(x,N2); %计算x[n]的离散傅里叶变换
x1k=fft(x1,N2);%计算x[n]共轭的离散傅里叶变换
%根据公式有效地计算g[n]和h[n]的离散傅里叶变换
gk=1/2*(xk+x1k);
hk=1/(2*1i)*(xk-x1k);
%根据fft函数分别计算g[n]和h[n]的离散傅里叶变换
gk1=fft(g,N2);
hk1=fft(h,N2);
%画出G[k]的幅频响应
subplot(4,2,1)
stem(abs(gk));
axis([0,10,0,70]);
grid
xlabel('\omega/\pi');
ylabel('振幅');
title('G[k]的幅度谱')
%画出G[k]的相频响应
subplot(4,2,2)
stem(angle(gk));
axis([0,10,-4,4]);
grid
xlabel('\omega/\pi');
ylabel('以弧度为单位的相位');
title('G[k]相位谱')
%画出H[k]的幅频响应
subplot(4,2,3)
stem(abs(hk));
axis([0,10,0,200]);
grid
xlabel('\omega/\pi');
ylabel('振幅');
title('H[k]的幅度谱')
%画出H[k]的相频响应
subplot(4,2,4)
stem(angle(hk));
axis([0,10,-4,4]);
grid
xlabel('\omega/\pi');
ylabel('以弧度为单位的相位');
title('H[k]相位谱')
%画出G1[k]的幅频响应
subplot(4,2,5)
stem(abs(gk1));
axis([0,10,0,70]);
grid
xlabel('\omega/\pi');
ylabel('振幅');
title('G1[k]的幅度谱')
%画出G1[k]的相频响应
subplot(4,2,6)
stem(angle(gk1));
axis([0,10,-4,4]);
grid
xlabel('\omega/\pi');
ylabel('以弧度为单位的相位');
title('G1[k]相位谱')
%画出H1[k]的幅频响应
subplot(4,2,7)
stem(abs(hk1));
axis([0,10,0,200]);
grid
xlabel('\omega/\pi');
ylabel('振幅');
title('H1[k]的幅度谱')
%画出H1[k]的相频响应
subplot(4,2,8)
stem(angle(hk1));
axis([0,10,-4,4]);
grid
xlabel('\omega/\pi');
ylabel('以弧度为单位的相位');
title('H1[k]相位谱')
运行结果
3.用两个N点离散傅里叶变换计算一个长度为2N的实数序列的2N点离散傅里叶变换,并将结果同直接使用一个2N点离散傳里叶变换得到的结果进行比较
设v[n]是长度为2N的实序列,V[n]表示它的2N点离散傅里叶变换。将长度为N的两个实序列g[n]和h[n]分别定义为
g[n]=v[2n]and h[n]=v[2n+1],0⩽n<Ng[n]=v[2 n] \text { and } h[n]=v[2 n+1], \quad 0 \leqslant n<N g[n]=v[2n] and h[n]=v[2n+1],0⩽n<N
并且G[k]和H[k]表示它们的N点离散傅里叶变换,则v[n]的2N点离散傅里叶变换V[k],可以自两个N点离散傅里叶变换G[A]和H[k]计算得到,即
V[k]=G[(k)N]+W2NkH[(k)N],0⩽k⩽2N−1V[k]=G\left[(k)_{N}\right]+W_{2 N}^{k} H\left[(k)_{N}\right], \quad 0 \leqslant k \leqslant 2 N-1 V[k]=G[(k)N]+W2NkH[(k)N],0⩽k⩽2N−1
实现代码
设定原序列为x=cos(n*pi/6)
N=6; %给定N的值
n=0:2*N-1; %设定n的范围
x=cos(pi/6.*n); %给定序列x[n]
m=0:N-1; %设定m的范围
x1=cos(pi/6.*(2*m)); %取n为偶数时x[n]的值组成序列x1[n]
x2=cos(pi/6.*(2*m+1)); %取n为奇数时x[n]的值组成序列x2[n] figure,
subplot(3,1,1)%指定位置1,绘制序列x[n]
stem(n,x);
xlabel('n'); %设定序列x[n]的横轴标注和纵轴标注
ylabel('x');
title('原序列x[n]')
subplot(3,1,2)%指定位置2,绘制序列x1[n]
stem(m,x1);
xlabel('m'); %设定序列x1[n]的横轴标注和纵轴标注
ylabel('x1');
title('取n为偶数时x[n]的值组成序列x1[n]')
subplot(3,1,3)%指定位置3,绘制序列x2[n]
stem(m,x2);
xlabel('m'); %设定序列x2[n]的横轴标注和纵轴标注
ylabel('x2');
title('取n为奇数时x[n]的值组成序列x2[n]')k1=0:N-1; %设定k1的范围
k2=0:N-1; %设定k2的范围
X1=fft(x1); %求序列x1[n]的离散傅里叶变换
X2=fft(x2); %求序列x2[n]的离散傅里叶变换figure,
subplot(2,1,1)%指定位置1,绘制X1(k)
stem(k1,real(X1));
xlabel('k1'); %设定X1(k)的横轴标注和纵轴标注
ylabel('X1');
title('序列x1[n]的离散傅里叶变换X1(k)')
subplot(2,1,2) %指定位置2,绘制X2(k)
stem(k2,real(X2));
xlabel('k2'); %设定X2(k)的横轴标注和纵轴标注
ylabel('X2');
title('序列x2[n]的离散傅里叶变换X2(k)')W=exp(-1i*pi/N).^k2; %给定W的值
Y=X1+X2.*W; %给定Y
X=fft(x); %求序列x[n]的离散傅里叶变换
k=0:2*N-1; %设定k的范围 figure,
subplot(2,1,1) %指定位置1,绘制X(k)
stem(k,real(X));
xlabel('k'); %设定X(k)的横轴标注和纵轴标注
ylabel('X');
title('2N点离散傅里叶变换结果')
subplot(2,1,2)%指定位置2,绘制Y(k)
stem(k1,real(Y));
xlabel('k1'); %设定Y(k)的横轴标注和纵轴标注
ylabel('Y');
title('由两个N点离散傅里叶变换得到的结果')
运行结果
图一 序列x[n],x1[n],x2[n]
图二 序列x1[n]和x2[n]的离散傅里叶变换X1(k)和X2(k)
图三 两种傅里叶变换结果比较
关于MATLAB实现的数字信号处理(二)相关推荐
- MATLAB图像处理与数字信号处理资料分享来袭
小天从大学开始接触数学建模,便开启资料收集功能.经过近几年的积累和沉淀,再加上对数学建模领域的深入研究,收集整理了丰富的数学建模资料,内容涵盖"MATLAB图像处理"," ...
- MATLAB中常见数字信号处理相关函数汇总
MATLAB中常见数字信号处理相关函数汇总 现将MATLAB信号处理工具箱函数进行分组,便于记忆查询和长期回顾. Waveform Generation(波形产生) chairp: 产生扫频余弦函数: ...
- MATLAB与FPGA数字信号处理(数字滤波器设计)、数字IC、无线通信、图像处理、信道编码系列
FPCA.数字IC笔试题系列 不容错过的FPGA/数字IC秋招笔试面试汇总帖(2022届) 1. FPGA.数字IC系列(1)--乐鑫科技2021数字IC提前批笔试 2. FPGA.数字IC系列(2) ...
- matlab pburg,现代数字信号处理——AR模型
1. AR模型概念观 AR模型是一种线性预测,即已知N个数据,可由模型推出第N点前面或后面的数据(设推出P点),所以其本质类似于插值,其目的都是为了增加有效数据,只是AR模型是由N点递推,而插值是由两 ...
- matlab 数字信号波形图,数字信号处理第三次实验代码及波形图
数字信号处理第三次实验 一.实验目的: 1.掌握离散时间系统的DFT 的MATLAB 实现: 2.熟悉DTFT 和DFT 之间的关系. 3.了解信号不同变形的DFT 与原信号DFT 之间的关系 二.实 ...
- 数字信号处理matlab实验报告,数字信号处理,matlab实验报告
数字信号处理,matlab实验报告 Matlab实验报告 实验一: 1. 实验Matlab代码: N=25; Q=0.9+0.3*j; WN=exp(-2*j*pi/N); x=zeros(25,1) ...
- matlab wc wp,数字信号处理MATLAB习题.PDF
数字信号处理MATLAB习题 数字信号处理MATLAB 习题 电气硕 72 李弘昌 第11 题 分别用脉冲响应不变法和双线性变换法设计一个巴特沃斯型IIR 低通数字滤波器,采样 频率 ,其通带边频 处 ...
- matlab如何进行数字信号处理,数字信号处理基础及MATLAB实现(第2版)
[内容简介] 本书系统地介绍了数字信号处理基本理论.设计方法和实现等方面的内容.全书共分9章,第1章介绍数字信号处理的研究对象.学科概貌.系统基本组成.特点.发展及应用等内容:第2章介绍离散时间信号与 ...
- 数字信号处理实验matlab版答案,数字信号处理习题答案及matlab实验详解.pdf
数字信号处理习题答案及matlab实验详解.pdf 第一章 参考答案: 1 (1)2 2 14 ,有理数,所以周期为 14 0 3 3 7 2 2 (2 ) 12 ,无理数,非周期 ...
最新文章
- 对计算机网络设备的认识,计算机入门知识:你有必要认识的网络设备及工具
- 再见 iTunes!苹果macOS Catalina 10.15正式版更新
- Errors reported here must be corrected before the service can be started.
- 字符串format函数使用
- ajax提交不能获取数据,django无法收到ajax的请求数据
- JavaWeb项目开发流程
- 小米笔记本pro 双硬盘双系统 opencore引导安装黑苹果
- Android入门,android基础开发
- 数理统计复习笔记七——列联表的独立性检验
- 电脑录音效果不佳的问题解决
- 知其然而不知其所以然
- SpringBoot开源文档型知识库系统,源代码分享
- C语言编译能否被七整除,求c语言高手输出1000以内既能被5整除又能被7整除
- NR PUSCH(七) 相干传输
- 深圳市租房提取住房公积金攻略
- 创业必须的一些网站和博客导航
- 【Linux】进程概念 —— 虚拟内存地址空间
- 大疆无人机DJI Mobile SDK入门(一)
- 大学四年,小白一路走来,分享一波我是如何学习、提高自己的算法
- 递归,递推,迭代的区别
热门文章
- 错误代码:1120当前Hsql数据库已被另一线程锁定
- idea 高级调试技巧
- MyBatis 处理长字段(long varchar)
- jstl错误:According to TLD or attribute directive in tag file, attribute value does not accept any expr
- JAVA设计模式Design Pattern→单例模式Singleton Pattern、工厂模式Factory Pattern、代理模式Proxy Pattern
- io 错误: socket closed_Tomcat NIO(9)IO线程Overall流程和关键类
- jquery的DOM节点操作(替换元素节点)
- android jni java call c字符串乱码,JNI系列入门之C语言中文字符串乱码问题
- 1021个位数字统计
- 计算机网络—TCP协议