1、MATLAB自编绘图函数

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);grid
xlabel('以pi为单位的频率');title('幅度部分');ylabel('幅度')
subplot(2,2,3);plot(w/pi,angX);grid
xlabel('以pi为单位的频率');title('相角部分');ylabel('弧度')
subplot(2,2,2);plot(w/pi,realX);grid
xlabel('以pi为单位的频率');title('实部');ylabel('实部')
subplot(2,2,4);plot(w/pi,imagX);grid
xlabel('以pi为单位的频率');title('虚部');ylabel('虚部')
end if(flag == 2)
plot(w/pi,magX);grid
xlabel('以pi为单位的频率');title('幅度部分');ylabel('幅度')
end if(flag == 3)
plot(w/pi,angX);grid
xlabel('以pi为单位的频率');title('相角部分');ylabel('弧度')
end if(flag == 4)
plot(w/pi,realX);grid
xlabel('以pi为单位的频率');title('实部');ylabel('实部')
end if(flag == 5)
plot(w/pi,imagX);grid
xlabel('以pi为单位的频率');title('虚部');ylabel('虚部')
end

 

2、DTFT变换函数

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)); if(flag == 1)
signal_write(X,w,1);
end

 

3、采样代码

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 == 5
xa=exp(-1000*abs(t)); % 在特定精度下,由离散信号逼近模拟信号 x1=exp(-1000*abs(nTs)); % Fs=5000 样本/s:x1为采样后的离散时间序列
end if flag == 6
xa=sin(1000*pi*t); % 在特定精度下,由离散信号逼近模拟信号 x1=sin(1000*pi*nTs); % Fs=5000 样本/s:x1为采样后的离散时间序列 end if flag == 7
xa = 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 == 1
figure();
% 绘出xa
subplot(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);
end if jt == 0
figure();
% 绘出xa
subplot(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('频域波形')
end

 

4、重构代码

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

数字信号处理实验(一)——DTFT的更多相关文章

  1. 数字信号处理实验(五)——IIR滤波器的设计

    一.使用自编函数设计IIR滤波器 1.冲激响应法 (1)注给出的数字滤波器指标先化成模拟指标 (2)设计出模拟滤波器: (3)使用冲激响应法转化成数字滤波器 (4)一个demo clear all; ...

  2. 数字信号处理实验(零)—— 一维声音信号处理和二维图像处理

    一.在matlab下声音信号的I/O 1.读wav文件函数 •y = wavread('filename') •[y,Fs,bits] = wavread('filename') •[...] = w ...

  3. 数字信号处理实验(六)——FIR滤波器的设计

    一.四种线性相位FIR滤波器的振幅响应 1.自编函数 [Hr,w,a,L]=-n) [Hr,w,a,L]=-n) [Hr,w,a,L]=-n) [Hr,w,a,L]=-n) 2.一个demo clea ...

  4. 数字信号处理实验(四)——数字滤波器结构

    一.滤波器结构 1.IIR滤波器 (1)系统函数   (2)差分方程   (3)级联形式:   (4)并联形式   2.FIR滤波器 (1)系统函数   (2)差分方程   (3)级联形式:   (4 ...

  5. FS,FT,DFS,DTFT,DFT,FFT的联系和区别 数字信号处理

    DCT变换的原理及算法 文库介绍 对于初学数字信号处理(DSP)的人来说,这几种变换是最为头疼的,它们是数字信号处理的理论基础,贯穿整个信号的处理. 学习过<高等数学>和<信号与系统 ...

  6. 几幅图片弄清DFT、DTFT、DFS的关系 数字信号处理

    原址:http://www.cnblogs.com/BitArt/archive/2012/11/24/2786390.html 很多同学学习了数字信号处理之后,被里面的几个名词搞的晕头转向,比如DF ...

  7. 《数字信号处理》课程实验2 – FIR数字滤波器设计

    一.FIR数字滤波器设计原理  本实验采用窗函数法设计FIR数字低通滤波器.我们希望设计的滤波器系统函数如下: \(H_{d}\left( e^{jw} \right) = \left\{ \begi ...

  8. 《数字信号处理》课程实验1 – FFT的实现

    一.按时间抽选的基-2 FFT实现原理 观察DIT(基2)FFT的流图(N点,N为2的幂次),可以总结出如下规律: (1)共有\(L=\log_2⁡N\)级蝶形运算: (2)输入倒位序,输出自然顺序: ...

  9. 数字信号处理--FFT与蝶形算法

    在数字信号处理中常常需要用到离散傅立叶变换(DFT),以获取信号的频域特征.尽管传统的DFT算法能够获取信号频域特征,但是算法计算量大,耗时长,不利于计算机实时对信号进行处理.因此至DFT被发现以来, ...

随机推荐

  1. Bootstrap datepicker可配置网址

    http://eternicode.github.io/bootstrap-datepicker/?markup=input&format=&weekStart=&startD ...

  2. Java集合中List的用法

    List接口是Collection接口的子接口,List有一个重要的实现类--ArrayList类,List中的元素是有序排列的而且可重复,所以被称为是序列. List可以精确的控制每个元素的插入位置 ...

  3. ACM/ICPC 之 DP-浅谈“排列计数” (POJ1037)

    这一题是最近在看Coursera的<算法与设计>的公开课时看到的一道较难的DP例题,之所以写下来,一方面是因为DP的状态我想了很久才想明白,所以借此记录,另一方面是看到这一题有运用到 排列 ...

  4. SAP系统更改小数点显示问题

    在SAP系统中会出现小数点显示的问题,比如123.12,正常情况下是这样显示,但SAP系统是德国的出的系统,德国的书写数字的习惯是将小数点“.”写成“,”逗号,显示为:123,12 这个问题可以使用事 ...

  5. mysql 删除重复数据保留只保留一条

    SELECT * FROM (SELECT addTime FROM motorcade.car_msg_info GROUP BY addTime HAVING COUNT(addTime) > ...

  6. 【leetcode】Minimum Depth of Binary Tree (easy)

    Given a binary tree, find its minimum depth. The minimum depth is the number of nodes along the shor ...

  7. cocos2d-x 第一篇 环境搭建

    官网:http://www.cocos2d-x.org/ 下载一个稳定版的cocos2d-x (网址:http://download.cocos2d-x.org/ Github Repository ...

  8. JS图表插件(柱形图、饼状图、折线图)

    http://www.open-open.com/lib/view/open1406378625726.html

  9. Hibernate单向一对多对象关系模型映射

    1 hibernate 的对象关系映射 Orm: 类-----表 属性------字段 对象------记录 表:在数据库中存在主外键的关系,反向工厂类是由表生成,在由表生成类的时候,类和类之间存在者 ...

  10. python基础——访问限制

    python基础——访问限制 在Class内部,可以有属性和方法,而外部代码可以通过直接调用实例变量的方法来操作数据,这样,就隐藏了内部的复杂逻辑. 但是,从前面Student类的定义来看,外部代码还 ...