Custom DFT function for even and odd samples
7 ビュー (過去 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
2 件のコメント
Mohammed Samir
2021 年 4 月 20 日
l=length(x);
if(l<N)
x=[x zeros(1,(N-1))];
else if(l>=N)
x=[x(1:N)];
end
回答 (1 件)
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.
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Bartlett についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!