1、从别的地方找的证明过程:
2、代码
function x2 = circfold(x1, N) %% Circular folding using DFT %% --------------------------------------------- %% x2 = circfold(x1, N) %% x2 = circulary folded output sequence %% x1 = input sequence of length <= N %% N = circular buffer length %% X1k_DFT = dft(x1, N); Xk = dft(X1k_DFT, N); x2 = Xk/N;
%% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ %% Output Info about this m-file fprintf(' *********************************************************** '); fprintf(' <DSP using MATLAB> Problem 5.12 '); banner(); %% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ % -------------------------------------------------------------- % 1 x(n) = [1, 3, 5, 7, 9, -7, -5, -3, -1] % -------------------------------------------------------------- xx1 = [1, 3, 5, 7, 9, -7, -5, -3, -1]; NN1 = length(xx1); % length is 6 nn1 = [0 : NN1-1]; % ---------------------------------------------------- % 1st way to get Circulary folded % ---------------------------------------------------- xx1_cf = xx1( mod(-nn1, NN1)+1 ); figure('NumberTitle', 'off', 'Name', 'P5.12 x(n)') set(gcf,'Color','white'); subplot(2,1,1); stem(nn1, xx1); xlabel('n'); ylabel('x(n)'); title('x(n) ori sequence'); grid on; subplot(2,1,2); stem(nn1, xx1_cf); xlabel('n'); ylabel('x(n)'); title('x((-n))_N Circulary folded by mod way'); grid on; % ------------------------------------------------------ % 2nd way to get Circulary folded % DFT % ------------------------------------------------------ xx2 = circfold(xx1, NN1); figure('NumberTitle', 'off', 'Name', 'P5.12 x(n)') set(gcf,'Color','white'); subplot(2,1,1); stem(nn1, xx1); xlabel('n'); ylabel('x(n)'); title('x(n) ori sequence'); grid on; subplot(2,1,2); stem(nn1, xx2); xlabel('n'); ylabel('x(n)'); title('x((-n))_N Circulary folded by DFT way'); grid on;
运行结果: