Custom DFT function for even and odd samples

8 次查看(过去 30 天)
I'm trying to create a custom DFT function using circshift for even and odd samples but the odd part is not working. I appreciate if someone can help.
function X_k = my_DFT(x,N)
L = length(x);
if N < L
error(' N < L')
elseif N > L
xn = zeros(1,N); %zero padding
xn(1:L) = x;
else % N == L
xn = x;
end
if rem(N, 2) == 0
n = 0 : N-1;
k = 0 : N-1;
CoefMatrix = exp(1i * (2*pi/N) * k' * n);
X_k = CoefMatrix * xn';
X_k = circshift(X_k',N/2);
else
n = 0 : N-1;
k = 0 : N-1;
CoefMatrix = exp(1i * (2*pi/N) * k' * n);
X_k = CoefMatrix * xn';
X_k = circshift(X_k',N/2 + 1); %?
end
end

回答(1 个)

Nadia Shaik
Nadia Shaik 2022-2-3
Hello,
It is my understanding that you are trying to create a custom DFT function for even and odd samples of the input using circshift function.
You may refer to the below mentioned code example:
function X_k = my_DFT(x,N)
L = length(x);
if N < L
error(' N < L')
elseif N > L
xn = zeros(1,N); %zero padding
xn(1:L) = x;
else % N == L
xn = x;
end
if rem(L, 2) == 0
n = 0 : N-1;
k = 0 : N-1;
CoefMatrix = exp(1i * (2*pi/N) * k' * n);
X_k = CoefMatrix * xn';
X_k = [X_k(1) circshift(X_k(2:end)',N-1)];
else
n = 0 : N-1;
k = 0 : N-1;
CoefMatrix = exp(1i * (2*pi/N) * k' * n);
X_k = CoefMatrix * xn';
X_k = circshift(X_k',N); %?
end
end
I hope it helps you.

类别

Help CenterFile Exchange 中查找有关 Matched Filter and Ambiguity Function 的更多信息

产品


版本

R2018a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by