📄 exa2_7.m
字号:
% exa2-7_conjugate_symmetry.m, for example 2-7
% to test conjugate_symmetry.m
clear;
%Part 1:绘制奇偶分量曲线
figure(1);
n=0:10;
x=10*((0.8).^n); %X(n)序列
[xec,xoc]=circevod(x); %产生偶、奇分量
subplot(2,1,1);
stem(n,xec);
title('偶分量'); %绘出偶分量
xlabel('n');
ylabel('Xec(n)');
axis([-0.5,10.5,-1,11]);
subplot(2,1,2);
stem(n,xoc);
title('奇分量'); %绘出奇分量
xlabel('n');
ylabel('Xoc(n)');
axis([-0.5,10.5,-4,4]);
%Part 2:验证实序列性质
figure(2); %分别进行DFT变换,得到X(k),Xec(k),Xeo(k)并绘图
X=dft(x,11);
Xec=dft(xec,11);
Xoc=dft(xoc,11);
subplot(2,2,1);
stem(n,real(X));
title('DFT[X(n)]实部');
xlabel('k');
axis([-0.5,10.5,-5,50]); %绘出DFT[X(n)]的实部
subplot(2,2,2);
stem(n,imag(X));
title('DFT[X(n)]虚部');
xlabel('k');
axis([-0.5,10.5,-20,20]); %绘出DFT[X(n)]的虚部
subplot(2,2,3);
stem(n,real(Xec));
title('DFT[偶分量]');
xlabel('k');
axis([-0.5,10.5,-5,50]); %绘出DFT[Xec(n)]
subplot(2,2,4);
stem(n,imag(Xoc));
title('DFT[Xoc(n)]');
xlabel('k');
axis([-0.5,10.5,-20,20]); %绘出DFT[奇分量]
function[xec,xoc]=circevod(x)
%序列分解为奇、偶分量之和;Usage: [xec,xoc]=circevod(x)
if any(image(x)==0)
error('x is not a real sequence')
end
N=length(x);
n=0:(N-1);
xec=0.5*(x+x(mod(-n,N)+1));
xoc=0.5*(x-x(mod(-n,N)+1)); %偶、奇分量
function[Xk]=dft(xn,N)
%计算离散傅立叶变换DFT;Usage: [Xk]=dft(xn,N)
n=0:(N-1);
k=0:(N-1);
WN=exp(-j*2*pi/N); %Wn参数
nk=n'*k;
WNnk=WN.^nk;
Xk=xn*WNnk; %利用DFT矩阵实现DFT变换
% exa2-8_fft_ifft.m for example 2-8
% to test fft.m and ifft.m
clear all;
% 产生两个正弦加白噪声;
N=256;
f1=.1;
f2=.2;
fs=1;
a1=5;a2=3;
w=2*pi/fs;
x=a1*sin(w*f1*(0:N-1))+a2*sin(w*f2*(0:N-1))+randn(1,N);
% 应用FFT 求频谱;
subplot(3,1,1);
plot(x(1:N/4));
ylabel('原始信号')
f=-0.5:1/N:0.5-1/N;
X=fft(x);
subplot(3,1,2);
plot(f,fftshift(abs(X)));
ylabel('FFT频谱')
% 应用IFFT 求原信号;
y=ifft(X);
subplot(3,1,3);
plot(real(x(1:N/4)));
ylabel('IFFT信号')
% exa2-8_fft_ifft.m for example 2-8
% to test fft.m and ifft.m
clear all;
% 产生两个正弦加白噪声;
N=256;
f1=.1;
f2=.2;
fs=1;
a1=5;a2=3;
w=2*pi/fs;
x=a1*sin(w*f1*(0:N-1))+a2*sin(w*f2*(0:N-1))+randn(1,N);
% 应用FFT 求频谱;
subplot(3,1,1);
plot(x(1:N/4));
ylabel('原始信号')
f=-0.5:1/N:0.5-1/N;
X=fft(x);
subplot(3,1,2);
plot(f,fftshift(abs(X)));
ylabel('FFT频谱')
% 应用IFFT 求原信号;
y=ifft(X);
subplot(3,1,3);
plot(real(x(1:N/4)));
ylabel('IFFT信号')
% exa2-8_fft_ifft.m for example 2-8
% to test fft.m and ifft.m
clear all;
% 产生两个正弦加白噪声;
N=256;
f1=.1;
f2=.2;
fs=1;
a1=5;a2=3;
w=2*pi/fs;
x=a1*sin(w*f1*(0:N-1))+a2*sin(w*f2*(0:N-1))+randn(1,N);
% 应用FFT 求频谱;
subplot(3,1,1);
plot(x(1:N/4));
ylabel('原始信号')
f=-0.5:1/N:0.5-1/N;
X=fft(x);
subplot(3,1,2);
plot(f,fftshift(abs(X)));
ylabel('FFT频谱')
% 应用IFFT 求原信号;
y=ifft(X);
subplot(3,1,3);
plot(real(x(1:N/4)));
ylabel('IFFT信号')
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -