MATLAB实现:时域和频域采样定理的仿真分析
Tp = 64 / 1000;
Fs = 1000;
T = 1 / Fs;
M = round(Tp * Fs);
n = 0:M-1;
A = 444.128;
alph = pi * 50 * 2^0.5;
omega = pi * 50 * 2^0.5;
xnt = A * exp(-alph * n * T) .* sin(omega * n * T);
Xk = T * fft(xnt, M);
yn = 'xa(nT)';
figure('Name', 'Fs = 1000Hz');
subplot(3, 2, 1);
tstem(xnt, yn);
box on;
title('Fs = 1000Hz');
k = 0:M-1;
fk = k / Tp;
subplot(3, 2, 2);
plot(fk, abs(Xk));
title('T*FT[xa(nT)], Fs = 1000Hz');
xlabel('f(Hz)');
ylabel('Amplitude');
axis([0, Fs, 0, 1.2 * max(abs(Xk))]);
Fs = 300;
T = 1 / Fs;
M = round(Tp * Fs);
n = 0:M-1;
xnt = A * exp(-alph * n * T) .* sin(omega * n * T);
Xk = T * fft(xnt, M);
yn = 'xa(nT)';
figure('Name', 'Fs = 300Hz');
subplot(3, 2, 1);
tstem(xnt, yn);
box on;
title('Fs = 300Hz');
k = 0:M-1;
fk = k / Tp;
subplot(3, 2, 2);
plot(fk, abs(Xk));
title('T*FT[xa(nT)], Fs = 300Hz');
xlabel('f(Hz)');
ylabel('Amplitude');
axis([0, Fs, 0, 1.2 * max(abs(Xk))]);
Fs = 200;
T = 1 / Fs;
M = round(Tp * Fs);
n = 0:M-1;
xnt = A * exp(-alph * n * T) .* sin(omega * n * T);
Xk = T * fft(xnt, M);
yn = 'xa(nT)';
figure('Name', 'Fs = 200Hz');
subplot(3, 2, 1);
tstem(xnt, yn);
box on;
title('Fs = 200Hz');
k = 0:M-1;
fk = k / Tp;
subplot(3, 2, 2);
plot(fk, abs(Xk));
title('T*FT[xa(nT)], Fs = 200Hz');
xlabel('f(Hz)');
ylabel('Amplitude');
axis([0, Fs, 0, 1.2 * max(abs(Xk))]);
M = 27;
N = 32;
n = 0:M;
xa = 0:floor(M/2);
xb = ceil(M/2)-1:-1:0;
xn = [xa, xb];
Xk = fft(xn, 1024);
X32k = fft(xn, 32);
x32n = ifft(X32k);
X16k = X32k(1:2:N);
x16n = ifft(X16k, N/2);
figure('Name', '2 频域采样理论的验证');
subplot(3, 2, 1);
tstem(xn, 'x(n)');
title('三角波序列 x(n)');
k = 0:1023;
wk = 2 * k / 1024;
subplot(3, 2, 2);
plot(wk, abs(Xk));
title('FT[x(n)]');
xlabel('\omega / \pi');
ylabel('|X(e^{j\omega})|');
k = 0:N/2-1;
subplot(3, 2, 3);
tstem(abs(X16k), '|X_{16}(k)|');
title('16 点频域采样');
xlabel('k');
ylabel('|X_{16}(k)|');
subplot(3, 2, 4);
tstem(x16n, 'x_{16}(n)');
title('16 点 IDFT[X_{16}(k)]');
xlabel('n');
ylabel('x_{16}(n)');
k = 0:N-1;
subplot(3, 2, 5);
tstem(abs(X32k), '|X_{32}(k)|');
title('32 点频域采样');
xlabel('k');
ylabel('|X_{32}(k)|');
subplot(3, 2, 6);
tstem(x32n, 'x_{32}(n)');
title('32 点 IDFT[X_{32}(k)]');
xlabel('n');
ylabel('x_{32}(n)');
function tstem(xn, yn)
n = 0:length(xn)-1;
stem(n, xn, '.');
xlabel('n');
ylabel(yn);
axis([0, n(end), min(xn), 1.2 * max(xn)]);
end
原文地址: https://www.cveoy.top/t/topic/dcSR 著作权归作者所有。请勿转载和采集!