离散傅里叶变换

离散傅里叶变换

{ X ~ ( k ) = DFS [ x ~ ( n ) ] = ∑ n = 0 N − 1 x ~ ( n ) e − j 2 π N k n k = 0 , 1 , . . . , N − 1 x ~ ( n ) = IDFS [ X ~ ( k ) ] = 1 N ∑ n = 0 N − 1 X ~ ( k ) e j 2 π N k n n = 0 , 1 , . . . , N − 1 \begin{cases} \tilde{X}(k)=\textbf{DFS}[\tilde{x}(n)]=\sum\limits_{n=0}^{N-1}\tilde{x}(n)e^{-j\frac{2\pi}{N}kn}\quad k=0,1,...,N-1 \\ \tilde{x}(n)=\textbf{IDFS}[\tilde{X}(k)]=\frac{1}{N}\sum\limits_{n=0}^{N-1}\tilde{X}(k)e^{j\frac{2\pi}{N}kn}\quad n=0,1,...,N-1 \end{cases} X~(k)=DFS[x~(n)]=n=0N1x~(n)ejN2πknk=0,1,...,N1x~(n)=IDFS[X~(k)]=N1n=0N1X~(k)ejN2πknn=0,1,...,N1

自定义dfs()

function [Xk] = dfs(xn)
    % 离散傅里叶级数变换
    % Xk:离散傅里叶级数
    % xn:待变换序列
    % N:序列变换长度
    N = length(xn);
    n = 0:N-1;
    k = 0:N-1;
    nk = n'*k;
    Wn = exp(-1j*2*pi/N);
    Xk = xn*Wn.^nk;
end

自定义idfs()

function [xn] = idfs(Xk)
    % 离散傅里叶级数逆变换
    % Xk:离散傅里叶级数
    % xn:待变换序列
    % N:序列变换长度
    N = length(Xk);
    n = 0:N-1;
    k = 0:N-1;
    Wn = exp(1j*2*pi/N);
    nk = n'*k;
    xn = (Xk*Wn.^nk)/N;
end

例子:

clear;
xn = [7, 5, 6, 4, 3, 2];
N =length(xn);
n = 0:N-1;
k = 0:N-1;
Xk = dfs(xn);
xn_return = idfs(Xk);

figure('color', 'w');
subplot(221)
stem(n,xn, 'filled');
title('原始序列 xn');
subplot(222)
stem(n,abs(xn_return), 'filled');
title('逆变换后的序列 xn\_return');
subplot(223)
stem(k,abs(Xk), 'filled');
title('离散傅里叶级数 |Xk|');
subplot(224)
stem(k,angle(Xk), 'filled');
title('离散傅里叶级数 ∠Xk');
  • 9
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

暮光启行

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值