Matlab离散时间傅立叶变换算法

时间:2019-03-30 06:53:11

标签: matlab signal-processing

当前在数字信号处理类中,但需要帮助来重现此代码的结果,而无需在Matlab中使用符号数学,而是使用嵌套的for循环来生成X的值,作为Omega的函数。

Symbolic Solution

到目前为止,我对DTFT使用了各种matlab思想:

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

1 个答案:

答案 0 :(得分:0)

关键是着眼于符号表达的这一部分

%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);

这将为您提供与参考代码子图相同的结果。