Алгоритм преобразования Фурье с дискретным временем Matlab - PullRequest
0 голосов
/ 30 марта 2019

В настоящее время в классе цифровой обработки сигналов, но требуется помощь в воспроизведении результатов этого кода без использования математической математики в Matlab, а с использованием вложенных циклов for для генерации значений X как функции от омеги.

Символическое решение

Это то, что я имею до сих пор, используя различные идеи 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

1 Ответ

0 голосов
/ 06 апреля 2019

Ключ должен сосредоточиться на этой части символического выражения

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

Поскольку я знаю, что мы ищем сумму всех 8 функций для n = 1: 8, я могу добиться этого в одной строке кода, как здесь

X = X + f2;

где здесь функции содержатся в векторе f2,

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

В результате вы получите тот же результат, что и субплот для ссылочного кода.

...