1. 三角函数基本公式
1.1 函数关系
1.2 诱导公式
1.5-1
1.5-2
1.6-1
知识点参考
1.6-2
(1)代码
clc;clear; N=6; xn=[ones(1,N/3),zeros(1,2*N/3)]; n=0:N-1; Xk=dfs(xn,N)
打印如下
根据
化简如下:
(3)原始谱、幅度谱和相位谱分别如下:
clc;clear; N=6; xn=[ones(1,N/3),zeros(1,2*N/3)]; n=0:N-1; Xk=dfs(xn,N); subplot(1,3,1); stem(n,xn); ylabel ('x1'); xlabel ('n'); %显示序列的图形 subplot(1,3,2); stem(n,abs(Xk)); ylabel ('|X(k)|'); xlabel ('k(θ=2kpi/N)'); %显示序列幅度的图形 subplot(1,3,3); stem(n,angle(Xk)); ylabel ('ang|X(k)|'); xlabel ('k(θ=2kpi/N)'); %显示序列相位的图形
(4)n代入的
原始序列与分解序列是同一序列。
1.6-3-1
图像分别如下:
由图1/2可知,无限长序列在截取后,其频谱会失真,此失真叫截取失真。截取长度越小失真越严重。
由图3/4可知,无限长序列截短后,其频谱会产生失真,此失真叫截取失真。
代码如下:
clc;clear; n=0:0.01:4; x1n=cos(0.5*pi*n); N = size(n,2); Xk = dfs(x1n, N); % stem(n,abs(Xk)); %显示序列的幅度谱 n1 = 0:8; n1 = n1*4/8;%归整到一个周期内 x8n=cos(0.5*pi*n1); x8n1=zeros(1,2048-size(x8n,2)); x8n=[x8n,x8n1]; N1 = size(x8n,2); X8k = dfs(x8n,N1); k8 = 0:N1-1; % stem(k8,abs(X8k)); %显示序列的幅度谱 n2 = 0:32; n2 = n2*4/32; x32n=cos(0.5*pi*n2); x32n1=zeros(1,2048-size(x32n,2)); x32n=[x32n,x32n1]; N2 = size(x32n,2); X32k = dfs(x32n,N2); k32 = 0:N2-1; %plot(2*k32*pi/2048,abs(X32k)); %显示序列的幅度谱 n2 = 0:32; n2 = n2*4/32;%归整到一个周期内 x32n=cos(0.5*pi*n2); N2 = size(x32n,2); X32kt = dfs(x32n,N2); k32t = 0:N2-1; % stem(k8,abs(X8k)); %显示序列的幅度谱 figure(1); subplot(1,4,1);%1*4图形中的第一个 plot(n,abs(Xk)); ylabel ('Xk'); xlabel ('n'); title('原序列的DTFT幅度谱'); subplot(1,4,2); plot(k8*2*pi/2048,abs(X8k)); ylabel ('X8k'); xlabel ('k8'); title('长度为8的DTFT谱'); subplot(1,4,3); plot(k32*2*pi/2048,abs(X32k)); ylabel ('X32k'); xlabel ('k32'); title('长度为32的DTFT谱'); subplot(1,4,4); stem(k32t*2*pi/32,abs(X32kt)); ylabel ('X32k'); xlabel ('k32'); title('长度为32的DFT谱');
1.6-3-2
(1)
代码如下:
clc;clear; n=0:0.01:2*pi; x1n=(-0.2).^n; N = size(n,2); Xk = dfs(x1n, N); figure(1); plot(n,abs(Xk));ylabel ('|Xk|'); xlabel ('n'); title('原序列的DTFT幅度谱'); %显示序列的幅度谱 hold on;
(2)
代码如下:
n1 = 0:32; n1 = n1*2*pi/32; x32n=(-0.2).^n1; N1 = size(x32n,2); X32k = dfs(x32n,N1); k32 = 0:N1-1; %stem(k32,abs(X32k)); %显示序列的幅度谱 n2 = 0:64; n2 = n2*2*pi/64; x64n=(-0.2).^n2; N2 = size(x64n,2); X64k = dfs(x64n,N2); k64 = 0:N2-1; %stem(k64,abs(X64k)); %显示序列的幅度谱 n3 = 0:128; n3 = n3*2*pi/128; x128n=(-0.2).^n3; N3 = size(x128n,2); X128k = dfs(x128n,N3); k128 = 0:N3-1; % stem(k128,abs(X128k)); %显示序列的幅度谱 figure(2); subplot(1,3,1);%2*2图形中的第一个 stem(k32,abs(X32k)); ylabel ('|X32k|'); xlabel ('k32'); title('32序列的DFT幅度谱'); subplot(1,3,2); stem(k64,abs(X64k)); ylabel ('|X64k|'); xlabel ('k64'); title('64序列的DFT幅度谱'); subplot(1,3,3); stem(k128,abs(X128k)); ylabel ('|X128k|'); xlabel ('k128'); title('128序列的DFT幅度谱'); hold on;
(3)
代码如下:
n4 = 0:1024; n4 = n4*2*pi/1024; x1024n=(-0.2).^n4; N4 = size(x1024n,2); tic%开始计时 X1024k = dfs(x1024n,N4); toc,disp(['1024DFT运行时间: ',num2str(toc)]);%结束计时,打印消耗时间 tic%开始计时 X1024kf = fft(x1024n,N4); toc,disp(['1024FFT运行时间: ',num2str(toc)]);%结束计时,打印消耗时间 k1024 = 0:N4-1; figure(3); subplot(1,2,1);%2*1图形中的第一个 stem(k1024,abs(X1024k)); ylabel ('|X1024k|'); xlabel ('k1024'); title('1024序列的DFT幅度谱'); subplot(1,2,2); stem(k1024,abs(X1024kf)); ylabel ('|X1024kf|'); xlabel ('k1024'); title('1024序列的DFT幅度谱');
打印计算时间:
快速傅里叶变换计算时间更短,值得使用!
1.7-3-1
(1)
其极点为 z=\frac{1}{8},则有
幅度谱:
代码:
clc;clear; n=-pi:0.01:pi; y=(exp(j*n)-7/8)./(exp(j*n)-1/8); figure(1); plot(n,abs(y));ylabel ('|H(e^{j\theta}|'); xlabel ('\theta'); title('幅度谱'); grid on;
(2)该滤波器的角频率为 0附近的增益为零,而在角频率为π的增益最大,
该滤波器滤去低频序列,保留高频序列。
(3)
代码:
syms n f=(exp(1i*n)-7/8)./(exp(1i*n)-1/8); disp(vpa(abs(subs(f,'n',0))));disp(vpa(angle(subs(f,'n',0)*180/pi))); disp(vpa(abs(subs(f,'n',pi/2))));disp(vpa(angle(subs(f,'n',pi/2))*180/pi)); disp(vpa(abs(subs(f,'n',pi))));disp(vpa(angle(subs(f,'n',pi))*180/pi));
1.7-3-2
系统为 FIR滤波器,该滤波器为低通滤波器(LPF)
图像:
代码:
clc; clear; n = -pi:0.01:pi; y1 = 1-3*exp(-1i*n)+3*exp(-2*1i*n)-exp(-3*1i*n); y2 = 1+3*exp(-1i*n)+3*exp(-2*1i*n)+exp(-3*1i*n); figure(1) subplot(1,2,1); plot(n,abs(y1));ylabel ('|H_1(e^{j\theta})|'); xlabel ('\theta'); title('幅度谱');grid on; subplot(1,2,2); plot(n,abs(y2));ylabel ('|H_2(e^{j\theta})|'); xlabel ('\theta'); title('幅度谱');grid on;
1.7-3-3
系统为高通滤波器。
图像
代码
clc; clear; n = -pi:0.001:pi; y1 = exp(1i*n)./(exp(1i*n)-0.3); y2 = exp(1i*n)./(exp(1i*n)+0.3); figure(1) subplot(1,2,1); plot(n,abs(y1));ylabel ('|H_1(e^{j\theta})|'); xlabel ('\theta'); title('幅度谱');grid on; subplot(1,2,2); plot(n,abs(y2));ylabel ('|H_2(e^{j\theta})|'); xlabel ('\theta'); title('幅度谱');grid on;