数字信号处理实验(一)——DTFT

一、离散序列傅里叶变化——DTFT

1、DTFT公式

image

2、Matlab算法实现

image

function[X]=dtft(x,n,w,flag)%计算离散时间付里叶变换
%[X]=dtft(x,n,w)
%X=在w频率点上的DTFT数组
%x=n点有限长度序列
%n=样本位置向量
%w=频率点位置向量X = x * (exp(-j).^(n' * w));

3、DTFT一些画图代码

function [] = signal_write(X,w,flag)
% X:数据
% w:频率向量magX=abs(X);angX=angle(X);realX=real(X);imagX=imag(X);if(flag == 1)figure();magX=abs(X);angX=angle(X);realX=real(X);imagX=imag(X);subplot(2,2,1);plot(w/pi,magX);gridxlabel('以pi为单位的频率');title('幅度部分');ylabel('幅度')subplot(2,2,3);plot(w/pi,angX);gridxlabel('以pi为单位的频率');title('相角部分');ylabel('弧度')subplot(2,2,2);plot(w/pi,realX);gridxlabel('以pi为单位的频率');title('实部');ylabel('实部')subplot(2,2,4);plot(w/pi,imagX);gridxlabel('以pi为单位的频率');title('虚部');ylabel('虚部')
endif(flag == 2)plot(w/pi,magX);gridxlabel('以pi为单位的频率');title('幅度部分');ylabel('幅度')
endif(flag == 3)plot(w/pi,angX);gridxlabel('以pi为单位的频率');title('相角部分');ylabel('弧度')
endif(flag == 4)plot(w/pi,realX);gridxlabel('以pi为单位的频率');title('实部');ylabel('实部')
endif(flag == 5)plot(w/pi,imagX);gridxlabel('以pi为单位的频率');title('虚部');ylabel('虚部')
end

 

 

二、求LTI系统的频率响应H

image

%example2.4
clear all;close all;b=[1];
a=[1 -0.8];m=0;length(b)-1;
l=0:length(a)-1;%频率分点
K=500;
k=-2*K:1:2*K;
w=pi*k/K;%构建分子和分母的傅里叶变换
num=b*exp(-j*m'*w); %分母
den=a*exp(-j*l'*w); %分子
h=num./den;magH=abs(h);
angH=angle(h);figure(1)
subplot(2,1,1);plot(w/pi,magH),grid,title('幅度部分')
subplot(2,1,2);plot(w/pi,angH),grid,title('相角部分')
n=0:100;
x=cos(0.05*pi*n);
y=filter(b,a,x);
figure(2)
subplot(2,1,1);plot(n,x),grid,title('输入信号')
subplot(2,1,2);plot(n,y),grid,title('输出信号')

 

三、采样与重构

Matlab代码

function [  ] = caiyang(Fs,N,jt,flag)
%UNTITLED3 此处显示有关此函数的摘要
%   此处显示详细说明
%   Dt  模拟时间间隔:在特定精度下信号为模拟的 
%   t   模拟时刻序列 
%   n   离散时间索引
%   Ts  采样周期 
%   Fs  采样频率
%   xa  在特定精度下,由离散信号逼近模拟信号
%   jt  是否需要重构
%   flag  5  第五题 
%         6  第六题Dt=0.00005;             % 模拟时间间隔:在特定精度下信号为模拟的
Ts=1/Fs;                % 采样周期 
n=-N:1:N;               % 离散时间索引
nTs=n*Ts;               % 序列时刻索引
t=-N*Ts:Dt:N*Ts;        % 模拟时刻序列 %% 只是对应相应的作业、、
if flag == 5xa=exp(-1000*abs(t));       % 在特定精度下,由离散信号逼近模拟信号x1=exp(-1000*abs(nTs));     % Fs=5000 样本/s:x1为采样后的离散时间序列 
endif flag == 6xa=sin(1000*pi*t);       % 在特定精度下,由离散信号逼近模拟信号x1=sin(1000*pi*nTs);     % Fs=5000 样本/s:x1为采样后的离散时间序列 endif flag == 7xa = sin(20*pi*t + pi/4);x1 = sin(20*pi*nTs + pi/4);
end%%K  = 500; % 对pi进行K等分:相当于对单位园2pi进行1000等分 
dk = pi/K; % pi 的等分步进索引 
w  = 0 : dk : pi; % 角度步进索引 
X  = x1 * exp(-j* n'*w);% 对x1序列做离散傅立叶变换 
Xr = real(X);
w  = [-fliplr(w),w(2:end)]; % 定义w负半轴 
Xr = [fliplr(Xr),Xr(2:end)]; % 由于实部偶对称,得到Xr的负半轴 %% 决定是否重构
if jt == 1figure();% 绘出xasubplot(3,1,1)plot(t*1000,xa);hold on         % 绘出x(jw)stem(n*Ts*1000,x1,'r.'),hold off,title('时域波形') % 绘出以pi归一化的数字频率对应的频域实部波形subplot(3,1,2);plot(w/pi,Xr);title('频域波形')     subplot(3,1,3)chonggou(x1,Fs,N);
endif jt == 0figure();% 绘出xasubplot(2,1,1);plot(t*1000,xa);hold on         % 绘出x(jw)stem(n*Ts*1000,x1,'r.'),hold off,title('时域波形') % 绘出以pi归一化的数字频率对应的频域实部波形subplot(2,1,2);plot(w/pi,Xr);title('频域波形')      
endif jt == 2% 绘出以pi归一化的数字频率对应的频域实部波形plot(w/pi,Xr);title('频域波形')    endif jt == 3 figure();subplot(2,1,1);% 绘出xaplot(t*1000,xa);hold on         % 绘出x(jw)plot(n*Ts*1000,x1,'r.'),hold off,title('时域波形') xa  = x1 * sinc(Fs*(ones(length(nTs),1) * t-nTs'*ones(1,length(t))));      % 内插重构
   subplot(2,1,2);plot(t*1000,xa, 'k' ),hold onplot(n*Ts*1000,x1,'r.'),hold off ,title('重构波形' )axis([-N/Fs*1000,N/Fs*1000,min(x1),max(x1)]);end

 

重构代码:

function [  ] = chonggou(x1,Fs,N)
%UNTITLED4 此处显示有关此函数的摘要
%   此处显示详细说明
%   x1 抽样序列
%   Fs 采样率
%   t  时间轴
%   Dt 离散间隔,模拟信号Dt  = 0.00005;             % 模拟时间间隔:在特定精度下信号为模拟的
n   = -N:N;
nTs = n/Fs;
t   = -N/Fs:Dt:N/Fs;        % 模拟时刻序列 
xa  = x1 * sinc(Fs*(ones(length(nTs),1) * t-nTs'*ones(1,length(t))));      % 内插重构

plot(t*1000,xa, 'k' ),hold on
stem(nTs*1000,x1, 'r.' ),hold off ,title('重构波形' )
axis([-N/Fs*1000,N/Fs*1000,min(x1),max(x1)]);end

转载于:https://www.cnblogs.com/BlueMountain-HaggenDazs/p/4969034.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/569234.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

修改hadoop中yarn的webui中显示的任务时间为中国时间

在${HADOOP_HOME}\share\hadoop\yarn目录下找到hadoop-yarn-common-x.x.x.jar,然后用winRAR打开; 打开以后结构如下: 进入webapps/static/目录,然后修改yarn.dt.plugins.js;做出如下修改: (1&a…

Trident API 概览

Trident API 概览 在网上看到了很多有TRIDENT相关API的翻译,看来看去,总觉得没有说清楚很多东西,所以自己结合使用的经验翻译了一篇出来;翻译完以后,也发现 在自己的翻译中也有很多地方是表达不清楚的不过多少感觉有些…

Trident State译文

Trident State 译文 Trident针对状态化的数据源的读写进行了一流的分装。State可以包含在拓扑中-例如,保存在内存中,有HDFS提供备份-也可以保存在一个外部的数据库中,像Memcached和Cassandra。针对以上的所有情况,Trident的API都…

软件之道:软件开发争议问题剖析

软件之道:软件开发争议问题剖析 基本信息 原书名: Making Software 原出版社: OReilly 作者: (美)Andy Oram Greg Wilson 译者: 鲍央舟 张玳 沈欢星丛书名: 图灵程序设计丛书出版社:人民邮…

Java 多线程-生产者、消费者

一、整体代码 ThreadDemo.java public class ThreadDemo { public static void main(String[] args) { Godown godown new Godown(0); Consumer c1 new Consumer(50, godown); Consumer c2 new Consumer(20, godown); Consumer c3 new Consumer(30, godown); Producer p1 …

HGOI20190707 题解

Problem A 钢铁侠的诞生 现在有$n$个数字$a_i \leq 10^9 $,然后取出$m$个数字,保证合法。 从小到大输出剩余的$n-m$个数字。 对于100%的数据$m\leq n \leq 3\times 10^5$ Sol : 直接map映射然后用iterator来遍历整个map输出答案即可。 复杂度大概是$O(n…

Java连载3-编译与运行阶段详解JRE,JDK,JVM关系

一、 1.JDK下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk12-downloads-5295953.html 二、Java的加载与执行 1.Java程序运行包括: (1)编译阶段:检查Java源程序是否符合Java语法,符…

求最长回文串-从动态规划到马拉车之路(上)

要解决的问题: 给定一个字符串,要求求出这个字符串中的最长的回文串子串。 例子: cbddba的最长回文子串为 bddb cbdedba的最长回文子串为dbedb 由上面的例子可以看到,在考虑回文子串的问题时需要考虑奇偶性。因为奇回文关于中…

求最长回文串-从动态规划到马拉车之路(下)

预备知识&#xff1a; &#xff08;1&#xff09;在一个数轴上有两点i和j&#xff08;i<j&#xff09;关于点m对称&#xff0c;那么有 i 2m-j&#xff1b; 证明&#xff1a; 因为 i<j 且 i 和 j 关于 m 对称&#xff0c;那么有 &#xff08;i j&#xff09;/ 2 m 所…

Copy: 了解SQL Server锁争用:NOLOCK 和 ROWLOCK 的秘密

From http://blog.csdn.net/Atwind/archive/2007/10/19/1832844.aspx 关系型数据库&#xff0c;如SQL Server&#xff0c;使用锁来避免多用户修改数据时的并发冲突。当一组数据被某个用户锁定时&#xff0c;除非第一个用户结束修改并释放锁&#xff0c;否则其他用户就无法修改…

react-json渲染

在js文件内 //定义react组件 import React from react; import ReactDom from react-dom import ./components/assets/taobao.cssclass TaoBao extends React.Component{state{list:[{title:女装,href:javescript:;,hot:false,child:[{title:衬衫,href:javescript:;,hot:false}…

pageContext对象

这个对象代表页面上下文&#xff0c;该对象主要用于访问JSP之间的共享数据。使用pageContext可以访问page、request、session、application范围的变量。 pageContext是PageContext类的实例&#xff0c;它提供了如下两个方法来访问page、request、session、application范围的变量…

noi.ac #543 商店

我们考虑可并堆维护&#xff0c;从深到浅贪心选取。 用priority_queue启发式合并的话&#xff0c;是60pts: #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> #include<queue> #include<ct…

软件设计师--文件索引

问题&#xff08;题目&#xff09;如下图所示&#xff1a;这道题最中要的是理解什么是直接索引、一级间接索引、二级间接索引&#xff1a; 直接索引&#xff1a;地址项直接指向文件块 一级间接索引&#xff1a;地址项&#xff08;一层&#xff09;指向存放地址项&#xff08;二…

Floyd算法及其应用

Part I-Introduction Floyd算法是一种求图上多源最短路径的算法&#xff0c;适用于中小规模的图&#xff0c;思维简单易懂。 Floyd算法的实质是&#xff08;区间&#xff09;动态规划&#xff0c;在这里做一个简单的概述。 对于一个有\(n\)个结点的图&#xff0c; 令\(dis[i][j…

软件设计师--最早开始时间和最晚开始时间

题目如图所示&#xff0c;解法如下&#xff1a; 方法&#xff1a; 先求最早开始时间&#xff1a;A是开始节点&#xff0c;所以A的最早开始时间是0&#xff0c;并且最早开始时间等于最晚开始时间。等得到图中红色的部分。 其他节点的最早开始时间为以该节点作为弧头的所有有向…

软件设计师 --哈夫曼树的一个经典问题

题目如下&#xff1a;有很多人反应&#xff0c;他们怎么做都做不出正确的答案&#xff0c;结果发过他们画的哈夫曼树的图以后&#xff0c;发现图完全是错误的&#xff1b; 如下图所示&#xff1a;为什么错误的&#xff0c;因为在遇到有两个权重为17的树的时候&#xff0c;没有遵…

mini2440烧写nor flash

1. 安装Setup_JLinkARM_V440.exe 2. 打开JLINK ARM 3. File->Open Project&#xff0c;打开 s3c2440a_embedclub.jflash4. Options->Project settings... 选择 Flash&#xff0c;点击 Select flash device&#xff0c;选中开发板对应的 Nor Flash 芯片型号。比 如 S29AL0…

软件设计师--判定覆盖,判定条件覆盖,条件组合覆盖--一个栗子

针对上图的一个判断条件&#xff0c;在这里将分别讨论判定覆盖、判定条件覆盖、条件组合覆盖的情况&#xff1a; 设T1A>3,T2B>3;为该判定节点的两个子条件。 (一&#xff09;判定覆盖&#xff1a; 所谓的判定覆盖就是让判定的真分支和假分支各执行一次&#xff0c;只要…

python3 多继承搜索__init__方法的两种策略

继承情形一&#xff1a;测试代码如下&#xff1a; class A(object):def __init__(self):print(A)class B(object):def __init__(self):print(B)class C(A):def __init__(self):print(C)class D(B): def __init__(self):print(D)class E(C, D):pass执行当前代码 xE()&#xff0c…