idft重建图像 matlab_1周学FFT——第2天 DFT和IDFT的MATLAB实现

article/2025/9/26 21:40:17

根据定义式,可写出DFT的MATLAB代码如下[从玉良,2009,p72]:

function [f, Xk] = mydft(xn, fs, N)

% DFT

n = [0:1:N-1];

k = n;

WN= exp(-j*2*pi/N);

nk = n' * k; % N^2 times multiply

Xk = xn(1:N) * WN.^nk; % N^3 times multiply

f = 0:fs/N:fs/N*(N-1);

% end of function

该函数的使用方法如下:

clear;

fs = 200; % sample frequency

N = 40; % the point of DFT, try to change it.

% compose the input signal

d = 0:(1/fs):1;

xn = sin(2*pi*5*d) + 0.3*sin(2*pi*10*d);

subplot(2,1,1);

stem(d, xn);

title('离散时间序列x(n),(1, 5Hz)和(0.3, 10Hz)叠加,采样频率200Hz');

[f, Xk] = mydft(xn, fs, N);

Xk_amp = abs(Xk)/N*2; % amplitude of Xk, should be divided by N/2

subplot(2,1,2);

stem(f(1:N/2), Xk_amp(1:N/2)); % display only half of N

title('离散频率序列X(k),N=40,\Delta f = fs/N=5Hz,避免栅栏效应')

运行结果为:

a98669e63996

DFT结果

如果预先知道信号的基频及谐波频率的话,可以有针对性的设计fs和N,以避免频率混叠和栅栏效应。

比如上面的例子中信号基频为5Hz,含有2次谐波(10Hz),则可令fs=200,远大于奈奎斯特频率,可避免频率混叠。同时,N=40,则细分频率

math?formula=%5CDelta%20f%20%3D%20%5Cfrac%7Bf_s%7D%7BN%7D%3D5Hz,正好可整除基波及谐波,可避免出现栅栏效应。

如果fs与N选择不合适的话,效果如下:

a98669e63996

频率混叠和栅栏效应

IDFT的MATLAB代码如下:

function [nn, xn] = myidft(Xk, fs, N)

% DFT

n = [0:1:N-1];

k = n;

WN= exp(-j*2*pi/N);

nk = n' * k; % N^2 times multiply

xn = (Xk(1:N) * WN.^(-nk))/N; % N^3 times multiply

nn = 0:1/fs:1/fs*(N-1);

% end of function

该函数的使用方法如下:

%% IDFT

clear;

fs = 200; % sample frequency

N = 40; % the point of DFT, try to change it.

% compose signal

d = 0:(1/fs):1;

xn = sin(2*pi*5*d) + 0.3*sin(2*pi*10*d);

subplot(2,1,1);

stem(d, xn);

title('原始信号序列');

[f, Xk] = mydft(xn, fs, N);

Xk_amp = abs(Xk)/N*2; % amplitude of Xk, should be divided by N/2

[nn, xnn] = myidft(Xk, fs, N);

subplot(2,1,2);

stem([nn, 1/5+nn, 2/5+nn, 3/5+nn, 4/5+nn],[xnn, xnn, xnn, xnn, xnn], 'r');

title('IDFT复原序列(复制5次)');

运行效果如下:

a98669e63996

IDFT运行效果

如果此处刻意的制造栅栏效应(比如令N=100),根据栅栏后的频谱IDFT复原出来的波形与原始波形看起来没有太大区别。

习题:

编写matlab脚本程序,实现DFT和IDFT算法;

利用所编写的程序对信号

math?formula=x(t)%20%3D%20%5Ctext%7Bsin%7D(2%5Cpi%20t)%20%2B%202%5Ctext%7Bsin%7D(4%5Cpi%20t)进行DFT分析,并绘制频谱序列图,注意点数

math?formula=N和采样频率

math?formula=f_s的选择,避免出现频率混叠和栅栏效应;

利用所编写的程序对第2问的频率序列进行IDFT重构,并绘制重构之后的时间序列图。


http://chatgpt.dhexx.cn/article/ISEtjg6k.shtml

相关文章

FT,DTFT,DFT,IDFT,FFT含义

1.傅立叶变换FT(Fourier Transform) 性质:时域连续,频域连续 周期信号只有傅立叶级数,严格意义上讲,没有傅立叶变换;但可以令周期信号的周期趋于无穷大,这样,将周期信号变为非周期信号&#x…

DFT与IDFT

DFT与IDFT 一.方法简介 序列x(n)(n0,1,…N-1)的DFT定义为 X ( k ) ∑ n 0 N − 1 x ( n ) e − j 2 π n k N X(k)\sum_{n0}^{N-1}x(n)e^{-j\frac{2\pi nk}{N}} X(k)n0∑N−1​x(n)e−jN2πnk​ 设 x …

IDFT的python实现

IDFT IDFT(Inverse Discrete Fourier Transform), 傅里叶逆变换,可以将频域信号转换到时域中, 它的公式非常简单: x [ n ] 1 N ∑ k 0 N − 1 X [ k ] e j 2 π k n / N x[n] \frac{1}{N} \sum_{k0}^{N-1} X[k] e^{j2\pi kn/N} x[n]N1​k0∑N−1​X…

一文搞懂:FT、DTFT、DFT、IDFT

一文搞懂:FT、DTFT、DFT、IDFT 写在前面一切为了计算机的处理推导步骤 总结 写在前面 近期重温了一下可爱的数字信号处理,又回想起当初被 FT、DTFT、DFT、IDFT 这几兄弟折腾的傻傻分不清的日子,今天特地在此对它们进行一个梳理。 珠玉在前&a…

LDUOJ spj 修改

特判使用教程 感谢涛巨 记录一下,省的以后忘记了。 /* Utility functions for writing output validators for the Kattis* problem format.** The primary functions and variables available are the following.* In many cases, the only functions needed are …

noip 2022 第二题 喵了个喵 meow 在 Lemon LemonLime 中 SPJ Special Judge 测评 配置 设置

noip 2022 第二题 喵了个喵 meow 在 Lemon LemonLime 中 SPJ Special Judge 测评配置设置 比赛目录如下&#xff1a; 用户程序(meow.cpp)如下&#xff1a; #include <bits/stdc.h> using namespace std;template<typename T> inline void read(T &x) {x 0; …

数据库例题(创建数据库SPJ包含S、P、J和SPJ表)

目录 运行说明 例题 例题解答 运行说明 1、运行环境&#xff1a;win10 2、所需步骤&#xff1a; &#xff08;1&#xff09; 通过PowerDesigner软件创建逻辑数据模型(CDM)&#xff0c;再将其转换为物理数据模型(PDM)&#xff0c;再导出为SQL语句。 &#xff08;2&#xff…

Lemon LemonLime 中 SPJ Special Judge 使用 实践 入门 a

精度需要SPJ 入门&#xff1a; 题目&#xff0c;以整数形式给定圆的半径&#xff0c;输出该圆的周长&#xff0c;该圆的面积。 比赛目录如下&#xff1a; 标准输入输出数据如下&#xff1a; circle1.in 1 circle1.ans 6.283185 3.141593 circle2.in 2 circle2.ans 12.566370 12…

数据库---[复习2]---数据查询---设有一个SPJ数据库,包括S、P、J及SPJ4个关系模式··· ···

文章目录 问题重述数据表S表&#xff1a;P表&#xff1a;J表&#xff1a;SPJ表&#xff1a; 问题解析1. 找出所有供应商的姓名和所在城市2. 找出所有零件的名称&#xff0c;颜色&#xff0c;重量3. 找出使用供应商S1所供应零件的工程号码4. 找出工程项目J2使用的各种零件的名称…

Lemon LemonLime 中 SPJ Special Judge 使用 实践 入门 c

多解需要SPJ 入门&#xff1a; 题目&#xff1a;输出 Hello, World!&#xff0c;大小写不限。 比赛目录如下&#xff1a; 标准输入输出数据如下&#xff1a; string1.in(空文件&#xff0c;里面没有任何内容) string1.ans Hello, World! 用户程序(string.cpp)如下&#xff1a; …

Lemon LemonLime 中 SPJ Special Judge 使用 实践 入门 b

多解需要SPJ 入门&#xff1a; 题目&#xff1a;给出一个不小于12的正整数n&#xff0c;请你输出两个合数&#xff0c;使他们的和等于n,注意&#xff0c;每个测试&#xff0c;有多组测试数据. 比赛目录如下&#xff1a; 标准输入输出数据如下&#xff1a; sum1.in 2 12 13 sum1…

如何配置luogu,codeforces的spj(special judge)

洛谷的spj配置很资瓷啊&#xff0c;以下部分引用来自luogu官方链接 codeforces同理 https://www.luogu.org/wiki/show?name%E5%B8%AE%E5%8A%A9%EF%BC%9Aspecial%20judge 搞了一上午1020导弹拦截的spj step1 先从链接中下载那个testlib-master文件解压后&#xff0c;在那个…

SPJ数据库例题(数据库实验)

题目内容&#xff1a; 设有一个SPJ数据库&#xff0c;包括S&#xff0c;P&#xff0c;J&#xff0c;SPJ四个关系模式&#xff1a; S&#xff08;SNO&#xff0c;SNAME&#xff0c;STATUS&#xff0c;CITY&#xff09;&#xff1b; P&#xff08;PNO&#xff0c;PNAME&#xff0…

mysql建立spj_数据库概论——SQL练习一(SPJ零件问题)

系统: MySQL 8.0.19 题目: 三张表: S(SNO, SNAME, STATUS, CITY) P(PNO, PNAME, COLOR, WEIGHT, CITY) J(JNO, JNAME,CITY) SPJ(SNO, PNO, JNO, PRICE, QTY) S表示供应商,各属性依次为供应商号,供应商名,供应商状态值,供应商所在城市; P表示零件,各属性依次为零件号,…

SPJ数据库例题

1道论述题&#xff1a; 书本P71页习题6&#xff1a; 设有一个SPJ数据库&#xff0c;包括S&#xff0c;P&#xff0c;J&#xff0c;SPJ四个关系模式&#xff1a; S&#xff08;SNO&#xff0c;SNAME&#xff0c;STATUS&#xff0c;CITY&#xff09;&#xff1b; P&#xff08;P…

sql spj

一 select sno,snamevar from student; select sno,snamevar,sdeptvar from student; select * from student; select snamevar,2014-age from student; select snamevar,‘year of birth’,2014-age,lower(sdeptvar) from student; select snamevar from student where …

浅谈online judge平台 spj [special judge] 使用 | 修改问题

浅谈oj平台 spj 使用 | 修改问题 首先&#xff1a;参数对应返回值代码提交几种spj第一种&#xff1a;简单的一类特判第二种&#xff1a;多组输入的特判第三种&#xff1a;需要判断特殊情况[impossible]第四种&#xff1a;带有[testlib.h]的spj第五种&#xff1a;GCPC [German C…

HUSTOJ SPJ 示例

什么是 SPJ SPJ 是 Special Judge 的意思。 什么时候使用 SPJ 当题目答案不止一个的时候&#xff0c;我们就必须使用 SPJ。 如何使用 SPJ 题目中打开 SPJ 首先&#xff0c;我们需要在出题的时候&#xff0c;增加 SPJ 选项&#xff0c;如下图所示。 题目保存后&#xff0…

《数据库原理与运用》上机实验之SPJ

《数据库原理与运用》上机实验之SPJ 前言一、关系模式二、使用SQL语句创建、修改基本表1.对基本表字段名的增加2.对基本表字段名的增加3.索引 二、使用SQL语句对数据库表的单表查询1.对指定列的查询2.对表达式计算和改变表达方式的查询3.消除重复行的查询4.WHERE条件查询5.分组…

SPJ数据库查询

起始 SQL语句建表 建表 后续图示为在SQL Server Management Studio中快捷创建的&#xff0c;并不是代码创建的。 CREATE TABLE S ( SNO CHAR(2) UNIQUE, SNAME CHAR(6), STATUS CHAR(2), CITY CHAR(4));CREATE TABLE J (JNO CHAR(2), JNAME CHAR(8), CITY CHAR(4) ); CREATE …