【问题标题】:Matlab Discrete Time Fourier Transform AlgorithmMatlab离散时间傅里叶变换算法
【发布时间】:2019-03-30 06:53:10
【问题描述】:

目前在数字信号处理课程中,但需要帮助在不使用 Matlab 中的符号数学的情况下重现此代码的结果,而是使用嵌套的 for 循环来生成 X 的值作为 omega 的函数。

Symbolic Solution

这是我目前所拥有的,使用各种 matlab 的 DTFT 想法:

N=8;
figure
upper = pi;
lower = -pi;
bw = 1000;

omega = linspace(-pi,pi,1000);

for k=0:bw
    for n=0:N-1
         Y = X(k+1) + x(n+1)*exp(-j*2*pi*n*k/N) ;
    end
end

【问题讨论】:

  • 请描述您需要帮助的问题。你看到了什么结果,你期望的结果是什么?知道为什么这两组结果可能不同吗?

标签: matlab signal-processing


【解决方案1】:

关键是关注这部分符号表达

%X is the sum of all 8 functions 0 to 7
X = f2(1) + f2(2) + f2(3) + f2(4) + f2(5) + f2(6) + f2(7) + f2(8)

并尝试从中编写自己的代码。


clear; clc;
figure

upper = pi
lower = -pi
bw = 1000

%w is in 1x1000
w =linspace(lower, upper, bw)

N=8

X=zeros(1, 1000)

for k=0:N

    f2=exp(-j*w*k);

    X = X + f2;

end

f4=X

subplot(2,1,1)

plot(linspace(lower, upper, bw), abs(f4), 'b');

因为我知道我们正在寻找 n=1:8 的所有 8 个函数的总和,所以我可以在一行代码中实现,如下所示

X = X + f2;

这里,函数包含在向量 f2 中,

f2=exp(-j*w*k);

这会得到与参考代码的子图相同的结果。

【讨论】:

    猜你喜欢
    • 2018-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多